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

This commit is contained in:
Главред | Glavred
2020-12-02 14:32:04 +03:00
parent e7a251cbe1
commit 033d123d7d
12 changed files with 324 additions and 140 deletions

7
0000
View File

@@ -1,16 +1,15 @@
МАОН МАОН
0.2.5 0.2.6
https://git.opengamestudio.org/KH/MAOH https://git.opengamestudio.org/KH/MAOH
x /⨐.js
x /🎬.js x /🎬.js
/🎬.череда /🎬.череда
/🏁.js /🏁.js
/🏁.череда /🏁.череда
/📦 /📦
x /📦.js
/📦.череда
x /🔄.js x /🔄.js
/🔄.череда /🔄.череда
/🙈.css /🙈.css
/🙈.html /🙈.html
x /🙈.js
x /🧱.js

33
⨐.js
View File

@@ -1,33 +0,0 @@
function сделатьПараллельно(мир, список, функция, откликУспех, откликПровал = null)
{
for (const номер in список)
{
функция(мир, список, номер, готово, провал);
}
var всего = 0;
function готово()
{
всего += 1;
if (всего == список.length)
{
откликУспех();
}
}
var провалУжеСообщили = false;
function провал()
{
if (провалУжеСообщили)
{
return;
}
провалУжеСообщили = true;
if (откликПровал)
{
откликПровал();
}
}
}

46
🎬.js
View File

@@ -1,40 +1,26 @@
ЗадатьЗаголовок = мир =>
// // // //
ОкончитьЗагрузкуМаджонга = мир =>
{ {
мир.уведомить("надо окончить загрузку маджонга"); document.title = "🀄 МАОН";
}; };
// // // // // // // //
ЗагрузитьЧередуОкончания = мир => ОтобразитьСтраницуЗагрузки = мир =>
{ {
var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬТОГО_МОДУЛЯ); var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬТОГО_МОДУЛЯ);
var содержимое = м.содержимое["/🏁.js"];
eval(содержимое); var вид = document.createElement("style");
м.исполнитьЧереду(мир, "/🏁.череда"); document.head.appendChild(вид);
}; вид.innerHTML = м.содержимое["/🙈.css"];
var структура = м.содержимое["/🙈.html"]
// // // // .replace(/\${версия}/g, м.версия);
// Вставляем содержимое в рамку, чтобы применяемые стили UIkit не
// дёргали надписи.
ПроверитьНаличиеОбновленийПриложения = мир => // https://stackoverflow.com/a/8322025
{ var рамка = "<iframe id='экран-загрузки' class='фон-экрана' frameBorder='0'></iframe>";
// Эта функция находится вне "/🔄.js", т.к. "/🔄.js" отключаем, document.body.insertAdjacentHTML("afterbegin", рамка);
// отчего этой функции просто не будет в пространстве имён. document.getElementById("экран-загрузки").src = "data:text/html;charset=utf-8," + структура;
var событие = "надо обновить приложение при наличии обновлений";
if (событие in мир.события)
{
мир.уведомить(событие);
}
else
{
мир.уведомить("обновления приложения отсутствуют");
}
}; };

View File

@@ -1,9 +1,3 @@
пуск пуск
задать заголовок задать заголовок
отобразить страницу загрузки маджонга отобразить страницу загрузки
проверить наличие обновлений приложения
обновления приложения отсутствуют
загрузить библиотеки приложения
загрузили библиотеки приложения
загрузить череду окончания
окончить загрузку маджонга

199
🏁.js
View File

