Изменения от Главреда ГитЖС | Changes of GitJS Glavred
This commit is contained in:
2
0000
2
0000
@@ -6,5 +6,7 @@ x /интерфейс|ui.js
|
|||||||
/интерфейс|ui.череда
|
/интерфейс|ui.череда
|
||||||
x /пуск|run.js
|
x /пуск|run.js
|
||||||
/пуск|run.череда
|
/пуск|run.череда
|
||||||
|
x /раскладка|layout.js
|
||||||
|
/раскладка|layout.череда
|
||||||
x /сцена|scene.js
|
x /сцена|scene.js
|
||||||
/сцена|scene.череда
|
/сцена|scene.череда
|
||||||
155
раскладка|layout.js
Normal file
155
раскладка|layout.js
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ВывестиПозицииРаскладкиKMahjongg = мир =>
|
||||||
|
{
|
||||||
|
console.debug("Позиции раскладки KMahjongg НАЧАЛО");
|
||||||
|
const позиции = мир.раскладкаKMahjongg.позиции;
|
||||||
|
for (var номер in позиции) {
|
||||||
|
const позиция = позиции[номер];
|
||||||
|
console.debug(позиция);
|
||||||
|
}
|
||||||
|
console.debug("Позиции раскладки KMahjongg КОНЕЦ");
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
РазобратьПозицииЭлементовРаскладкиKMahjongg = мир =>
|
||||||
|
{
|
||||||
|
const параметры = мир.раскладкаKMahjongg.параметры;
|
||||||
|
const строки = мир.раскладкаKMahjongg.строки;
|
||||||
|
var позиции = [];
|
||||||
|
for (var номерСлоя = 0; номерСлоя < параметры.глубина; ++номерСлоя)
|
||||||
|
{
|
||||||
|
console.debug("cлой", номерСлоя);
|
||||||
|
for (var ряд = 0; ряд < параметры.высота - 1; ++ряд)
|
||||||
|
{
|
||||||
|
for (var столбец = 0; столбец < параметры.ширина - 1; ++столбец)
|
||||||
|
{
|
||||||
|
const рядСлоя = ряд + (номерСлоя * параметры.высота);
|
||||||
|
if (
|
||||||
|
(строки[рядСлоя][столбец] == '1') &&
|
||||||
|
(строки[рядСлоя][столбец + 1] == '2') &&
|
||||||
|
(строки[рядСлоя + 1][столбец] == '4') &&
|
||||||
|
(строки[рядСлоя + 1][столбец + 1] == '3')
|
||||||
|
) {
|
||||||
|
позиции.push([номерСлоя, ряд, столбец]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
мир.раскладкаKMahjongg.позиции = позиции;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ВывестиПараметрыРаскладкиKMahjongg = мир =>
|
||||||
|
{
|
||||||
|
console.debug("Параметры раскладки KMahjongg", JSON.stringify(мир.раскладкаKMahjongg.параметры));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
РазобратьПараметрыРаскладкиKMahjongg = мир =>
|
||||||
|
{
|
||||||
|
var параметры = {
|
||||||
|
"ширина": 32,
|
||||||
|
"высота": 16,
|
||||||
|
"глубина": 0,
|
||||||
|
"версия": "1.0",
|
||||||
|
};
|
||||||
|
|
||||||
|
var префиксы = {
|
||||||
|
"версия": "kmahjongg-layout-v",
|
||||||
|
"глубина": "d",
|
||||||
|
"ширина": "w",
|
||||||
|
"высота": "h",
|
||||||
|
};
|
||||||
|
|
||||||
|
var удалитьЭлементов = 0;
|
||||||
|
var строки = мир.раскладкаKMahjongg.строки;
|
||||||
|
for (var номер in строки)
|
||||||
|
{
|
||||||
|
var строка = строки[номер];
|
||||||
|
// Версия.
|
||||||
|
if (строка.startsWith(префиксы.версия))
|
||||||
|
{
|
||||||
|
параметры.версия = строка.substring(префиксы.версия.length);
|
||||||
|
}
|
||||||
|
// Глубина.
|
||||||
|
else if (строка.startsWith(префиксы.глубина))
|
||||||
|
{
|
||||||
|
параметры.глубина = строка.substring(префиксы.глубина.length);
|
||||||
|
}
|
||||||
|
// Ширина.
|
||||||
|
else if (строка.startsWith(префиксы.ширина))
|
||||||
|
{
|
||||||
|
параметры.ширина = строка.substring(префиксы.ширина.length);
|
||||||
|
}
|
||||||
|
// Высота.
|
||||||
|
else if (строка.startsWith(префиксы.высота))
|
||||||
|
{
|
||||||
|
параметры.высота = строка.substring(префиксы.высота.length);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
удалитьЭлементов = номер;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
мир.раскладкаKMahjongg.строки.splice(0, удалитьЭлементов);
|
||||||
|
if (параметры.глубина == 0)
|
||||||
|
{
|
||||||
|
параметры.глубина = мир.раскладкаKMahjongg.строки.length / параметры.высота;
|
||||||
|
}
|
||||||
|
мир.раскладкаKMahjongg.параметры = параметры;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ПодготовитьРаскладкуKMahjonggКРазбору = мир =>
|
||||||
|
{
|
||||||
|
var строки = мир.раскладкаKMahjongg.содержимое.split(/\n/);
|
||||||
|
мир.раскладкаKMahjongg.строки = [];
|
||||||
|
for (var номер in строки)
|
||||||
|
{
|
||||||
|
var строка = строки[номер].trim();
|
||||||
|
// Пропускаем комментарии и пустые строки.
|
||||||
|
if (строка.startsWith("#") || !строка.length)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
мир.раскладкаKMahjongg.строки.push(строка);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
УведомитьОбОкончанииРазбораРаскладкиKMahjongg = мир =>
|
||||||
|
{
|
||||||
|
мир.уведомить("разобрали раскладку KMahjongg");
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
РазобратьРаскладкуKMahjongg = мир =>
|
||||||
|
{
|
||||||
|
мир.уведомить("надо разобрать раскладку KMahjongg");
|
||||||
|
};
|
||||||
|
|
||||||
7
раскладка|layout.череда
Normal file
7
раскладка|layout.череда
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
надо разобрать раскладку KMahjongg
|
||||||
|
подготовить раскладку KMahjongg к разбору
|
||||||
|
разобрать параметры раскладки KMahjongg
|
||||||
|
вывести параметры раскладки KMahjongg
|
||||||
|
разобрать позиции элементов раскладки KMahjongg
|
||||||
|
вывести позиции раскладки KMahjongg
|
||||||
|
уведомить об окончании разбора раскладки KMahjongg
|
||||||
@@ -1,23 +1,59 @@
|
|||||||
const ИМЯ = "ОМ | MB";
|
const ИМЯ = "ОМ | MB";
|
||||||
const БАЗА = "https://git.opengamestudio.org/mahjong/mahjong-modeli-models/raw/branch/master/";
|
|
||||||
const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | Mahjong resources";
|
const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | Mahjong resources";
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ВключитьКэшированиеРесурсовThreeJSДляЗагрузкиРесурсовИзМодулей = мир =>
|
ЦентрироватьСцену = мир =>
|
||||||
{
|
{
|
||||||
THREE.Cache.enabled = true;
|
// мир.корень.position
|
||||||
|
};
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ОтобразитьРаскладкуОднойФишкой = мир =>
|
||||||
|
{
|
||||||
|
var границы = мир.фишка.geometry.boundingBox;
|
||||||
|
var размеры = [
|
||||||
|
(границы.max.x - границы.min.x) / 2,
|
||||||
|
(границы.max.z - границы.min.z) / 2,
|
||||||
|
границы.max.y - границы.min.y,
|
||||||
|
];
|
||||||
|
|
||||||
|
const позиции = мир.раскладкаKMahjongg.позиции;
|
||||||
|
мир.фишки = [];
|
||||||
|
for (var номер in позиции)
|
||||||
|
{
|
||||||
|
var фишка = мир.фишка.clone();
|
||||||
|
мир.фишки.push(фишка);
|
||||||
|
мир.корень.add(фишка);
|
||||||
|
|
||||||
|
var позиция = позиции[номер];
|
||||||
|
var слой = позиция[0];
|
||||||
|
var ряд = позиция[1];
|
||||||
|
var столбец = позиция[2];
|
||||||
|
фишка.position.x = столбец * размеры[0];
|
||||||
|
фишка.position.z = ряд * размеры[1];
|
||||||
|
фишка.position.y = слой;
|
||||||
|
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
УбратьПереворотТекстурыФишки = мир =>
|
ЗагрузитьРаскладку = мир =>
|
||||||
{
|
{
|
||||||
мир.текстураФишки.flipY = false;
|
var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
|
||||||
|
//var ресурс = "/cat.layout";
|
||||||
|
var ресурс = "/X_shaped.layout";
|
||||||
|
var содержимое = модуль.содержимое[ресурс];
|
||||||
|
мир.раскладкаKMahjongg = {
|
||||||
|
"содержимое": содержимое,
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -26,8 +62,8 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга |
|
|||||||
|
|
||||||
ПовернутьФишку = мир =>
|
ПовернутьФишку = мир =>
|
||||||
{
|
{
|
||||||
мир.модельФишки.rotation.x += 0.03;
|
мир.фишка.rotation.x += 0.03;
|
||||||
мир.модельФишки.rotation.y += 0.02;
|
мир.фишка.rotation.y += 0.02;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -61,7 +97,7 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга |
|
|||||||
ПодготовитьСцену = мир =>
|
ПодготовитьСцену = мир =>
|
||||||
{
|
{
|
||||||
var коэффициент = 2;
|
var коэффициент = 2;
|
||||||
var расстояние = 5;
|
var расстояние = 20;
|
||||||
мир.камера.position.y = расстояние * коэффициент;
|
мир.камера.position.y = расстояние * коэффициент;
|
||||||
мир.камера.position.z = расстояние;
|
мир.камера.position.z = расстояние;
|
||||||
мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
|
мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
|
||||||
@@ -69,22 +105,19 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга |
|
|||||||
мир.свет = new THREE.DirectionalLight(0xffffff, 1);
|
мир.свет = new THREE.DirectionalLight(0xffffff, 1);
|
||||||
мир.свет.position.set(-0.5, 1, 0.5).normalize();
|
мир.свет.position.set(-0.5, 1, 0.5).normalize();
|
||||||
мир.сцена.add(мир.свет);
|
мир.сцена.add(мир.свет);
|
||||||
|
|
||||||
|
мир.корень = new THREE.Group();
|
||||||
|
мир.сцена.add(мир.корень);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьФишку = мир =>
|
ПодготовитьФишку = мир =>
|
||||||
{
|
{
|
||||||
мир.сцена.add(мир.модельФишки);
|
|
||||||
var материал = new THREE.MeshLambertMaterial({map: мир.текстураФишки});
|
var материал = new THREE.MeshLambertMaterial({map: мир.текстураФишки});
|
||||||
мир.модельФишки.traverse(function(ребёнок) {
|
мир.фишка.material = материал;
|
||||||
if (ребёнок.isMesh)
|
|
||||||
{
|
|
||||||
ребёнок.material = материал;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -102,6 +135,7 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга |
|
|||||||
адрес,
|
адрес,
|
||||||
function(текстура) {
|
function(текстура) {
|
||||||
мир.текстураФишки = текстура;
|
мир.текстураФишки = текстура;
|
||||||
|
мир.текстураФишки.flipY = false;
|
||||||
мир.уведомить("загрузили текстуру фишки из модуля");
|
мир.уведомить("загрузили текстуру фишки из модуля");
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
@@ -124,17 +158,24 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга |
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ЗагрузитьМодельФишки = мир =>
|
ЗагрузитьФишку = мир =>
|
||||||
{
|
{
|
||||||
var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
|
var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
|
||||||
var ресурс = "/фишка.gltf";
|
var ресурс = "/фишка.gltf";
|
||||||
var адрес = `${window.location.origin}${ресурс}`;
|
var адрес = `${window.location.origin}${ресурс}`;
|
||||||
|
THREE.Cache.enabled = true;
|
||||||
THREE.Cache.add(адрес, модуль.содержимое[ресурс]);
|
THREE.Cache.add(адрес, модуль.содержимое[ресурс]);
|
||||||
мир.загрузчикGLTF.load(
|
мир.загрузчикGLTF.load(
|
||||||
адрес,
|
адрес,
|
||||||
function(gltf) {
|
function(gltf) {
|
||||||
мир.модельФишки = gltf.scene;
|
// Вычленяем Mesh.
|
||||||
мир.уведомить("загрузили модель фишки");
|
gltf.scene.traverse(function(ребёнок) {
|
||||||
|
if (ребёнок.isMesh)
|
||||||
|
{
|
||||||
|
мир.фишка = ребёнок;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
мир.уведомить("загрузили фишку");
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
function(error) {
|
function(error) {
|
||||||
|
|||||||
@@ -5,14 +5,17 @@
|
|||||||
изменить размер отрисовщика ThreeJS
|
изменить размер отрисовщика ThreeJS
|
||||||
создать загрузчик GLTF
|
создать загрузчик GLTF
|
||||||
создать загрузчик текстур
|
создать загрузчик текстур
|
||||||
включить кэширование ресурсов ThreeJS для загрузки ресурсов из модулей
|
|
||||||
подготовить сцену
|
подготовить сцену
|
||||||
загрузить модель фишки
|
загрузить фишку
|
||||||
загрузили модель фишки
|
загрузили фишку
|
||||||
загрузить текстуру фишки из модуля
|
загрузить текстуру фишки из модуля
|
||||||
загрузили текстуру фишки из модуля
|
загрузили текстуру фишки из модуля
|
||||||
убрать переворот текстуры фишки
|
загрузить раскладку
|
||||||
создать фишку
|
разобрать раскладку KMahjongg
|
||||||
|
разобрали раскладку KMahjongg
|
||||||
|
подготовить фишку
|
||||||
|
отобразить раскладку одной фишкой
|
||||||
|
центрировать сцену
|
||||||
запустить отрисовку
|
запустить отрисовку
|
||||||
# запустить таймер поворота фишки
|
# запустить таймер поворота фишки
|
||||||
изменили размер окна браузера
|
изменили размер окна браузера
|
||||||
|
|||||||
Reference in New Issue
Block a user