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

172 lines
4.8KB

  1. const РАССТОЯНИЕ = 40;
  2. const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5;
  3. //const ФИШКИ = "https://git.opengamestudio.org/PuCOBATEJlb/PECYPCbl/raw/branch/master/0000";
  4. //const ФИШКА = "/фишка.gltf";
  5. const ФИШКИ = "https://git.opengamestudio.org/MAOH/MAOH_KA_M1/raw/branch/master/0000";
  6. const ФИШКА = "/TileHigh.gltf";
  7. //const ТЕМА = "https://git.opengamestudio.org/MAOH/MAOH_TEMA_OTAK/raw/branch/master/0000";
  8. const ТЕМА = "https://git.opengamestudio.org/MAOH/MAOH_TEMA_M1_KACC/raw/branch/master/0000";
  9. const РАСКЛАДКИ = "https://git.opengamestudio.org/MAOH/MAOH_PACK_OTAK/raw/branch/master/0000";
  10. //const РАСКЛАДКА = "/😀.layout";
  11. //const РАСКЛАДКА = "/😭.layout";
  12. const РАСКЛАДКА = "/X_shaped.layout";
  13. // // // //
  14. ПроверитьОкна = мир =>
  15. {
  16. var окно = создатьОкноСОтступами("пример");
  17. окно.плавно.отобразить();
  18. };
  19. // // // //
  20. ВывестиПоражение = мир =>
  21. {
  22. console.debug("ПОРАЖЕНИЕ");
  23. };
  24. // // // //
  25. ВывестиПобеду = мир =>
  26. {
  27. console.debug("ПОБЕДА");
  28. };
  29. // // // //
  30. ЗадатьФишкуДляВыбора = мир =>
  31. {
  32. var номер = мир.выбранныйУзел.userData;
  33. мир.фишкаМаджонгаДляВыбора = номер;
  34. }
  35. // // // //
  36. ПодготовитьФишкиКВыбору = мир =>
  37. {
  38. мир.выборныеУзлы = мир.фишкиСцены;
  39. };
  40. // // // //
  41. ПодготовитьсяКСозданиюФишек = мир =>
  42. {
  43. var м = мир.модули.модульПоУказателю(РАСКЛАДКИ);
  44. var содержимое = м.содержимое[РАСКЛАДКА];
  45. var позиции = разобратьРаскладкуKMahjongg(содержимое);
  46. var фишки = [];
  47. var группа = 0;
  48. for (var номер in позиции)
  49. {
  50. var п = позиции[номер];
  51. фишки.push({
  52. "📍": [п[0], п[1], п[2]],
  53. "🚩": группа,
  54. });
  55. if (номер % 2)
  56. {
  57. ++группа;
  58. if (группа > 41)
  59. {
  60. группа = 0;
  61. }
  62. }
  63. };
  64. мир.фишкиМаджонга = фишки;
  65. мир.модельФишкиСцены = мир.полигональныеСетки[ФИШКИ][ФИШКА];
  66. мир.сцена.add(мир.сценаМаджонга);
  67. };
  68. // // // //
  69. СоздатьПримерСцены = мир =>
  70. {
  71. мир.сцена.background = new THREE.Color(0xFFFFFF);
  72. мир.камера.position.y = РАССТОЯНИЕ * КОЭФФИЦИЕНТ_ВЫСОТЫ;
  73. мир.камера.position.z = РАССТОЯНИЕ;
  74. мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
  75. мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
  76. мир.свет.position.set(-0.5, 1, 0.5).normalize();
  77. мир.сцена.add(мир.свет);
  78. };
  79. // // // //
  80. СоздатьМатериалыФишек = мир =>
  81. {
  82. мир.материалыФишекСцены = [];
  83. мир.выбранныеМатериалыФишекСцены = [];
  84. var текстуры = мир.текстуры[ТЕМА];
  85. for (var имя in текстуры)
  86. {
  87. var текстура = текстуры[имя];
  88. var материал = new THREE.MeshLambertMaterial({
  89. map: текстура,
  90. color: new THREE.Color(0xCCCCCC),
  91. });
  92. мир.материалыФишекСцены.push(материал);
  93. var выбранныйМатериал = new THREE.MeshLambertMaterial({
  94. map: текстура,
  95. color: new THREE.Color(0xFFFFFF),
  96. });
  97. мир.выбранныеМатериалыФишекСцены.push(выбранныйМатериал);
  98. }
  99. };
  100. // // // //
  101. ПодготовитьсяКЗагрузкеРесурсов = мир =>
  102. {
  103. мир.полигональныеСетки = {
  104. [ФИШКИ]: {
  105. [ФИШКА]: null,
  106. },
  107. };
  108. мир.текстуры = {
  109. [ТЕМА]: { },
  110. };
  111. var м = мир.модули.модульПоУказателю(ТЕМА);
  112. var файлы = Object.keys(м.структура).sort();
  113. for (var номер in файлы)
  114. {
  115. var файл = файлы[номер];
  116. мир.текстуры[ТЕМА][файл] = null;
  117. }
  118. };
  119. // // // //
  120. ПлавноУбратьСтраницуЗагрузкиИСкрытьКрутилку = мир =>
  121. {
  122. плавноСкрытьИУдалить("экран-загрузки", { "задержка": 0.4 });
  123. плавноСкрыть("крутилка", { "задержка": 0.4 });
  124. };