Compare commits

...

5 Commits

7 changed files with 63 additions and 20 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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