МАОН первой серии
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
4.7KB

  1. const РАССТОЯНИЕ = 40;
  2. const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5;
  3. var ТЕМА = "";//"https://git.opengamestudio.org/MAOH/TEMA_M1K/raw/branch/master/0000";
  4. var ФИШКА = "";//"/TileHigh.gltf";
  5. var РАСКЛАДКИ = "";//"https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000";
  6. var РАСКЛАДКА = "";//"/X_shaped.layout";
  7. // // // //
  8. ПроверитьОкна = мир =>
  9. {
  10. var окно = создатьОкноСОтступами("пример");
  11. окно.плавно.отобразить();
  12. };
  13. // // // //
  14. ВывестиПоражение = мир =>
  15. {
  16. console.debug("ПОРАЖЕНИЕ");
  17. };
  18. // // // //
  19. ВывестиПобеду = мир =>
  20. {
  21. console.debug("ПОБЕДА");
  22. };
  23. // // // //
  24. ЗадатьФишкуДляВыбора = мир =>
  25. {
  26. var номер = мир.выбранныйУзел.userData;
  27. мир.фишкаМаджонгаДляВыбора = номер;
  28. }
  29. // // // //
  30. ПодготовитьФишкиКВыбору = мир =>
  31. {
  32. мир.выборныеУзлы = мир.фишкиСцены;
  33. };
  34. // // // //
  35. ПодготовитьсяКСозданиюФишек = мир =>
  36. {
  37. РАСКЛАДКИ = мир.реестрМаджонга["📍"][0]["📦"];
  38. РАСКЛАДКА = мир.реестрМаджонга["📍"][0]["📁"][0];
  39. var м = мир.модули.модульПоУказателю(РАСКЛАДКИ);
  40. var содержимое = м.содержимое[РАСКЛАДКА];
  41. var позиции = разобратьРаскладкуKMahjongg(содержимое);
  42. var фишки = [];
  43. var группа = 0;
  44. for (var номер in позиции)
  45. {
  46. var п = позиции[номер];
  47. фишки.push({
  48. "📍": [п[0], п[1], п[2]],
  49. "🚩": группа,
  50. });
  51. if (номер % 2)
  52. {
  53. ++группа;
  54. if (группа > 41)
  55. {
  56. группа = 0;
  57. }
  58. }
  59. };
  60. мир.фишкиМаджонга = фишки;
  61. мир.модельФишкиСцены = мир.полигональныеСетки[ТЕМА][ФИШКА];
  62. мир.сцена.add(мир.сценаМаджонга);
  63. };
  64. // // // //
  65. СоздатьПримерСцены = мир =>
  66. {
  67. мир.сцена.background = new THREE.Color(0xFFFFFF);
  68. мир.камера.position.y = РАССТОЯНИЕ * КОЭФФИЦИЕНТ_ВЫСОТЫ;
  69. мир.камера.position.z = РАССТОЯНИЕ;
  70. мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
  71. мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
  72. мир.свет.position.set(-0.5, 1, 0.5).normalize();
  73. мир.сцена.add(мир.свет);
  74. };
  75. // // // //
  76. СоздатьМатериалыФишек = мир =>
  77. {
  78. мир.материалыФишекСцены = [];
  79. мир.выбранныеМатериалыФишекСцены = [];
  80. var текстуры = мир.текстуры[ТЕМА];
  81. for (var имя in текстуры)
  82. {
  83. var текстура = текстуры[имя];
  84. var материал = new THREE.MeshLambertMaterial({
  85. map: текстура,
  86. color: new THREE.Color(0xCCCCCC),
  87. });
  88. мир.материалыФишекСцены.push(материал);
  89. var выбранныйМатериал = new THREE.MeshLambertMaterial({
  90. map: текстура,
  91. color: new THREE.Color(0xFFFFFF),
  92. });
  93. мир.выбранныеМатериалыФишекСцены.push(выбранныйМатериал);
  94. }
  95. };
  96. // // // //
  97. ПодготовитьсяКЗагрузкеРесурсов = мир =>
  98. {
  99. // Выбираем первую тему и первую фишку из доступных.
  100. ТЕМА = мир.реестрМаджонга["🀄"][0]["📦"];
  101. ФИШКА = мир.реестрМаджонга["🀄"][0]["📁"][42];
  102. мир.полигональныеСетки = {
  103. [ТЕМА]: {
  104. [ФИШКА]: null,
  105. },
  106. };
  107. мир.текстуры = {
  108. [ТЕМА]: { },
  109. };
  110. var м = мир.модули.модульПоУказателю(ТЕМА);
  111. var файлы = Object.keys(м.структура).sort();
  112. for (var номер in файлы)
  113. {
  114. var файл = файлы[номер];
  115. мир.текстуры[ТЕМА][файл] = null;
  116. }
  117. };
  118. // // // //
  119. ПлавноУбратьСтраницуЗагрузкиИСкрытьКрутилку = мир =>
  120. {
  121. плавноСкрытьИУдалить("экран-загрузки", { "задержка": 0.4 });
  122. плавноСкрыть("крутилка", { "задержка": 0.4 });
  123. };