|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- const ТЕМА_ПО_УМОЛЧАНИЮ = "https://git.opengamestudio.org/MAOH/TEMA_M1K/raw/branch/master/0000";
- const РАСК_ПО_УМОЛЧАНИЮ = "https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000";
-
-
- // // // //
-
-
- ЗадатьКоличествоФишекДляОтображения = мир =>
- {
- 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 });
- };
|