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

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