From a0f7fd32db29909f16263b4d7df84f3751750856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BB=D0=B0=D0=B2=D1=80=D0=B5=D0=B4=20=7C=20Glavred?= Date: Sun, 24 Jan 2021 13:10:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D1=82=20=D0=93=D0=BB=D0=B0=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=20=D0=93=D0=B8=D1=82=D0=96=D0=A1=20|=20Chang?= =?UTF-8?q?es=20of=20GitJS=20Glavred?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0000 | 2 +- 📦 | 6 - 🗄️.js | 1213 +++++++++++++++++++++++++++++++++++++++++++++++++++- 🙈.html | 2 +- 4 files changed, 1211 insertions(+), 12 deletions(-) diff --git a/0000 b/0000 index 585209a..d505f5b 100644 --- a/0000 +++ b/0000 @@ -1,5 +1,5 @@ МАОН_1 -1.0.8 +1.0.9 https://git.opengamestudio.org/MAOH/MAOH_1 /three.js diff --git a/📦 b/📦 index 2f5c5fd..fff2b11 100644 --- a/📦 +++ b/📦 @@ -4,12 +4,6 @@ # 启动时要加载的模块指针列表 # List of module pointers to load at startup -https://bitbucket.org/gitjs/jquery/raw/3.5.1/0000 -https://bitbucket.org/gitjs/uikit/raw/3.2.0/0000 -https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout/raw/branch/master/0000 -https://git.opengamestudio.org/mahjong/povtorniy-repeating-ui/raw/branch/master/0000 -https://git.opengamestudio.org/PuCOBATEJlb/PuCOBATEJlb/raw/branch/master/0000 -https://git.opengamestudio.org/PuCOBATEJlb/PECYPCbl/raw/branch/master/0000 https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000 https://git.opengamestudio.org/MAOH/CEHMA/raw/branch/master/0000 diff --git a/🗄️.js b/🗄️.js index 7608933..cf75455 100644 --- a/🗄️.js +++ b/🗄️.js @@ -839,6 +839,1215 @@ gitjs.мир.разобрать(` }; +// // // // +// MARK: https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000 +// // // // + + +// MARK: /⨐.js + + +фишкуМаджонгаМожноВыбрать = (индексы, индекс) => +{ + var позиция = позицияИндексаФишкиМаджонга(индекс); + // Проверяем заблокированность фишки одновременно с обеих сторон. + var слева = уФишкиМаджонгаЕстьСоседи(индексы, позиция, 0, -2); + var справа = уФишкиМаджонгаЕстьСоседи(индексы, позиция, 0, 2); + if (слева && справа) + { + return false; + } + + // Проверяем заблокированность сверху. + for (var смещениеСтолбца = -1; смещениеСтолбца < 2; ++смещениеСтолбца) + { + if (уФишкиМаджонгаЕстьСоседи(индексы, позиция, 1, смещениеСтолбца)) + { + return false; + } + } + + return true; +}; + + +// // // // + + +уФишкиМаджонгаЕстьСоседи = (индексы, позиция, смещениеСлоя, смещениеСтолбца) => +{ + for (var смещениеРяда = -1; смещениеРяда < 2; ++смещениеРяда) + { + var позицияСоседа = [ + позиция[0] + смещениеСлоя, + позиция[1] + смещениеРяда, + позиция[2] + смещениеСтолбца, + ]; + var индексСоседа = индексПозицииФишкиМаджонга(позицияСоседа); + if (индексСоседа in индексы) + { + return true; + } + } + return false; +}; + + +// // // // + + +позицияИндексаФишкиМаджонга = (индекс) => +{ + const x = Math.round(индекс / 1000000); + const y = Math.round((индекс - x * 1000000) / 1000); + const z = индекс - x * 1000000 - y * 1000; + return [x, y, z]; +}; + + +// // // // + + +индексПозицииФишкиМаджонга = (позиция) => +{ + return позиция[0] * 1000000 + позиция[1] * 1000 + позиция[2]; +}; + + +// MARK: /🎬.js + + +const ЗАДЕРЖКА = 100; + + +// // // // + + +УведомитьОРезультатеЕслиКонец = мир => +{ + if (мир.количествоХодовВМаджонге != 0) + { + return; + } + + var фишкиОстались = Object.keys(мир.индексыФишекМаджонга).length > 0; + if (фишкиОстались) + { + мир.уведомить("поражение в маджонге"); + } + else + { + мир.уведомить("победа в маджонге"); + } +}; + + +// // // // + + +ПодсчитатьКоличествоХодовВМаджонге = мир => +{ + var номера = мир.доступныеДляВыбораНомераФишекМаджонга; + var фишки = мир.фишкиМаджонга; + var ходов = 0; + + for (var н0 in номера) + { + н0 = Number(н0); + // Исключаем уже просмотренные номера. + for (var н1 = н0 + 1; н1 < номера.length; ++н1) + { + var номер0 = номера[н0]; + var номер1 = номера[н1]; + var группа0 = фишки[номер0]["🚩"]; + var группа1 = фишки[номер1]["🚩"]; + if (группа0 == группа1) + { + ++ходов; + } + } + } + + мир.количествоХодовВМаджонге = ходов; + мир.уведомить("изменили количество ходов в маджонге"); +}; + + +// // // // + + +СобратьДоступныеДляВыбораНомераФишекМаджонга = мир => +{ + var индексы = мир.индексыФишекМаджонга; + var номера = []; + + for (индекс in индексы) + { + if (фишкуМаджонгаМожноВыбрать(индексы, индекс)) + { + var номер = индексы[индекс]; + номера.push(номер); + } + } + + мир.доступныеДляВыбораНомераФишекМаджонга = номера; +}; + + +// // // // + + +ОчиститьИндексыФишекМаджонгаОтУбранных = мир => +{ + for (var номер in мир.убранныеФишкиМаджонга) + { + var н = мир.убранныеФишкиМаджонга[номер]; + var позиция = мир.фишкиМаджонга[н]["📍"]; + var индекс = индексПозицииФишкиМаджонга(позиция); + delete мир.индексыФишекМаджонга[индекс]; + } +}; + + +// // // // + + +УбратьВыбраннуюПаруФишекМаджонгаСЗадержкой = мир => +{ + setTimeout( + function() { + мир.убранныеФишкиМаджонга = мир.выбранныеФишкиМаджонга.slice(); + мир.выбранныеФишкиМаджонга = []; + мир.уведомить("изменили выбранные фишки маджонга"); + мир.уведомить("убрали фишки маджонга"); + }, + мир.задержкаУбиранияФишекМаджонга + ); +}; + + +// // // // + + +ИсключитьИзВыбранныхФишекМаджонгаПервую = мир => +{ + мир.выбранныеФишкиМаджонга.shift(); + мир.уведомить("изменили выбранные фишки маджонга"); +}; + + +// // // // + + +СравнитьПаруВыбранныхФишекМаджонга = мир => +{ + // Удостоверяемся в наличии двух фишек. + if (мир.выбранныеФишкиМаджонга.length != 2) + { + return; + } + var н1 = мир.выбранныеФишкиМаджонга[0]; + var н2 = мир.выбранныеФишкиМаджонга[1]; + var г1 = мир.фишкиМаджонга[н1]["🚩"]; + var г2 = мир.фишкиМаджонга[н2]["🚩"]; + if (г1 == г2) + { + мир.уведомить("выбрали пару фишек маджонга одной группы"); + } + else + { + мир.уведомить("выбрали пару фишек маджонга разных групп"); + } +}; + + +// // // // + + +ПодготовитьМеханикуМаджонга = мир => +{ + мир.выбранныеФишкиМаджонга = []; + мир.задержкаУбиранияФишекМаджонга = ЗАДЕРЖКА; +}; + + +// MARK: /🎬.череда + + +gitjs.мир.разобрать(` + +ручной пуск + подготовить механику маджонга + +изменили выбранные фишки маджонга + сравнить пару выбранных фишек маджонга +выбрали пару фишек маджонга разных групп + исключить из выбранных фишек маджонга первую +выбрали пару фишек маджонга одной группы + убрать выбранную пару фишек маджонга с задержкой +убрали фишки маджонга + очистить индексы фишек маджонга от убранных + собрать доступные для выбора номера фишек маджонга + подсчитать количество ходов в маджонге +изменили количество ходов в маджонге + уведомить о результате если конец + +`); + + +// MARK: /📖.js + + +СоздатьИндексыФишекМаджонга = мир => +{ + мир.индексыФишекМаджонга = {}; + for (var н in мир.фишкиМаджонга) + { + var позиция = мир.фишкиМаджонга[н]["📍"]; + var индекс = индексПозицииФишкиМаджонга(позиция); + мир.индексыФишекМаджонга[индекс] = н; + }; +}; + + +// // // // + + +ВыбратьФишкуМаджонга = мир => +{ + var номер = мир.фишкаМаджонгаДляВыбора; + // Отсекаем выбор одной и той же фишки. + if ( + мир.выбраннаяФишкаМаджонга && + мир.выбраннаяФишкаМаджонга == номер + ) { + return; + } + // Проверяем доступность с точки зрения правил Маджонга. + var позиция = мир.фишкиМаджонга[номер]["📍"]; + var индекс = индексПозицииФишкиМаджонга(позиция); + if (!фишкуМаджонгаМожноВыбрать(мир.индексыФишекМаджонга, индекс)) + { + return; + } + + мир.выбраннаяФишкаМаджонга = номер; + мир.выбранныеФишкиМаджонга.push(номер); + мир.уведомить("изменили выбранные фишки маджонга"); +}; + + +// // // // +// MARK: https://git.opengamestudio.org/MAOH/CEHMA/raw/branch/master/0000 +// // // // + + +// MARK: /🎬.js + + +const ОТСТУП_МЕЖДУ_ФИШКАМИ = 0.02; +const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5; + + +// // // // + + +РасположитьКамеруСцены = мир => +{ + var р = мир.размерПоляФишек; + var расстояние = р.макс.z - р.мин.z; + мир.камера.position.y = расстояние * КОЭФФИЦИЕНТ_ВЫСОТЫ; + мир.камера.position.z = расстояние; + мир.камера.lookAt(new THREE.Vector3(0, 0, 0)); +}; + + +// // // // + + +ЦентрироватьФишкиСцены = мир => +{ + // Возвращаем в центр. + мир.сценаМаджонга.position.x = 0; + мир.сценаМаджонга.position.z = 0; + + var р = мир.размерПоляФишек; + // Убираем пустоту слева. + мир.сценаМаджонга.position.x -= р.мин.x; + мир.сценаМаджонга.position.z -= р.мин.z; + // Центрируем остаток. + мир.сценаМаджонга.position.x -= (р.макс.x - р.мин.x) / 2; + мир.сценаМаджонга.position.z -= (р.макс.z - р.мин.z) / 2; +}; + + +// // // // + + +ПосчитатьРазмерПоляФишек = мир => +{ + var мин = { + "x": 1000000, + "z": 1000000, + }; + var макс = { + "x": 0, + "z": 0, + }; + for (var номер in мир.фишкиМаджонга) + { + const ф = мир.фишкиСцены[номер]; + if (ф.position.x < мин.x) + { + мин.x = ф.position.x; + } + if (ф.position.x > макс.x) + { + макс.x = ф.position.x; + } + if (ф.position.z < мин.z) + { + мин.z = ф.position.z; + } + if (ф.position.z > макс.z) + { + макс.z = ф.position.z; + } + } + + мир.размерПоляФишек = { + "мин": мин, + "макс": макс, + }; +}; + + +// // // // + + +ЗадатьМатериалыФишкамСцены = мир => +{ + for (var н in мир.фишкиМаджонга) + { + var ф = мир.фишкиСцены[н]; + var г = мир.фишкиМаджонга[н]["🚩"]; + var м = мир.материалыФишекСцены[г]; + ф.material = м; + } +}; + + + +// // // // + + +ПерезадатьФишкиСцены = мир => +{ + var фишка = мир.модельФишкиСцены; + var границы = фишка.geometry.boundingBox; + var размеры = [ + (границы.max.x - границы.min.x) / 2, + (границы.max.z - границы.min.z) / 2, + (границы.max.y - границы.min.y), + ]; + var отступ = мир.отступМеждуФишкамиСцены; + for (var номер in мир.фишкиМаджонга) + { + // Узел сцены. + var ф = мир.фишкиСцены[номер]; + ф.layers.set(0); + ф.userData = номер; + // Расположение. + var фм = мир.фишкиМаджонга[номер]; + var п = фм["📍"]; + var слой = п[0]; + var ряд = п[1]; + var столбец = п[2]; + ф.position.x = столбец * (размеры[0] + отступ); + ф.position.z = ряд * (размеры[1] + отступ); + ф.position.y = слой * (размеры[2] + отступ); + } +}; + + +// // // // + + +СкрытьФишкиСцены = мир => +{ + var фишки = мир.фишкиСцены; + for (var н in фишки) + { + var ф = фишки[н]; + ф.layers.set(1); + } +}; + + +// // // // + + +ДосоздатьФишкиСцены = мир => +{ + // Если фишек в сцене уже достаточно, то ничего не делаем. + if (мир.фишкиСцены.length >= мир.фишкиМаджонга.length) + { + return; + } + + var фишка = мир.модельФишкиСцены; + var колво = мир.фишкиМаджонга.length - мир.фишкиСцены.length; + for (var н = 0; н < колво; ++н) + { + var ф = фишка.clone(); + мир.фишкиСцены.push(ф); + мир.кореньСценыМаджонга.add(ф); + } +} + + +// // // // + + +ПодготовитьСценуМаджонга = мир => +{ + мир.отступМеждуФишкамиСцены = ОТСТУП_МЕЖДУ_ФИШКАМИ; + мир.сценаМаджонга = new THREE.Group(); + мир.фишкиСцены = []; +}; + + +// MARK: /🎬.череда + + +gitjs.мир.разобрать(` + +ручной пуск + подготовить сцену маджонга + +надо создать фишки в сцене +# засечь время Б + досоздать фишки сцены + скрыть фишки сцены +# засечь время Б + перезадать фишки сцены +# засечь время Б + посчитать размер поля фишек +# засечь время Б + центрировать фишки сцены +# засечь время Б + расположить камеру сцены +# засечь время Б + задать материалы фишкам сцены +# засечь время Б +# создать отладочную сферу в центре корня + +`); + + +// MARK: /📖.js + + +УдалитьФишкиСцены = мир => +{ + if (мир.сценаМаджонга.children.length) + { + мир.сценаМаджонга.remove(мир.кореньСценыМаджонга); + } + мир.кореньСценыМаджонга = new THREE.Group(); + мир.сценаМаджонга.add(мир.кореньСценыМаджонга); + мир.фишкиСцены = []; +}; + + +// // // // + + +СкрытьУбранныеФишкиВСцене = мир => +{ + for (var номер in мир.убранныеФишкиМаджонга) + { + var н = мир.убранныеФишкиМаджонга[номер]; + // Перемещаем фишку на другой слой для исключения из отрисовки и выбора. + var ф = мир.фишкиСцены[н]; + ф.layers.set(1); + } +} + + +// // // // + + +ВыделитьВыбранныеФишкиВСцене = мир => +{ + for (var номер in мир.выбранныеФишкиМаджонга) + { + var н = мир.выбранныеФишкиМаджонга[номер]; + var ф = мир.фишкиСцены[н]; + var г = мир.фишкиМаджонга[н]["🚩"]; + var м = мир.выбранныеМатериалыФишекСцены[г]; + ф.material = м; + } +}; + + +// // // // + + +СоздатьФишкиВСцене = мир => +{ + мир.уведомить("надо создать фишки в сцене"); +}; + + + +// // // // +// MARK: https://git.opengamestudio.org/MAOH/MOPMA/raw/branch/master/0000 +// // // // + + +// MARK: /ƒ.js + + +создатьОкно = (мир, id, файлHTML = null, файлCSS = null) => +{ + // Структура. + var окно = document.createElement("div"); + окно.id = id; + окно.style.display = "none"; + document.body.appendChild(окно); + // Вид. + if (файлHTML || файлCSS) + { + var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ); + if (файлHTML) + { + окно.innerHTML = м.содержимое[файлHTML]; + } + if (файлCSS) + { + добавитьCSS(м.содержимое[файлCSS]); + } + } + // Функциональность. + окно.плавно = new ПлавноОтобразитьСкрыть(окно); + + return окно; +}; + + +// // // // + + +добавитьCSS = содержимое => +{ + var вид = document.createElement("style"); + document.head.appendChild(вид); + вид.innerHTML = содержимое; + return вид; +}; + + +// MARK: /🎛️.css + + +модуль.содержимое["/🎛️.css"] = ` + +#окно-управления +{ + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} + +#кнопка-темы-отобразить +{ + position: fixed; + left: 0; + bottom: 1.25em; + font-size: 2em; + padding: 0.25em 0.25em; + margin-left: 0.33em; +} + +#кнопка-раскладки-отобразить +{ + position: fixed; + right: 0; + bottom: 1.25em; + font-size: 2em; + padding: 0.25em 0.25em; + margin-right: 0.33em; +} + +#кнопки-масштаба +{ + position: fixed; + right: 1em; + top: 3em; +} + +#счёт +{ + position: fixed; + top: 0; + margin-top: 0; + left: 50%; + transform: translateX(-50%); +} + +`; + + +// MARK: /🎛️.html + + +модуль.содержимое["/🎛️.html"] = ` + +🀄 +📍 + +
+ 🎳 ? + 🥅 ?/? +
+ +`; + + +// MARK: /🎞️.css + + +модуль.содержимое["/🎞️.css"] = ` + +#окно-подложка +{ + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + background-color: white; + pointer-events: none; +} + +`; + + +// MARK: /🎬.js + + +СкрытьОкноУправления = мир => +{ + мир.окноУправления.плавно.скрыть(); +}; + + +// // // // + + +ОтобразитьОкноУправления = мир => +{ + мир.окноУправления.плавно.отобразить(); +}; + + +// // // // + + +СкрытьОкноПодложку = мир => +{ + мир.окноПодложка.плавно.скрыть(); +}; + + +// // // // + + +ОтобразитьОкноПодложку = мир => +{ + мир.окноПодложка.плавно.отобразить(); +}; + + +// // // // + + +СкрытьОкноТем = мир => +{ + мир.окноТем.плавно.скрыть(); +}; + + +// // // // + + +ОтобразитьОкноТем = мир => +{ + мир.окноТем.плавно.отобразить(); +}; + + +// // // // + + +СкрытьОкноРаскладок = мир => +{ + мир.окноРаскладок.плавно.скрыть(); +}; + + +// // // // + + +ОтобразитьОкноРаскладок = мир => +{ + мир.окноРаскладок.плавно.отобразить(); +}; + + +// // // // + + +СоздатьОкноТем = мир => +{ + мир.окноТем = создатьОкно(мир, "окно-темы", "/🖼️.html", "/🖼️.css"); + мир.таблицаОкнаТем = new Таблица("окно-темы-список"); + $("#кнопка-темы-скрыть").click(function() { + мир.уведомить("кнопка темы скрыть"); + }); + мир.таблицаОкнаТем.выбор = (номер) => + { + // Игнорируем повторный выбор. + if ( + мир.номерВыбраннойТемыМаджонга && + мир.номерВыбраннойТемыМаджонга == номер + ) { + return; + } + + мир.номерВыбраннойТемыМаджонга = номер; + мир.уведомить("изменили номер выбранной темы маджонга"); + }; +}; + + +// // // // + + +СоздатьОкноРаскладок = мир => +{ + мир.окноРаскладок = создатьОкно(мир, "окно-раскладки", "/📍.html", "/📍.css"); + мир.таблицаОкнаРаскладок = new Таблица("окно-раскладки-список"); + $("#кнопка-раскладки-скрыть").click(function() { + мир.уведомить("кнопка раскладки скрыть"); + }); + мир.таблицаОкнаРаскладок.выбор = (номер) => + { + // Игнорируем повторный выбор. + if ( + мир.номерВыбраннойРаскладкиМаджонга && + мир.номерВыбраннойРаскладкиМаджонга == номер + ) { + return; + } + + мир.номерВыбраннойРаскладкиМаджонга = номер; + мир.уведомить("изменили номер выбранной раскладки маджонга"); + }; +}; + + +// // // // + + +СоздатьОкноПодложку = мир => +{ + мир.окноПодложка = создатьОкно(мир, "окно-подложка", null, "/🎞️.css") + мир.окноПодложка.плавно = new ПлавноОтобразитьСкрыть( + мир.окноПодложка, + { + "прозрачность": 0.5, + } + ); +}; + + +// // // // + + +СоздатьОкноУправления = мир => +{ + мир.окноУправления = создатьОкно(мир, "окно-управления", "/🎛️.html", "/🎛️.css") + $("#кнопка-раскладки-отобразить").click(function() { + мир.уведомить("кнопка раскладки отобразить"); + }); + $("#кнопка-темы-отобразить").click(function() { + мир.уведомить("кнопка темы отобразить"); + }); + $(`#увеличить-масштаб`).click(function() { + мир.уведомить("кнопка увеличения масштаба"); + }); + $(`#уменьшить-масштаб`).click(function() { + мир.уведомить("кнопка уменьшения масштаба"); + }); +}; + + +// // // // + + +ЗадатьСтилиМордыМаджонга = мир => +{ + var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ); + добавитьCSS(м.содержимое["/🙈.css"]); +}; + + +// MARK: /🎬.череда + + +gitjs.мир.разобрать(` + +ручной пуск + задать стили морды маджонга + создать окно управления + создать окно подложку + создать окно раскладок + создать окно тем + +кнопка раскладки отобразить + отобразить окно подложку + отобразить окно раскладок + скрыть окно управления +кнопка раскладки скрыть + скрыть окно подложку + скрыть окно раскладок + отобразить окно управления + +кнопка темы отобразить + отобразить окно подложку + отобразить окно тем + скрыть окно управления +кнопка темы скрыть + скрыть окно подложку + скрыть окно тем + отобразить окно управления + +`); + + +// MARK: /📍.css + + +модуль.содержимое["/📍.css"] = ` + +#окно-раскладки +{ + position: fixed; + left: 1em; + top: 3em; + bottom: 3em; + right: 1em; +} + +#окно-раскладки-заголовок +{ + float: right; +} + +#кнопка-раскладки-скрыть +{ + position: fixed; + right: 0; + bottom: 2em; + margin: 1em; +} + +`; + + +// MARK: /📍.html + + +модуль.содержимое["/📍.html"] = ` + +
+ Раскладки + ⚬ 键盘布局 ⚬ + Layouts +
+
+
+
+ + +`; + + +// MARK: /📖.js + + +ОтобразитьПоражение = мир => +{ + var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ); + var сообщение = м.содержимое["/😭.html"]; + UIkit.modal.alert(сообщение); +}; + + +// // // // + + +ОтобразитьПобеду = мир => +{ + var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ); + var сообщение = м.содержимое["/😀.html"]; + UIkit.modal.alert(сообщение); +}; + + +// // // // + + +ОтобразитьТекущееЗначениеМасштаба = мир => +{ + var масштаб = мир.масштаб * 100; + var сообщение = `🔍 ${масштаб}%`; + UIkit.notification({ + message: сообщение, + timeout: 500 + }); +}; + + +// // // // + + +ОтобразитьКоличествоФишекМаджонга = мир => +{ + $("#счёт-фишек").html(мир.количествоФишекМаджонга); +}; + + +// // // // + + +ОтобразитьКоличествоХодовВМаджонге = мир => +{ + $("#счёт-ходов").html(мир.количествоХодовВМаджонге); +}; + + +// // // // + + +ОтобразитьВыборТемыМаджонга = мир => +{ + var таблица = мир.таблицаОкнаТем; + // Очистить выбор. + for (var номер in таблица.строки) + { + var элемент = таблица.элемент(номер); + элемент.removeClass("выбранный-элемент-таблицы"); + } + // Задать выбор. + var элемент = таблица.элемент(мир.номерВыбраннойТемыМаджонга); + элемент.addClass("выбранный-элемент-таблицы"); +}; + + +// // // // + + +ЗадатьСписокТемМаджонга = мир => +{ + var список = мир.списокТемМаджонга; + + var номераНазвания = []; + for (var н in список) + { + var название = список[н]; + var номер = Number(н) + 1; + номераНазвания.push([номер, название]); + } + + мир.таблицаОкнаТем.задатьСтроки(номераНазвания); +}; + + +// // // // + + +ОтобразитьВыборРаскладкиМаджонга = мир => +{ + var таблица = мир.таблицаОкнаРаскладок; + // Очистить выбор. + for (var номер in таблица.строки) + { + var элемент = таблица.элемент(номер); + элемент.removeClass("выбранный-элемент-таблицы"); + } + // Задать выбор. + var элемент = таблица.элемент(мир.номерВыбраннойРаскладкиМаджонга); + элемент.addClass("выбранный-элемент-таблицы"); +}; + + +// // // // + + +ЗадатьСписокРаскладокМаджонга = мир => +{ + var список = мир.списокРаскладокМаджонга; + + var номераНазвания = []; + for (var н in список) + { + var название = список[н]; + var номер = Number(н) + 1; + номераНазвания.push([номер, название]); + } + + мир.таблицаОкнаРаскладок.задатьСтроки(номераНазвания); +}; + + +// // // // + + +ОтобразитьОкноУправления = мир => +{ + мир.окноУправления.плавно.отобразить(); +} + + +// MARK: /🖼️.css + + +модуль.содержимое["/🖼️.css"] = ` + +#окно-темы +{ + position: fixed; + left: 1em; + top: 3em; + bottom: 3em; + right: 1em; +} + +#окно-темы-заголовок +{ + float: left; +} + +#кнопка-темы-скрыть +{ + position: fixed; + left: 0; + bottom: 2em; + margin: 1em; +} + +#окно-темы-список-родитель +{ + float: right; +}; + +`; + + +// MARK: /🖼️.html + + +модуль.содержимое["/🖼️.html"] = ` + +
+ Темы + ⚬ 主题 ⚬ + Themes +
+
+
+
+ + +`; + + +// MARK: /😀.html + + +модуль.содержимое["/😀.html"] = ` + +
+ Победа + ⚬ + 胜利 + ⚬ + Victory +
+ +`; + + +// MARK: /😭.html + + +модуль.содержимое["/😭.html"] = ` + +
+ Поражение + ⚬ + 失败 + ⚬ + Defeat +
+ +`; + + +// MARK: /🙈.css + + +модуль.содержимое["/🙈.css"] = ` + +.окно-с-отступами +{ + position: fixed; + left: 1em; + top: 1em; + bottom: 1em; + right: 1em; +} + +.прокрутка +{ + overflow: auto; + height: 100%; +} + +.ширина-по-содержимому +{ + display: inline-block; +} + +.выбранный-элемент-таблицы +{ + background: #eeeeee; +} + +`; + + + // // // // // MARK: https://git.opengamestudio.org/MAOH/MAOH/raw/branch/master/0000 // // // // @@ -853,10 +2062,6 @@ gitjs.мир.разобрать(` # 启动时要加载的模块指针列表 # List of module pointers to load at startup - -https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/CEHMA/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/MOPMA/raw/branch/master/0000 https://git.opengamestudio.org/MAOH/PEEMA/raw/branch/master/0000 https://git.opengamestudio.org/MAOH/OTMA/raw/branch/master/0000 https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000 diff --git a/🙈.html b/🙈.html index 6ee0d93..c4430c1 100644 --- a/🙈.html +++ b/🙈.html @@ -3,6 +3,6 @@

Маджонг ⚬ 麻将 ⚬ Mahjong

🀄 МАОН

-

1.0.7

+

1.0.8