Изменения от Главреда ГитЖС | Changes of GitJS Glavred

This commit is contained in:
Главред | Glavred
2021-01-18 12:46:57 +03:00
parent 6d126e106c
commit d5d30c2c94
4 changed files with 614 additions and 27 deletions

495
🎬.js Normal file
View File

@@ -0,0 +1,495 @@
const ТЕМАО_УМОЛЧАНИЮ = "https://git.opengamestudio.org/MAOH/TEMA_M1K/raw/branch/master/0000";
const РАСКО_УМОЛЧАНИЮ = "https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000";
// // // //
ЦентрироватьОкноВПортретномРежиме = мир =>
{
if (!мир.ориентацияПортретная)
{
return;
}
var смещение = (мир.ширинаОкна - window.innerWidth * мир.масштаб) / 2;
window.scrollTo(смещение, 0);
};
// // // //
ЗадатьКоличествоФишекДляОтображения = мир =>
{
var всего = мир.фишкиМаджонга.length;
var доступно = Object.keys(мир.индексыФишекМаджонга).length;
var убрано = всего - доступно;
мир.количествоФишекМаджонга = `${убрано}/${всего}`;
};
// // // //
УменьшитьМасштаб = мир =>
{
мир.масштаб -= 0.5;
if (мир.масштаб < 1)
{
мир.масштаб = 1;
}
мир.уведомить("изменили масштаб");
};
// // // //
УвеличитьМасштаб = мир =>
{
мир.масштаб += 0.5;
мир.уведомить("изменили масштаб");
};
// // // //
РазрешитьВыборФишек = мир =>
{
мир.отслеживатьНажатияВРисователе = true;
};
// // // //
ЗапретитьВыборФишек = мир =>
{
мир.отслеживатьНажатияВРисователе = false;
};
// // // //
ОбновитьСчётчикКадров = мир =>
{
var время = Math.floor(мир.времяРисования / 1000.0);
// Первый вызов. Создаём.
if (!мир.счётчикКадров)
{
var счётчик = document.createElement("div");
счётчик.style = "position: fixed; left: 0; bottom: 0;";
document.body.appendChild(счётчик);
мир.счётчикКадров = счётчик;
мир.счётчикКадровВремя = время;
мир.счётчикКадровРазы = 0;
return;
}
// Последующие вызовы.
++мир.счётчикКадровРазы;
if (время - мир.счётчикКадровВремя)
{
мир.счётчикКадров.innerHTML = мир.счётчикКадровРазы;
мир.счётчикКадровВремя = время;
мир.счётчикКадровРазы = 0;
}
};
// // // //
ИспользоватьВыбраннуюТему = мир =>
{
var э = мир.списокТем[мир.номерВыбраннойТемыМаджонга];
var файлыТемы = мир.реестрМаджонга["🀄"][э[1]]["📁"];
мир.настройкиМаджонга["🀄/📦"] = э[1];
мир.настройкиМаджонга["🀄/📁"] = файлыТемы[42];
мир.уведомить("изменили настройки маджонга");
};
// // // //
ИспользоватьВыбраннуюРаскладку = мир =>
{
var э = мир.списокРаскладок[мир.номерВыбраннойРаскладкиМаджонга];
мир.настройкиМаджонга["📍/📦"] = э[1];
мир.настройкиМаджонга["📍/📁"] = э[0];
мир.уведомить("изменили настройки маджонга");
};
// // // //
ВывестиПоражение = мир =>
{
console.debug("ПОРАЖЕНИЕ");
};
// // // //
ВывестиПобеду = мир =>
{
console.debug("ПОБЕДА");
};
// // // //
ЗадатьФишкуДляВыбора = мир =>
{
var номер = мир.выбранныйУзел.userData;
мир.фишкаМаджонгаДляВыбора = номер;
}
// // // //
ПодготовитьФишкиКВыбору = мир =>
{
мир.выборныеУзлы = мир.фишкиСцены;
};
// // // //
ПодготовитьсяКСозданиюФишек = мир =>
{
var настройки = мир.настройкиМаджонга;
var позиции = мир.позицииФишек;
var фишки = [];
var группа = 0;
for (var номер in позиции)
{
var п = позиции[номер];
фишки.push({
"📍": [п[0], п[1], п[2]],
"🚩": группа,
});
if (номер % 2)
{
++группа;
if (группа > 41)
{
группа = 0;
}
}
};
мир.фишкиМаджонга = фишки;
мир.модельФишкиСцены = мир.полигональныеСетки[настройки["🀄/📦"]][настройки["🀄/📁"]];
мир.сцена.add(мир.сценаМаджонга);
};
// // // //
ПеремешатьПозицииФишек = мир =>
{
var настройки = мир.настройкиМаджонга;
var м = мир.модули.модульПоУказателю(настройки["📍/📦"]);
var содержимое = м.содержимое[настройки["📍/📁"]];
var было = разобратьРаскладкуKMahjongg(содержимое);
var стало = [];
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#Getting_a_random_integer_between_two_values
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min); //The maximum is exclusive and the minimum is inclusive
}
// Перемешиваем.
while (было.length)
{
var н = getRandomInt(0, было.length);
стало.push(было[н]);
было.splice(н, 1);
}
мир.позицииФишек = стало;
};
// // // //
СоздатьФишки = мир =>
{
мир.уведомить("надо создать фишки");
};
// // // //
СоздатьМатериалыФишек = мир =>
{
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 настройки = мир.настройкиМаджонга;
if (
мир.полигональныеСетки &&
настройки["🀄/📦"] in мир.полигональныеСетки &&
настройки["🀄/📁"] in мир.полигональныеСетки[настройки["🀄/📦"]] &&
мир.текстуры &&
настройки["🀄/📦"] in мир.текстуры
) {
мир.уведомить("ресурсы не нужно загружать");
}
else
{
мир.уведомить("ресурсы нужно загружать");
}
};
// // // //
ЗагрузитьМодулиРесурсов = мир =>
{
var указатели = мир.списокМодулейРесурсовДляЗагрузки;
var сообщение = "Загрузка модулей ресурсов ⚬ 加载资源模块 ⚬ Loading resource modules";
console.debug(сообщение, указатели);
мир.модули.использовали.подписатьРаз(function() {
мир.уведомить("загрузили модули ресурсов");
});
мир.модули.использовать(указатели);
};
// // // //
ПроверитьНеобходимостьЗагрузкиМодулейРесурсов = мир =>
{
if (мир.списокМодулейРесурсовДляЗагрузки.length)
{
мир.уведомить("модули ресурсов нужно загружать");
}
else
{
мир.уведомить("модули ресурсов не нужно загружать");
}
}
// // // //
ПодготовитьПредставлениеСпискаТем = мир =>
{
var список = мир.списокТем;
var названия = [];
for (var н in список)
{
var название = список[н][0];
названия.push(название);
}
мир.списокТемМаджонга = названия;
};
// // // //
ПодготовитьСписокТем = мир =>
{
var темы = мир.реестрМаджонга["🀄"];
var список = [];
var указатели = Object.keys(темы).sort();
for (var н in указатели)
{
var указатель = указатели[н];
var м = мир.модули.модульПоУказателю(указатель);
список.push([м.имя, указатель]);
}
мир.списокТем = список;
};
// // // //
ПодготовитьСписокМодулейРесурсовДляЗагрузки = мир =>
{
var проверить = [
мир.настройкиМаджонга["🀄/📦"],
мир.настройкиМаджонга["📍/📦"],
];
var загрузить = [];
for (var н in проверить)
{
var указатель = проверить[н];
var м = мир.модули.модульПоУказателю(указатель);
// Модуль не загружен.
if (!м.содержимое)
{
загрузить.push(указатель);
}
}
мир.списокМодулейРесурсовДляЗагрузки = загрузить;
};
// // // //
ПодготовитьПредставлениеСпискаРаскладок = мир =>
{
var список = мир.списокРаскладок;
var названия = [];
for (var н in список)
{
var файл = список[н][0];
var название = файл
.substring(1)
.replace(".layout", "");
названия.push(название);
}
мир.списокРаскладокМаджонга = названия;
};
// // // //
ПодготовитьСписокРаскладок = мир =>
{
var раскладки = мир.реестрМаджонга["📍"];
var список = [];
var указатели = Object.keys(раскладки).sort();
for (var н in указатели)
{
var указатель = указатели[н];
var файлы = раскладки[указатель]["📁"];
for (var номер in файлы)
{
var файл = файлы[номер];
список.push([файл, указатель]);
}
}
мир.списокРаскладок = список;
};
// // // //
ЗадатьНастройкиМаджонгаПоУмолчанию = мир =>
{
var файлыТемы = мир.реестрМаджонга["🀄"][ТЕМАО_УМОЛЧАНИЮ]["📁"];
var файлыРаскладок = мир.реестрМаджонга["📍"][РАСКО_УМОЛЧАНИЮ]["📁"];
мир.настройкиМаджонга = {
"🀄/📦": ТЕМАО_УМОЛЧАНИЮ,
"🀄/📁": файлыТемы[42],
"📍/📦": РАСКО_УМОЛЧАНИЮ,
"📍/📁": файлыРаскладок[0],
}
мир.номерВыбраннойРаскладкиМаджонга = 0;
мир.номерВыбраннойТемыМаджонга = 0;
мир.уведомить("изменили настройки маджонга");
};
// // // //
СоздатьПримерСцены = мир =>
{
мир.сцена.background = new THREE.Color(0xFFFFFF);
мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
мир.свет.position.set(-0.5, 1, 0.5).normalize();
мир.сцена.add(мир.свет);
};
// // // //
ПлавноУбратьСтраницуЗагрузкиИСкрытьКрутилку = мир =>
{
плавноСкрытьИУдалить("экран-загрузки", { "задержка": 0.4 });
плавноСкрыть("крутилка", { "задержка": 0.4 });
};