МАОН первой серии
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.

228 lines
6.9KB

  1. const РАССТОЯНИЕ = 40;
  2. const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5;
  3. // ?? // ??
  4. ОтладитьСменуНастроекПриНажатии = мир =>
  5. {
  6. if (мир.позицияНажатияВРисователе.x < 0.9)
  7. {
  8. return;
  9. }
  10. var н = 0;
  11. var нн = 1;
  12. // Переключаем тему и раскладку.
  13. if (мир.настройкиМаджонга["🀄/📦"] == мир.реестрМаджонга["🀄"][0]["📦"])
  14. {
  15. н = 1;
  16. нн = 0;
  17. }
  18. мир.настройкиМаджонга = {
  19. "🀄/📦": мир.реестрМаджонга["🀄"][н]["📦"],
  20. "🀄/📁": мир.реестрМаджонга["🀄"][н]["📁"][42],
  21. "📍/📦": мир.реестрМаджонга["📍"][нн]["📦"],
  22. "📍/📁": мир.реестрМаджонга["📍"][нн]["📁"][0],
  23. }
  24. мир.уведомить("изменили настройки маджонга");
  25. };
  26. // // // //
  27. ПроверитьОкна = мир =>
  28. {
  29. var окно = создатьОкноСОтступами("пример");
  30. окно.плавно.отобразить();
  31. };
  32. // // // //
  33. ВывестиПоражение = мир =>
  34. {
  35. console.debug("ПОРАЖЕНИЕ");
  36. };
  37. // // // //
  38. ВывестиПобеду = мир =>
  39. {
  40. console.debug("ПОБЕДА");
  41. };
  42. // // // //
  43. ЗадатьФишкуДляВыбора = мир =>
  44. {
  45. var номер = мир.выбранныйУзел.userData;
  46. мир.фишкаМаджонгаДляВыбора = номер;
  47. }
  48. // // // //
  49. ПодготовитьФишкиКВыбору = мир =>
  50. {
  51. мир.выборныеУзлы = мир.фишкиСцены;
  52. };
  53. // // // //
  54. ПодготовитьсяКСозданиюФишек = мир =>
  55. {
  56. var настройки = мир.настройкиМаджонга;
  57. var м = мир.модули.модульПоУказателю(настройки["📍/📦"]);
  58. var содержимое = м.содержимое[настройки["📍/📁"]];
  59. var позиции = разобратьРаскладкуKMahjongg(содержимое);
  60. var фишки = [];
  61. var группа = 0;
  62. for (var номер in позиции)
  63. {
  64. var п = позиции[номер];
  65. фишки.push({
  66. "📍": [п[0], п[1], п[2]],
  67. "🚩": группа,
  68. });
  69. if (номер % 2)
  70. {
  71. ++группа;
  72. if (группа > 41)
  73. {
  74. группа = 0;
  75. }
  76. }
  77. };
  78. мир.фишкиМаджонга = фишки;
  79. мир.модельФишкиСцены = мир.полигональныеСетки[настройки["🀄/📦"]][настройки["🀄/📁"]];
  80. мир.сцена.add(мир.сценаМаджонга);
  81. };
  82. // // // //
  83. СоздатьМатериалыФишек = мир =>
  84. {
  85. var настройки = мир.настройкиМаджонга;
  86. мир.материалыФишекСцены = [];
  87. мир.выбранныеМатериалыФишекСцены = [];
  88. var текстуры = мир.текстуры[настройки["🀄/📦"]];
  89. for (var имя in текстуры)
  90. {
  91. var текстура = текстуры[имя];
  92. var материал = new THREE.MeshLambertMaterial({
  93. map: текстура,
  94. color: new THREE.Color(0xCCCCCC),
  95. });
  96. мир.материалыФишекСцены.push(материал);
  97. var выбранныйМатериал = new THREE.MeshLambertMaterial({
  98. map: текстура,
  99. color: new THREE.Color(0xFFFFFF),
  100. });
  101. мир.выбранныеМатериалыФишекСцены.push(выбранныйМатериал);
  102. }
  103. };
  104. // // // //
  105. ПодготовитьсяКЗагрузкеРесурсов = мир =>
  106. {
  107. var настройки = мир.настройкиМаджонга;
  108. мир.полигональныеСетки = {
  109. [настройки["🀄/📦"]]: {
  110. [настройки["🀄/📁"]]: null,
  111. },
  112. };
  113. мир.текстуры = {
  114. [настройки["🀄/📦"]]: { },
  115. };
  116. var м = мир.модули.модульПоУказателю(настройки["🀄/📦"]);
  117. var файлы = Object.keys(м.структура).sort();
  118. var колво = 42;
  119. for (var номер = 0; номер < колво; ++номер)
  120. {
  121. var файл = файлы[номер];
  122. мир.текстуры[настройки["🀄/📦"]][файл] = null;
  123. }
  124. };
  125. // // // //
  126. ЗагрузитьМодулиРесурсов = мир =>
  127. {
  128. var настройки = мир.настройкиМаджонга;
  129. var указатели = [
  130. настройки["🀄/📦"],
  131. настройки["📍/📦"],
  132. ];
  133. var сообщение = "Загрузка модулей ресурсов ⚬ 加载资源模块 ⚬ Loading resource modules";
  134. console.debug(сообщение, указатели);
  135. мир.модули.использовали.подписатьРаз(function() {
  136. мир.уведомить("загрузили модули ресурсов");
  137. });
  138. мир.модули.использовать(указатели);
  139. };
  140. // // // //
  141. ЗадатьНастройкиМаджонга = мир =>
  142. {
  143. // Выбираем первую тему, фишку, раскладку из доступных.
  144. мир.настройкиМаджонга = {
  145. "🀄/📦": мир.реестрМаджонга["🀄"][0]["📦"],
  146. "🀄/📁": мир.реестрМаджонга["🀄"][0]["📁"][42],
  147. "📍/📦": мир.реестрМаджонга["📍"][0]["📦"],
  148. "📍/📁": мир.реестрМаджонга["📍"][0]["📁"][0],
  149. }
  150. мир.уведомить("изменили настройки маджонга");
  151. };
  152. // // // //
  153. СоздатьПримерСцены = мир =>
  154. {
  155. мир.сцена.background = new THREE.Color(0xFFFFFF);
  156. мир.камера.position.y = РАССТОЯНИЕ * КОЭФФИЦИЕНТ_ВЫСОТЫ;
  157. мир.камера.position.z = РАССТОЯНИЕ;
  158. мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
  159. мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
  160. мир.свет.position.set(-0.5, 1, 0.5).normalize();
  161. мир.сцена.add(мир.свет);
  162. };
  163. // // // //
  164. ПлавноУбратьСтраницуЗагрузкиИСкрытьКрутилку = мир =>
  165. {
  166. плавноСкрытьИУдалить("экран-загрузки", { "задержка": 0.4 });
  167. плавноСкрыть("крутилка", { "задержка": 0.4 });
  168. };