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.

184 lines
4.7KB

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