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

178 lines
5.2KB

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