Изменения от Главреда ГитЖС | Changes of GitJS Glavred
This commit is contained in:
4
0000
4
0000
@@ -1,5 +1,7 @@
|
|||||||
Суть Маджонга
|
Суть Маджонга
|
||||||
0.1.0
|
0.2.0
|
||||||
https://git.opengamestudio.org/MAOH/CYMA
|
https://git.opengamestudio.org/MAOH/CYMA
|
||||||
|
|
||||||
|
x /🎬.js
|
||||||
|
/🎬.череда
|
||||||
x /🔨.js
|
x /🔨.js
|
||||||
495
🎬.js
Normal file
495
🎬.js
Normal 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 });
|
||||||
|
};
|
||||||
98
🎬.череда
Normal file
98
🎬.череда
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
надо окончить загрузку приложения
|
||||||
|
плавно убрать страницу загрузки и скрыть крутилку
|
||||||
|
создать пример сцены
|
||||||
|
подготовить список раскладок
|
||||||
|
подготовить представление списка раскладок
|
||||||
|
задать список раскладок маджонга
|
||||||
|
подготовить список тем
|
||||||
|
подготовить представление списка тем
|
||||||
|
задать список тем маджонга
|
||||||
|
отобразить окно управления
|
||||||
|
задать настройки маджонга по умолчанию
|
||||||
|
изменили настройки маджонга
|
||||||
|
# засечь время А
|
||||||
|
отобразить выбор раскладки маджонга
|
||||||
|
отобразить выбор темы маджонга
|
||||||
|
подготовить список модулей ресурсов для загрузки
|
||||||
|
# засечь время А
|
||||||
|
проверить необходимость загрузки модулей ресурсов
|
||||||
|
модули ресурсов не нужно загружать
|
||||||
|
проверить необходимость загрузки ресурсов
|
||||||
|
модули ресурсов нужно загружать
|
||||||
|
загрузить модули ресурсов
|
||||||
|
загрузили модули ресурсов
|
||||||
|
проверить необходимость загрузки ресурсов
|
||||||
|
ресурсы не нужно загружать
|
||||||
|
создать фишки
|
||||||
|
ресурсы нужно загружать
|
||||||
|
подготовиться к загрузке ресурсов
|
||||||
|
загрузить полигональные сетки
|
||||||
|
загрузили полигональные сетки
|
||||||
|
загрузить текстуры
|
||||||
|
загрузили текстуры
|
||||||
|
удалить фишки сцены
|
||||||
|
создать материалы фишек
|
||||||
|
создать фишки
|
||||||
|
|
||||||
|
надо создать фишки
|
||||||
|
# засечь время А
|
||||||
|
перемешать позиции фишек
|
||||||
|
подготовиться к созданию фишек
|
||||||
|
создать фишки в сцене
|
||||||
|
создать индексы фишек маджонга
|
||||||
|
подготовить фишки к выбору
|
||||||
|
# засечь время А
|
||||||
|
собрать доступные для выбора номера фишек маджонга
|
||||||
|
подсчитать количество ходов в маджонге
|
||||||
|
задать количество фишек для отображения
|
||||||
|
отобразить количество фишек маджонга
|
||||||
|
# засечь время А
|
||||||
|
# вывести времена
|
||||||
|
|
||||||
|
изменили номер выбранной раскладки маджонга
|
||||||
|
использовать выбранную раскладку
|
||||||
|
изменили номер выбранной темы маджонга
|
||||||
|
использовать выбранную тему
|
||||||
|
|
||||||
|
нажатие в рисователе
|
||||||
|
выбрать узел сцены
|
||||||
|
выбрали узел сцены
|
||||||
|
задать фишку для выбора
|
||||||
|
выбрать фишку маджонга
|
||||||
|
изменили выбранные фишки маджонга
|
||||||
|
задать материалы фишкам сцены
|
||||||
|
выделить выбранные фишки в сцене
|
||||||
|
убрали фишки маджонга
|
||||||
|
скрыть убранные фишки в сцене
|
||||||
|
победа в маджонге
|
||||||
|
вывести победу
|
||||||
|
отобразить победу
|
||||||
|
поражение в маджонге
|
||||||
|
вывести поражение
|
||||||
|
отобразить поражение
|
||||||
|
|
||||||
|
отрисовали кадр
|
||||||
|
обновить счётчик кадров
|
||||||
|
|
||||||
|
кнопка раскладки отобразить
|
||||||
|
запретить выбор фишек
|
||||||
|
кнопка раскладки скрыть
|
||||||
|
разрешить выбор фишек
|
||||||
|
кнопка темы отобразить
|
||||||
|
запретить выбор фишек
|
||||||
|
кнопка темы скрыть
|
||||||
|
разрешить выбор фишек
|
||||||
|
кнопка увеличения масштаба
|
||||||
|
увеличить масштаб
|
||||||
|
кнопка уменьшения масштаба
|
||||||
|
уменьшить масштаб
|
||||||
|
|
||||||
|
изменили масштаб
|
||||||
|
отобразить текущее значение масштаба
|
||||||
|
изменили ориентацию
|
||||||
|
центрировать окно в портретном режиме
|
||||||
|
|
||||||
|
изменили количество ходов в маджонге
|
||||||
|
отобразить количество ходов в маджонге
|
||||||
|
задать количество фишек для отображения
|
||||||
|
отобразить количество фишек маджонга
|
||||||
44
🔨.js
44
🔨.js
@@ -1,42 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
// // // //
|
||||||
// Рисователь. Поддержка портретного режима
|
// Рисователь. Поддержка портретного режима
|
||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ИзменитьРазмерРисователя = мир =>
|
ИзменитьРазмерРисователя = мир =>
|
||||||
{
|
{
|
||||||
var ширина = window.innerWidth * мир.масштаб;
|
var ширина = window.innerWidth * мир.масштаб;
|
||||||
var высота = window.innerHeight * мир.масштаб;
|
var высота = window.innerHeight * мир.масштаб;
|
||||||
var отношение = ширина / высота;
|
var отношение = ширина / высота;
|
||||||
|
|
||||||
console.debug("1 ширина/высота/отношение:", ширина, высота, отношение);
|
|
||||||
var ширинаП = ширина;
|
|
||||||
var отношениеП = отношение;
|
|
||||||
var ширинаПП = 100;
|
|
||||||
// Портрет.
|
// Портрет.
|
||||||
if (отношение < 1)
|
if (отношение < 1)
|
||||||
{
|
{
|
||||||
ширинаП = высота * 1.7;
|
мир.высотаОкна = высота;
|
||||||
отношениеП = ширинаП / высота;
|
мир.высотаОкнаПроц = 100;
|
||||||
ширинаПП = ширинаП * 100 / ширина;
|
мир.ширинаОкна = высота * 1.5;
|
||||||
|
мир.ширинаОкнаПроц = мир.ширинаОкна * 100 / ширина;
|
||||||
|
// Уведомляем.
|
||||||
|
мир.ориентацияПортретная = true;
|
||||||
|
мир.уведомить("изменили ориентацию");
|
||||||
|
}
|
||||||
|
// Ландшафт.
|
||||||
|
else
|
||||||
|
{
|
||||||
|
мир.ширинаОкна = window.innerWidth * мир.масштаб;
|
||||||
|
мир.высотаОкна = window.innerHeight * мир.масштаб;
|
||||||
|
мир.ширинаОкнаПроц = мир.масштаб * 100;
|
||||||
|
мир.высотаОкнаПроц = мир.масштаб * 100;
|
||||||
|
// Уведомляем.
|
||||||
|
мир.ориентацияПортретная = false;
|
||||||
|
мир.уведомить("изменили ориентацию");
|
||||||
}
|
}
|
||||||
console.debug("2 ширина/высота/отношение:", ширинаП, высота, отношениеП);
|
|
||||||
|
|
||||||
|
|
||||||
мир.камера.aspect = отношениеП;
|
|
||||||
мир.камера.updateProjectionMatrix();
|
|
||||||
var чёткостьApple = 2;
|
|
||||||
мир.рисователь.setSize(ширинаП * чёткостьApple, высота * чёткостьApple);
|
|
||||||
мир.канва.style = `
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
max-width: ${ширинаПП}%;
|
|
||||||
max-height: 100%;
|
|
||||||
width: ${ширинаПП}%;
|
|
||||||
height: 100%;
|
|
||||||
`;
|
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user