Compare commits

...

5 Commits

7 changed files with 63 additions and 20 deletions

View File

@@ -1,5 +1,5 @@
const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | Mahjong resources"; const УКАЗАТЕЛЬ_МОДУЛЯ_РЕСУРСОВ = "https://git.opengamestudio.org/mahjong/mahjong-res/raw/commit/5430b4d62bcc3d60f1e570485ee5cd562b70582d/0000";
const ИМЯ_ОТЛ_РАСКЛАДКИ = "Отладочные раскладки Маджонга | Mahjong debug layouts"; const УКАЗАТЕЛЬ_ОТЛ_РАСКЛАДКИ = "https://git.opengamestudio.org/mahjong/mahjong-otl-raskladki-dbg-layouts/raw/commit/2951feab28448266d3446974e781d320ebbed8df/0000";
// // // // // // // //
@@ -22,11 +22,21 @@ const ИМЯ_ОТЛ_РАСКЛАДКИ = "Отладочные раскладк
// // // // // // // //
ЗагрузитьОтладочнуюРаскладку = мир => ЗагрузитьВыбраннуюРаскладку = мир =>
{ {
var модуль = мир.модули.модульПоИмени(ИМЯ_ОТЛ_РАСКЛАДКИ); var указательМодуля = УКАЗАТЕЛЬ_МОДУЛЯ_РЕСУРСОВ;
var ресурс = "/успех|success.layout"; var ресурс = "/X_shaped.layout";
//var ресурс = "/провал|failure.layout"; if (мир.выбраннаяРаскладка == "😀")
{
ресурс = "/успех|success.layout";
указательМодуля = УКАЗАТЕЛЬ_ОТЛ_РАСКЛАДКИ;
}
else if (мир.выбраннаяРаскладка == "😭")
{
ресурс = "/провал|failure.layout";
указательМодуля = УКАЗАТЕЛЬ_ОТЛ_РАСКЛАДКИ;
}
var модуль = мир.модули.модульПоУказателю(указательМодуля);
var содержимое = модуль.содержимое[ресурс]; var содержимое = модуль.содержимое[ресурс];
мир.раскладкаKMahjongg = { мир.раскладкаKMahjongg = {
"содержимое": содержимое, "содержимое": содержимое,
@@ -39,7 +49,7 @@ const ИМЯ_ОТЛ_РАСКЛАДКИ = "Отладочные раскладк
ЗагрузитьФишку = мир => ЗагрузитьФишку = мир =>
{ {
var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ); var модуль = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_МОДУЛЯ_РЕСУРСОВ);
var ресурс = "/фишка.gltf"; var ресурс = "/фишка.gltf";
var адрес = `${window.location.origin}${ресурс}`; var адрес = `${window.location.origin}${ресурс}`;
THREE.Cache.enabled = true; THREE.Cache.enabled = true;

View File

@@ -1,7 +1,7 @@
надо загрузить ресурсы сцены надо загрузить ресурсы сцены
загрузить фишку загрузить фишку
загрузили фишку загрузили фишку
загрузить отладочную раскладку загрузить выбранную раскладку
разобрать раскладку KMahjongg разобрать раскладку KMahjongg
разобрали раскладку KMahjongg разобрали раскладку KMahjongg
задать отладочную тему фишек для загрузки задать отладочную тему фишек для загрузки

View File

@@ -109,7 +109,7 @@
ПодготовитьСцену = мир => ПодготовитьСцену = мир =>
{ {
var коэффициент = 2; var коэффициент = 2;
var расстояние = 6; var расстояние = 14;
мир.камера.position.y = расстояние * коэффициент; мир.камера.position.y = расстояние * коэффициент;
мир.камера.position.z = расстояние; мир.камера.position.z = расстояние;
мир.камера.lookAt(new THREE.Vector3(0, 0, 0)); мир.камера.lookAt(new THREE.Vector3(0, 0, 0));

View File

@@ -1,4 +1,4 @@
пуск модулей маджонга выбрали раскладку
настроить ThreeJS настроить ThreeJS
встроить отрисовщика ThreeJS встроить отрисовщика ThreeJS
отслеживать изменение размера окна браузера отслеживать изменение размера окна браузера

View File

@@ -3,6 +3,24 @@
// // // // // // // //
УведомитьОПоражении = мир =>
{
мир.уведомить("поражение");
};
// // // //
УведомитьОПобеде = мир =>
{
мир.уведомить("победа");
};
// // // //
ВывестиПобеду = мир => ВывестиПобеду = мир =>
{ {
console.debug("ПОБЕДА"); console.debug("ПОБЕДА");
@@ -92,8 +110,7 @@
{ {
if (фишкуМожноВыбрать(мир.индексыФишек, индекс)) if (фишкуМожноВыбрать(мир.индексыФишек, индекс))
{ {
var фишка = мир.индексыФишек[индекс]; var номер = мир.индексыФишек[индекс];
var номер = номерФишки(мир.фишки, фишка.id);
мир.доступныеДляВыбораНомераФишек.push(номер); мир.доступныеДляВыбораНомераФишек.push(номер);
} }
} }
@@ -346,6 +363,17 @@
ПроверитьДоступностьФишкиДляВыбора = мир => ПроверитьДоступностьФишкиДляВыбора = мир =>
{ {
// Удостоверимся, что это не одна и та же фишка, выбранная дважды.
if (мир.номераВыбранныхФишек.length)
{
var номер = мир.номераВыбранныхФишек[0];
if (номер == мир.номерНайденнойФишки)
{
return;
}
}
// Проверяем доступность с точки зрения правил Маджонга.
var позиция = мир.раскладкаKMahjongg.позиции[мир.номерНайденнойФишки]; var позиция = мир.раскладкаKMahjongg.позиции[мир.номерНайденнойФишки];
var индекс = индексПозицииФишки(позиция); var индекс = индексПозицииФишки(позиция);
if (фишкуМожноВыбрать(мир.индексыФишек, индекс)) if (фишкуМожноВыбрать(мир.индексыФишек, индекс))
@@ -383,9 +411,8 @@
for (var номер in позиции) for (var номер in позиции)
{ {
var позиция = позиции[номер]; var позиция = позиции[номер];
var фишка = мир.фишки[номер];
var индекс = индексПозицииФишки(позиция); var индекс = индексПозицииФишки(позиция);
мир.индексыФишек[индекс] = фишка; мир.индексыФишек[индекс] = номер;
}; };
}; };
@@ -495,7 +522,11 @@
var размеры = [ var размеры = [
(границы.max.x - границы.min.x) / 2, (границы.max.x - границы.min.x) / 2,
(границы.max.z - границы.min.z) / 2, (границы.max.z - границы.min.z) / 2,
границы.max.y - границы.min.y, //границы.max.y - границы.min.y,
];
var отступы = [
0.02,
0.02,
]; ];
const позиции = мир.раскладкаKMahjongg.позиции; const позиции = мир.раскладкаKMahjongg.позиции;
@@ -511,8 +542,8 @@
var слой = позиция[0]; var слой = позиция[0];
var ряд = позиция[1]; var ряд = позиция[1];
var столбец = позиция[2]; var столбец = позиция[2];
фишка.position.x = столбец * размеры[0]; фишка.position.x = столбец * (размеры[0] + отступы[0]);
фишка.position.z = ряд * размеры[1]; фишка.position.z = ряд * (размеры[1] + отступы[1]);
фишка.position.y = слой; фишка.position.y = слой;
} }
}; };

View File

@@ -50,5 +50,7 @@
проверить наличие фишек на игровом поле проверить наличие фишек на игровом поле
фишки на игровом поле присутствуют фишки на игровом поле присутствуют
вывести поражение вывести поражение
уведомить о поражении
фишки на игровом поле отсутствуют фишки на игровом поле отсутствуют
вывести победу вывести победу
уведомить о победе

View File

@@ -50,8 +50,8 @@
позицияИндексаФишки = (индекс) => позицияИндексаФишки = (индекс) =>
{ {
const x = индекс / 1000000; const x = Math.round(индекс / 1000000);
const y = (индекс - x * 1000000) / 1000; const y = Math.round((индекс - x * 1000000) / 1000);
const z = индекс - x * 1000000 - y * 1000; const z = индекс - x * 1000000 - y * 1000;
return [x, y, z]; return [x, y, z];
}; };