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

244 lines
7.3KB

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