Изменения от Главреда ГитЖС | Changes of GitJS Glavred
This commit is contained in:
7
0000
7
0000
@@ -1,16 +1,15 @@
|
||||
МАОН
|
||||
0.2.5
|
||||
0.2.6
|
||||
https://git.opengamestudio.org/KH/MAOH
|
||||
|
||||
x /⨐.js
|
||||
x /🎬.js
|
||||
/🎬.череда
|
||||
/🏁.js
|
||||
/🏁.череда
|
||||
/📦
|
||||
x /📦.js
|
||||
/📦.череда
|
||||
x /🔄.js
|
||||
/🔄.череда
|
||||
/🙈.css
|
||||
/🙈.html
|
||||
x /🙈.js
|
||||
x /🧱.js
|
||||
33
⨐.js
33
⨐.js
@@ -1,33 +0,0 @@
|
||||
function сделатьПараллельно(мир, список, функция, откликУспех, откликПровал = null)
|
||||
{
|
||||
for (const номер in список)
|
||||
{
|
||||
функция(мир, список, номер, готово, провал);
|
||||
}
|
||||
|
||||
var всего = 0;
|
||||
|
||||
function готово()
|
||||
{
|
||||
всего += 1;
|
||||
if (всего == список.length)
|
||||
{
|
||||
откликУспех();
|
||||
}
|
||||
}
|
||||
|
||||
var провалУжеСообщили = false;
|
||||
|
||||
function провал()
|
||||
{
|
||||
if (провалУжеСообщили)
|
||||
{
|
||||
return;
|
||||
}
|
||||
провалУжеСообщили = true;
|
||||
if (откликПровал)
|
||||
{
|
||||
откликПровал();
|
||||
}
|
||||
}
|
||||
}
|
||||
46
🎬.js
46
🎬.js
@@ -1,40 +1,26 @@
|
||||
|
||||
|
||||
// // // //
|
||||
|
||||
|
||||
ОкончитьЗагрузкуМаджонга = мир =>
|
||||
ЗадатьЗаголовок = мир =>
|
||||
{
|
||||
мир.уведомить("надо окончить загрузку маджонга");
|
||||
document.title = "🀄 МАОН";
|
||||
};
|
||||
|
||||
|
||||
// // // //
|
||||
|
||||
|
||||
ЗагрузитьЧередуОкончания = мир =>
|
||||
ОтобразитьСтраницуЗагрузки = мир =>
|
||||
{
|
||||
var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
|
||||
var содержимое = м.содержимое["/🏁.js"];
|
||||
eval(содержимое);
|
||||
м.исполнитьЧереду(мир, "/🏁.череда");
|
||||
};
|
||||
|
||||
|
||||
// // // //
|
||||
|
||||
|
||||
ПроверитьНаличиеОбновленийПриложения = мир =>
|
||||
{
|
||||
// Эта функция находится вне "/🔄.js", т.к. "/🔄.js" отключаем,
|
||||
// отчего этой функции просто не будет в пространстве имён.
|
||||
var событие = "надо обновить приложение при наличии обновлений";
|
||||
if (событие in мир.события)
|
||||
{
|
||||
мир.уведомить(событие);
|
||||
}
|
||||
else
|
||||
{
|
||||
мир.уведомить("обновления приложения отсутствуют");
|
||||
}
|
||||
|
||||
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," + структура;
|
||||
};
|
||||
8
🎬.череда
8
🎬.череда
@@ -1,9 +1,3 @@
|
||||
пуск
|
||||
задать заголовок
|
||||
отобразить страницу загрузки маджонга
|
||||
проверить наличие обновлений приложения
|
||||
обновления приложения отсутствуют
|
||||
загрузить библиотеки приложения
|
||||
загрузили библиотеки приложения
|
||||
загрузить череду окончания
|
||||
окончить загрузку маджонга
|
||||
отобразить страницу загрузки
|
||||
199
🏁.js
199
🏁.js
@@ -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 });
|
||||
|
||||
27
🏁.череда
27
🏁.череда
@@ -1,2 +1,25 @@
|
||||
надо окончить загрузку маджонга
|
||||
плавно убрать страницу загрузки маджонга и скрыть крутилку
|
||||
надо окончить загрузку приложения
|
||||
плавно убрать страницу загрузки и скрыть крутилку
|
||||
подготовиться к загрузке ресурсов
|
||||
загрузить полигональные сетки
|
||||
загрузили полигональные сетки
|
||||
загрузить текстуры
|
||||
загрузили текстуры
|
||||
создать материалы фишек
|
||||
создать пример сцены
|
||||
подготовить механику маджонга
|
||||
задать фишки
|
||||
создать фишки
|
||||
задать материалы фишкам
|
||||
подготовить фишки к выбору
|
||||
|
||||
нажатие в рисователе
|
||||
выбрать узел сцены
|
||||
выбрали узел сцены
|
||||
задать фишку для выбора
|
||||
выбрать фишку маджонга
|
||||
изменили выбранные фишки маджонга
|
||||
задать материалы фишкам
|
||||
выделить выбранные фишки
|
||||
убрали фишки маджонга
|
||||
скрыть убранные фишки
|
||||
6
📦
6
📦
@@ -4,7 +4,9 @@
|
||||
|
||||
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/base64/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/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
69
📦.js
Normal 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
7
📦.череда
Normal file
@@ -0,0 +1,7 @@
|
||||
пуск
|
||||
проверить наличие обновлений приложения
|
||||
обновления приложения отсутствуют
|
||||
загрузить библиотеки приложения
|
||||
загрузили библиотеки приложения
|
||||
загрузить окончание
|
||||
окончить загрузку приложения
|
||||
5
🔄.js
5
🔄.js
@@ -1,8 +1,3 @@
|
||||
|
||||
|
||||
// // // //
|
||||
|
||||
|
||||
ПерезагрузитьПриложениеПослеОбновления = мир =>
|
||||
{
|
||||
window.location.reload(false);
|
||||
|
||||
31
🙈.js
31
🙈.js
@@ -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
24
🧱.js
@@ -1,24 +0,0 @@
|
||||
ЗагрузитьБиблиотекиПриложения = мир =>
|
||||
{
|
||||
var указатели = [];
|
||||
var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
|
||||
var содержимое = м.содержимое["/📦"];
|
||||
var строки = содержимое.split(/\n/);
|
||||
for (var номер in строки)
|
||||
{
|
||||
var строка = строки[номер];
|
||||
if (!строка.startsWith("#") && строка.length)
|
||||
{
|
||||
указатели.push(строка);
|
||||
}
|
||||
}
|
||||
|
||||
var сообщение = "Загрузка библиотек ⚬ 加载库 ⚬ Loading libraries";
|
||||
console.debug(сообщение, указатели);
|
||||
|
||||
мир.модули.использовали.подписатьРаз(function() {
|
||||
мир.уведомить("ручной пуск");
|
||||
мир.уведомить("загрузили библиотеки приложения");
|
||||
});
|
||||
мир.модули.использовать(указатели);
|
||||
};
|
||||
Reference in New Issue
Block a user