Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

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