240 lines
7.2 KiB
JavaScript
240 lines
7.2 KiB
JavaScript
const РАССТОЯНИЕ = 40;
|
||
const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5;
|
||
|
||
|
||
// ?? // ??
|
||
|
||
|
||
ОтладитьСменуНастроекПриНажатии = мир =>
|
||
{
|
||
var менять = null;
|
||
if (мир.позицияНажатияВРисователе.x > 0.9)
|
||
{
|
||
менять = 1;
|
||
}
|
||
if (мир.позицияНажатияВРисователе.x < 0.1)
|
||
{
|
||
менять = -1;
|
||
}
|
||
if (!менять)
|
||
{
|
||
return;
|
||
}
|
||
|
||
var н = 0;
|
||
if (менять == 1)
|
||
{
|
||
н = 1;
|
||
}
|
||
// Переключаем тему.
|
||
var указатель = мир.реестрМаджонга["🀄"][н]["📦"];
|
||
var файл = мир.реестрМаджонга["🀄"][н]["📁"][42];
|
||
if (
|
||
(мир.настройкиМаджонга["🀄/📦"] != указатель) &&
|
||
(мир.настройкиМаджонга["🀄/📁"] != файл)
|
||
) {
|
||
|
||
мир.настройкиМаджонга["🀄/📦"] = указатель;
|
||
мир.настройкиМаджонга["🀄/📁"] = файл;
|
||
мир.уведомить("изменили настройки маджонга");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПроверитьОкна = мир =>
|
||
{
|
||
var окно = создатьОкноСОтступами("пример");
|
||
окно.плавно.отобразить();
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВывестиПоражение = мир =>
|
||
{
|
||
console.debug("ПОРАЖЕНИЕ");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВывестиПобеду = мир =>
|
||
{
|
||
console.debug("ПОБЕДА");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗадатьФишкуДляВыбора = мир =>
|
||
{
|
||
var номер = мир.выбранныйУзел.userData;
|
||
мир.фишкаМаджонгаДляВыбора = номер;
|
||
}
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПодготовитьФишкиКВыбору = мир =>
|
||
{
|
||
мир.выборныеУзлы = мир.фишкиСцены;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПодготовитьсяКСозданиюФишек = мир =>
|
||
{
|
||
var настройки = мир.настройкиМаджонга;
|
||
|
||
var м = мир.модули.модульПоУказателю(настройки["📍/📦"]);
|
||
var содержимое = м.содержимое[настройки["📍/📁"]];
|
||
var позиции = разобратьРаскладкуKMahjongg(содержимое);
|
||
|
||
var фишки = [];
|
||
var группа = 0;
|
||
for (var номер in позиции)
|
||
{
|
||
var п = позиции[номер];
|
||
фишки.push({
|
||
"📍": [п[0], п[1], п[2]],
|
||
"🚩": группа,
|
||
});
|
||
if (номер % 2)
|
||
{
|
||
++группа;
|
||
if (группа > 41)
|
||
{
|
||
группа = 0;
|
||
}
|
||
}
|
||
};
|
||
|
||
мир.фишкиМаджонга = фишки;
|
||
мир.модельФишкиСцены = мир.полигональныеСетки[настройки["🀄/📦"]][настройки["🀄/📁"]];
|
||
мир.сцена.add(мир.сценаМаджонга);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьМатериалыФишек = мир =>
|
||
{
|
||
var настройки = мир.настройкиМаджонга;
|
||
|
||
мир.материалыФишекСцены = [];
|
||
мир.выбранныеМатериалыФишекСцены = [];
|
||
|
||
var текстуры = мир.текстуры[настройки["🀄/📦"]];
|
||
for (var имя in текстуры)
|
||
{
|
||
var текстура = текстуры[имя];
|
||
var материал = new THREE.MeshLambertMaterial({
|
||
map: текстура,
|
||
color: new THREE.Color(0xCCCCCC),
|
||
});
|
||
мир.материалыФишекСцены.push(материал);
|
||
var выбранныйМатериал = new THREE.MeshLambertMaterial({
|
||
map: текстура,
|
||
color: new THREE.Color(0xFFFFFF),
|
||
});
|
||
мир.выбранныеМатериалыФишекСцены.push(выбранныйМатериал);
|
||
}
|
||
};
|
||
|
||
// // // //
|
||
|
||
|
||
ПодготовитьсяКЗагрузкеРесурсов = мир =>
|
||
{
|
||
var настройки = мир.настройкиМаджонга;
|
||
|
||
мир.полигональныеСетки = {
|
||
[настройки["🀄/📦"]]: {
|
||
[настройки["🀄/📁"]]: null,
|
||
},
|
||
};
|
||
|
||
мир.текстуры = {
|
||
[настройки["🀄/📦"]]: { },
|
||
};
|
||
var м = мир.модули.модульПоУказателю(настройки["🀄/📦"]);
|
||
var файлы = Object.keys(м.структура).sort();
|
||
var колво = 42;
|
||
for (var номер = 0; номер < колво; ++номер)
|
||
{
|
||
var файл = файлы[номер];
|
||
мир.текстуры[настройки["🀄/📦"]][файл] = null;
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗагрузитьМодулиРесурсов = мир =>
|
||
{
|
||
var настройки = мир.настройкиМаджонга;
|
||
var указатели = [
|
||
настройки["🀄/📦"],
|
||
настройки["📍/📦"],
|
||
];
|
||
var сообщение = "Загрузка модулей ресурсов ⚬ 加载资源模块 ⚬ Loading resource modules";
|
||
console.debug(сообщение, указатели);
|
||
мир.модули.использовали.подписатьРаз(function() {
|
||
мир.уведомить("загрузили модули ресурсов");
|
||
});
|
||
мир.модули.использовать(указатели);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗадатьНастройкиМаджонга = мир =>
|
||
{
|
||
// Выбираем первую тему, фишку, раскладку из доступных.
|
||
мир.настройкиМаджонга = {
|
||
"🀄/📦": мир.реестрМаджонга["🀄"][0]["📦"],
|
||
"🀄/📁": мир.реестрМаджонга["🀄"][0]["📁"][42],
|
||
"📍/📦": "https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000",
|
||
"📍/📁": "/4_winds.layout",
|
||
}
|
||
|
||
мир.уведомить("изменили настройки маджонга");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьПримерСцены = мир =>
|
||
{
|
||
мир.сцена.background = new THREE.Color(0xFFFFFF);
|
||
мир.камера.position.y = РАССТОЯНИЕ * КОЭФФИЦИЕНТ_ВЫСОТЫ;
|
||
мир.камера.position.z = РАССТОЯНИЕ;
|
||
мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
|
||
|
||
мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
|
||
мир.свет.position.set(-0.5, 1, 0.5).normalize();
|
||
мир.сцена.add(мир.свет);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПлавноУбратьСтраницуЗагрузкиИСкрытьКрутилку = мир =>
|
||
{
|
||
плавноСкрытьИУдалить("экран-загрузки", { "задержка": 0.4 });
|
||
плавноСкрыть("крутилка", { "задержка": 0.4 });
|
||
}; |