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

254 lines
7.7KB

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