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

240 lines
7.2KB

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