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.

🏁.js 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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. мир.выбраннаяФишка = номер;
  71. мир.выбранныеФишки.push(номер);
  72. мир.уведомить("выбрали фишку");
  73. */
  74. мир.уведомить("надо попробовать выбрать фишку маджонга");
  75. };
  76. // // // //
  77. ПодготовитьФишкиКВыбору = мир =>
  78. {
  79. мир.выборныеУзлы = мир.фишки;
  80. //мир.выбранныеФишки = [];
  81. //мир.выбраннаяФишка = null;
  82. };
  83. // // // //
  84. НазначитьФишкамМатериалы = мир =>
  85. {
  86. for (var н in мир.фишки)
  87. {
  88. var ф = мир.фишки[н];
  89. var г = мир.фишкиМаджонга[н]["🚩"];
  90. var м = мир.материалы[г];
  91. ф.material = м;
  92. }
  93. };
  94. // // // //
  95. СоздатьФишки = мир =>
  96. {
  97. var фишка = мир.полигональныеСетки[РЕСУРСЫ][ФИШКА];
  98. мир.фишки = [];
  99. for (var номер in мир.фишкиМаджонга)
  100. {
  101. var фм = мир.фишкиМаджонга[номер];
  102. var ф = фишка.clone();
  103. ф.userData = номер;
  104. ф.position.set(фм["📍"][0], 0, фм["📍"][1]);
  105. мир.фишки.push(ф);
  106. мир.сцена.add(ф);
  107. }
  108. };
  109. // // // //
  110. ПодготовитьсяКСозданиюФишек = мир =>
  111. {
  112. мир.фишкиМаджонга = [
  113. {
  114. "📍": [0, 0],
  115. "🚩": 0,
  116. },
  117. {
  118. "📍": [3, 0],
  119. "🚩": 0,
  120. },
  121. {
  122. "📍": [0, 3],
  123. "🚩": 1,
  124. },
  125. ];
  126. };
  127. // // // //
  128. СоздатьПримерСцены = мир =>
  129. {
  130. мир.сцена.background = new THREE.Color(0xFFFFFF);
  131. мир.камера.position.y = 10;
  132. мир.камера.position.z = 5;
  133. мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
  134. мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
  135. мир.свет.position.set(-0.5, 1, 0.5).normalize();
  136. мир.сцена.add(мир.свет);
  137. };
  138. // // // //
  139. СоздатьМатериалыФишек = мир =>
  140. {
  141. мир.материалы = [];
  142. мир.выбранныеМатериалы = [];
  143. var текстуры = мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ];
  144. for (var имя in текстуры)
  145. {
  146. var текстура = текстуры[имя];
  147. var материал = new THREE.MeshLambertMaterial({
  148. map: текстура,
  149. color: new THREE.Color(0xAAAAAA),
  150. });
  151. мир.материалы.push(материал);
  152. var выбранныйМатериал = new THREE.MeshLambertMaterial({
  153. map: текстура,
  154. color: new THREE.Color(0xFFFFFF),
  155. });
  156. мир.выбранныеМатериалы.push(выбранныйМатериал);
  157. }
  158. };
  159. // // // //
  160. ПодготовитьсяКЗагрузкеРесурсов = мир =>
  161. {
  162. мир.полигональныеСетки = {
  163. [РЕСУРСЫ]: {
  164. [ФИШКА]: null,
  165. },
  166. };
  167. мир.текстуры = {
  168. [ТЕМА_ОТЛАДОЧНАЯ]: { },
  169. };
  170. var м = мир.модули.модульПоУказателю(ТЕМА_ОТЛАДОЧНАЯ);
  171. var файлы = Object.keys(м.структура).sort();
  172. for (var номер in файлы)
  173. {
  174. var файл = файлы[номер];
  175. мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ][файл] = null;
  176. }
  177. };
  178. // // // //
  179. СкрытьКрутилку = мир =>
  180. {
  181. document.getElementById("крутилка").style.display = "none";
  182. };