@@ -1,9 +1,206 @@
const РЕСУРСЫ = "https://git.opengamestudio.org/PuCOBATEJlb/PECYPCbl/raw/branch/master/0000";
const ФИШКА = "/фишка.gltf";
const ТЕМА_ОТЛАДОЧНАЯ = "https://git.opengamestudio.org/MAOH/MAOH_TEMA_OTAK/raw/branch/master/0000";
// // // // // // // //
ПлавноУбратьСтраницуЗагрузкиМаджонгаИСкрытьКрутилку = мир => СкрытьУбранныеФишки = мир =>
{
for (var номер in мир.убранныеФишкиМаджонга)
{
var н = мир.убранныеФишкиМаджонга[номер];
// Перемещаем фишку на другой слой для исключения её из отрисовки и выбора.
var ф = мир.фишки[н];
ф.layers.set(1);
}
}
// // // //
ЗадатьФишкуДляВыбора = мир =>
{
var номер = мир.выбранныйУзел.userData;
мир.фишкаМаджонгаДляВыбора = номер;
}
// // // //
ПодготовитьФишкиКВыбору = мир =>
{
мир.выборныеУзлы = мир.фишки;
мир.задержкаОтображенияВыбранныхФишек = 0;
};
// // // //
ВыделитьВыбранныеФишки = мир =>
{
for (var номер in мир.выбранныеФишкиМаджонга)
{
var н = мир.выбранныеФишкиМаджонга[номер];
var ф = мир.фишки[н];
var г = мир.фишкиМаджонга[н]["🚩"];
var м = мир.выбранныеМатериалы[г];
ф.material = м;
}
};
// // // //
ЗадатьМатериалыФишкам = мир =>
{
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 отступ = 0.02;
мир.фишки = [];
for (var номер in мир.фишкиМаджонга)
{
// Узел сцены.
var фм = мир.фишкиМаджонга[номер];
var ф = фишка.clone();
ф.userData = номер;
мир.фишки.push(ф);
мир.сцена.add(ф);
// Расположение.
var позиция = фм["📍"];
/*
var слой = позиция[0];
var ряд = позиция[1];
var столбец = позиция[2];
*/
var слой = 0;
var ряд = позиция[0];
var столбец = позиция[1];
ф.position.x = столбец * (размеры[0] + отступ);
ф.position.z = ряд * (размеры[1] + отступ);
ф.position.y = слой;
}
};
// // // //
ЗадатьФишки = мир =>
{
мир.фишкиМаджонга = [
{
"📍": [0, 0],
"🚩": 0,
},
{
"📍": [2, 0],
"🚩": 0,
},
{
"📍": [0, 2],
"🚩": 1,
},
];
};
// // // //
СоздатьПримерСцены = мир =>
{
мир.сцена.background = new THREE.Color(0xFFFFFF);
мир.камера.position.y = 10;
мир.камера.position.z = 5;
мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
мир.свет.position.set(-0.5, 1, 0.5).normalize();
мир.сцена.add(мир.свет);
};
// // // //
СоздатьМатериалыФишек = мир =>
{
мир.материалы = [];
мир.выбранныеМатериалы = [];
var текстуры = мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ];
for (var имя in текстуры)
{
var текстура = текстуры[имя];
var материал = new THREE.MeshLambertMaterial({
map: текстура,
color: new THREE.Color(0xAAAAAA),
});
мир.материалы.push(материал);
var выбранныйМатериал = new THREE.MeshLambertMaterial({
map: текстура,
color: new THREE.Color(0xFFFFFF),
});
мир.выбранныеМатериалы.push(выбранныйМатериал);
}
};
// // // //
ПодготовитьсяКЗагрузкеРесурсов = мир =>
{
мир.полигональныеСетки = {
[РЕСУРСЫ]: {
[ФИШКА]: null,
},
};
мир.текстуры = {
[ТЕМА_ОТЛАДОЧНАЯ]: { },
};
var м = мир.модули.модульПоУказателю(ТЕМА_ОТЛАДОЧНАЯ);
var файлы = Object.keys(м.структура).sort();
for (var номер in файлы)
{
var файл = файлы[номер];
мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ][файл] = null;
}
};
// // // //
ПлавноУбратьСтраницуЗагрузкиИСкрытьКрутилку = мир =>
{ {
плавноСкрытьИУдалить("экран-загрузки", { "задержка": 0.4 }); плавноСкрытьИУдалить("экран-загрузки", { "задержка": 0.4 });
плавноСкрыть("крутилка", { "задержка": 0.4 }); плавноСкрыть("крутилка", { "задержка": 0.4 });

View File

@@ -1,2 +1,25 @@
надо окончить загрузку маджонга надо окончить загрузку приложения
плавно убрать страницу загрузки маджонга и скрыть крутилку плавно убрать страницу загрузки и скрыть крутилку
подготовиться к загрузке ресурсов
загрузить полигональные сетки
загрузили полигональные сетки
загрузить текстуры
загрузили текстуры
создать материалы фишек
создать пример сцены
подготовить механику маджонга
задать фишки
создать фишки
задать материалы фишкам
подготовить фишки к выбору
нажатие в рисователе
выбрать узел сцены
выбрали узел сцены
задать фишку для выбора
выбрать фишку маджонга
изменили выбранные фишки маджонга
задать материалы фишкам
выделить выбранные фишки
убрали фишки маджонга
скрыть убранные фишки

6
📦
View File

@@ -4,7 +4,9 @@
https://bitbucket.org/gitjs/jquery/raw/3.5.1/0000 https://bitbucket.org/gitjs/jquery/raw/3.5.1/0000
https://bitbucket.org/gitjs/uikit/raw/3.2.0/0000 https://bitbucket.org/gitjs/uikit/raw/3.2.0/0000
https://git.opengamestudio.org/mahjong/base64/raw/branch/master/0000
https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout/raw/branch/master/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/mahjong/povtorniy-repeating-ui/raw/branch/master/0000
https://git.opengamestudio.org/KH/PuCOBATEJlb-renderer/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/MAOH_TEMA_OTAK/raw/branch/master/0000
https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000

69
📦.js Normal file
View File

@@ -0,0 +1,69 @@
ОкончитьЗагрузкуПриложения = мир =>
{
мир.уведомить("надо окончить загрузку приложения");
};
// // // //
ЗагрузитьОкончание = мир =>
{
var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬТОГО_МОДУЛЯ);
eval(м.содержимое["/🏁.js"]);
мир.разобрать(м.содержимое["/🏁.череда"]);
};
// // // //
ЗагрузитьБиблиотекиПриложения = мир =>
{
var указатели = [];
var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬТОГО_МОДУЛЯ);
var содержимое = м.содержимое["/📦"];
var строки = содержимое.split(/\n/);
for (var номер in строки)
{
var строка = строки[номер];
if (!строка.startsWith("#") && строка.length)
{
указатели.push(строка);
}
}
if (указатели.length)
{
var сообщение = "Загрузка библиотек ⚬ 加载库 ⚬ Loading libraries";
console.debug(сообщение, указатели);
мир.модули.использовали.подписатьРаз(function() {
мир.уведомить("ручной пуск");
мир.уведомить("загрузили библиотеки приложения");
});
мир.модули.использовать(указатели);
}
else
{
мир.уведомить("загрузили библиотеки приложения");
}
};
// // // //
ПроверитьНаличиеОбновленийПриложения = мир =>
{
// Эта функция находится вне "/🔄.js", т.к. "/🔄.js" отключаем,
// отчего этой функции просто не будет в пространстве имён.
var событие = "надо обновить приложение при наличии обновлений";
if (событие in мир.события)
{
мир.уведомить(событие);
}
else
{
мир.уведомить("обновления приложения отсутствуют");
}
};

