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

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