Browse Source

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

master
Главред | Glavred 3 years ago
parent
commit
033d123d7d
12 changed files with 324 additions and 140 deletions
  1. +4
    -5
      0000
  2. +0
    -33
      ⨐.js
  3. +16
    -30
      🎬.js
  4. +1
    -7
      🎬.череда
  5. +198
    -1
      🏁.js
  6. +25
    -2
      🏁.череда
  7. +4
    -2
      📦
  8. +69
    -0
      📦.js
  9. +7
    -0
      📦.череда
  10. +0
    -5
      🔄.js
  11. +0
    -31
      🙈.js
  12. +0
    -24
      🧱.js

+ 4
- 5
0000 View File

@@ -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
/🙈.html

+ 0
- 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 (откликПровал)
{
откликПровал();
}
}
}

+ 16
- 30
🎬.js View File

@@ -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," + структура;
};

+ 1
- 7
🎬.череда View File

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

+ 198
- 1
🏁.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 });

+ 25
- 2
🏁.череда View File

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

+ 4
- 2
📦 View File

@@ -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
- 0
📦.js 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
- 0
📦.череда View File

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

+ 0
- 5
🔄.js View File

@@ -1,8 +1,3 @@


// // // //


ПерезагрузитьПриложениеПослеОбновления = мир =>
{
window.location.reload(false);


+ 0
- 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," + структура;
};

+ 0
- 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() {
мир.уведомить("ручной пуск");
мир.уведомить("загрузили библиотеки приложения");
});
мир.модули.использовать(указатели);
};

Loading…
Cancel
Save