7
📦.череда Normal file
View File

@@ -0,0 +1,7 @@
пуск
проверить наличие обновлений приложения
обновления приложения отсутствуют
загрузить библиотеки приложения
загрузили библиотеки приложения
загрузить окончание
окончить загрузку приложения

View File

@@ -1,8 +1,3 @@
// // // //
ПерезагрузитьПриложениеПослеОбновления = мир => ПерезагрузитьПриложениеПослеОбновления = мир =>
{ {
window.location.reload(false); window.location.reload(false);

31
🙈.js
View File

@@ -1,31 +0,0 @@
// // // //
ЗадатьЗаголовок = мир =>
{
document.title = "🀄 МАОН";
};
// // // //
ОтобразитьСтраницуЗагрузкиМаджонга = мир =>
{
var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬТОГО_МОДУЛЯ);
var вид = document.createElement("style");
document.head.appendChild(вид);
вид.innerHTML = м.содержимое["/🙈.css"];
var структура = м.содержимое["/🙈.html"]
.replace(/\${версия}/g, м.версия);
// Вставляем содержимое в рамку, чтобы применяемые стили UIkit не
// дёргали надписи.
// https://stackoverflow.com/a/8322025
var рамка = "<iframe id='экран-загрузки' class='фон-экрана' frameBorder='0'></iframe>";
document.body.insertAdjacentHTML("afterbegin", рамка);
document.getElementById("экран-загрузки").src = "data:text/html;charset=utf-8," + структура;
};

24
🧱.js
View File

@@ -1,24 +0,0 @@
ЗагрузитьБиблиотекиПриложения = мир =>
{
var указатели = [];
var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬТОГО_МОДУЛЯ);
var содержимое = м.содержимое["/📦"];
var строки = содержимое.split(/\n/);
for (var номер in строки)
{
var строка = строки[номер];
if (!строка.startsWith("#") && строка.length)
{
указатели.push(строка);
}
}
var сообщение = "Загрузка библиотек ⚬ 加载库 ⚬ Loading libraries";
console.debug(сообщение, указатели);
мир.модули.использовали.подписатьРаз(function() {
мир.уведомить("ручной пуск");
мир.уведомить("загрузили библиотеки приложения");
});
мир.модули.использовать(указатели);
};