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

162 lines
4.6KB

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