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.

217 line
5.9KB

  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 ЗАДЕРЖКА = 5000;
  5. // // // //
  6. ОтобразитьВыбранныеФишки = мир =>
  7. {
  8. const uuid = мир.uuid();
  9. console.debug("отобразить-01", uuid, new Date(), мир.задержкаОтображенияВыбранныхФишек, мир.выбранныеФишкиМаджонга);
  10. setTimeout(
  11. function() {
  12. console.debug("отобразить-02", uuid, new Date(), мир.задержкаОтображенияВыбранныхФишек, мир.выбранныеФишкиМаджонга);
  13. мир.уведомить("надо отобразить выбранные фишки");
  14. мир.задержкаОтображенияВыбранныхФишек = 0;
  15. },
  16. мир.задержкаОтображенияВыбранныхФишек
  17. );
  18. }
  19. // // // //
  20. ЗадержатьСледующееОтображениеВыбранныхФишек = мир =>
  21. {
  22. console.debug("задержать");
  23. мир.задержкаОтображенияВыбранныхФишек = ЗАДЕРЖКА;
  24. }
  25. // // // //
  26. СкрытьУбранныеФишкиПослеЗадержки = мир =>
  27. {
  28. setTimeout(
  29. function() {
  30. for (var номер in мир.убранныеФишкиМаджонга)
  31. {
  32. var н = мир.убранныеФишкиМаджонга[номер];
  33. // Перемещаем фишку на другой слой для исключения её из отрисовки и выбора.
  34. var ф = мир.фишки[н];
  35. ф.layers.set(1);
  36. }
  37. },
  38. ЗАДЕРЖКА
  39. );
  40. }
  41. // // // //
  42. ЗадатьФишкуДляВыбора = мир =>
  43. {
  44. var номер = мир.выбранныйУзел.userData;
  45. мир.фишкаМаджонгаДляВыбора = номер;
  46. }
  47. // // // //
  48. ПодготовитьФишкиКВыбору = мир =>
  49. {
  50. мир.выборныеУзлы = мир.фишки;
  51. мир.задержкаОтображенияВыбранныхФишек = 0;
  52. };
  53. // // // //
  54. ВыделитьВыбранныеФишки = мир =>
  55. {
  56. for (var номер in мир.выбранныеФишкиМаджонга)
  57. {
  58. var н = мир.выбранныеФишкиМаджонга[номер];
  59. var ф = мир.фишки[н];
  60. var г = мир.фишкиМаджонга[н]["🚩"];
  61. var м = мир.выбранныеМатериалы[г];
  62. ф.material = м;
  63. }
  64. };
  65. // // // //
  66. ЗадатьМатериалыФишкам = мир =>
  67. {
  68. for (var н in мир.фишки)
  69. {
  70. var ф = мир.фишки[н];
  71. var г = мир.фишкиМаджонга[н]["🚩"];
  72. var м = мир.материалы[г];
  73. ф.material = м;
  74. }
  75. };
  76. // // // //
  77. СоздатьФишки = мир =>
  78. {
  79. var фишка = мир.полигональныеСетки[РЕСУРСЫ][ФИШКА];
  80. мир.фишки = [];
  81. for (var номер in мир.фишкиМаджонга)
  82. {
  83. var фм = мир.фишкиМаджонга[номер];
  84. var ф = фишка.clone();
  85. ф.userData = номер;
  86. ф.position.set(фм["📍"][0], 0, фм["📍"][1]);
  87. мир.фишки.push(ф);
  88. мир.сцена.add(ф);
  89. }
  90. };
  91. // // // //
  92. ЗадатьФишки = мир =>
  93. {
  94. мир.фишкиМаджонга = [
  95. {
  96. "📍": [0, 0],
  97. "🚩": 0,
  98. },
  99. {
  100. "📍": [3, 0],
  101. "🚩": 0,
  102. },
  103. {
  104. "📍": [0, 3],
  105. "🚩": 1,
  106. },
  107. ];
  108. };
  109. // // // //
  110. СоздатьПримерСцены = мир =>
  111. {
  112. мир.сцена.background = new THREE.Color(0xFFFFFF);
  113. мир.камера.position.y = 10;
  114. мир.камера.position.z = 5;
  115. мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
  116. мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
  117. мир.свет.position.set(-0.5, 1, 0.5).normalize();
  118. мир.сцена.add(мир.свет);
  119. };
  120. // // // //
  121. СоздатьМатериалыФишек = мир =>
  122. {
  123. мир.материалы = [];
  124. мир.выбранныеМатериалы = [];
  125. var текстуры = мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ];
  126. for (var имя in текстуры)
  127. {
  128. var текстура = текстуры[имя];
  129. var материал = new THREE.MeshLambertMaterial({
  130. map: текстура,
  131. color: new THREE.Color(0xAAAAAA),
  132. });
  133. мир.материалы.push(материал);
  134. var выбранныйМатериал = new THREE.MeshLambertMaterial({
  135. map: текстура,
  136. color: new THREE.Color(0xFFFFFF),
  137. });
  138. мир.выбранныеМатериалы.push(выбранныйМатериал);
  139. }
  140. };
  141. // // // //
  142. ПодготовитьсяКЗагрузкеРесурсов = мир =>
  143. {
  144. мир.полигональныеСетки = {
  145. [РЕСУРСЫ]: {
  146. [ФИШКА]: null,
  147. },
  148. };
  149. мир.текстуры = {
  150. [ТЕМА_ОТЛАДОЧНАЯ]: { },
  151. };
  152. var м = мир.модули.модульПоУказателю(ТЕМА_ОТЛАДОЧНАЯ);
  153. var файлы = Object.keys(м.структура).sort();
  154. for (var номер in файлы)
  155. {
  156. var файл = файлы[номер];
  157. мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ][файл] = null;
  158. }
  159. };
  160. // // // //
  161. СкрытьКрутилку = мир =>
  162. {
  163. document.getElementById("крутилка").style.display = "none";
  164. };