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

155 lines
4.3KB

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