Browse Source

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

master
Главред | Glavred 3 years ago
parent
commit
854806b474
5 changed files with 48 additions and 186 deletions
  1. +1
    -2
      0000
  2. +10
    -0
      ⨐.js
  3. +0
    -153
      🎬.js
  4. +0
    -11
      🎬.череда
  5. +37
    -20
      📖.js

+ 1
- 2
0000 View File

@@ -2,6 +2,5 @@
0.1.0
https://git.opengamestudio.org/MAOH/OTMA

x /🎬.js
/🎬.череда
x /⨐.js
x /📖.js

+ 10
- 0
⨐.js View File

@@ -0,0 +1,10 @@
засечьВремя = (мир, маркер) =>
{
if (!мир.времена) {
мир.времена = [];
}
мир.времена.push({
"время": new Date(),
"маркер": маркер,
});
};

+ 0
- 153
🎬.js View File

@@ -1,153 +0,0 @@
const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5;


СоздатьОтладочнуюСферуВЦентреКорня = мир =>
{
var форма = new THREE.SphereBufferGeometry(0.5, 32, 32);
var сфера = new THREE.Mesh(форма);
сфера.material = new THREE.MeshLambertMaterial({ color: 0xAA00AA });
мир.кореньСценыМаджонга.add(сфера);
};


// // // //


РасположитьКамеруСцены = мир =>
{
var р = мир.размерПоляФишек;
var расстояние = р.макс.z - р.мин.z;
мир.камера.position.y = расстояние * КОЭФФИЦИЕНТ_ВЫСОТЫ;
мир.камера.position.z = расстояние;
мир.камера.lookAt(new THREE.Vector3(0, 0, 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 = м;
}
};


// // // //


УбратьСтарыеФишкиСцены = мир =>
{
if (мир.сценаМаджонга.children.length)
{
мир.сценаМаджонга.remove(мир.кореньСценыМаджонга);
}
мир.кореньСценыМаджонга = new THREE.Group();
мир.сценаМаджонга.add(мир.кореньСценыМаджонга);
мир.фишкиСцены = [];
};


// // // //


СоздатьНовыеФишкиСцены = мир =>
{
var фишка = мир.модельФишкиСцены;
var границы = фишка.geometry.boundingBox;
var размеры = [
(границы.max.x - границы.min.x) / 2,
(границы.max.z - границы.min.z) / 2,
(границы.max.y - границы.min.y),
];
var отступ = мир.отступМеждуФишкамиСцены;

for (var номер in мир.фишкиМаджонга)
{
// Узел сцены.
var фм = мир.фишкиМаджонга[номер];
var ф = фишка.clone();
ф.userData = номер;
мир.фишкиСцены.push(ф);
мир.кореньСценыМаджонга.add(ф);
// Расположение.
var п = фм["📍"];
var слой = п[0];
var ряд = п[1];
var столбец = п[2];
ф.position.x = столбец * (размеры[0] + отступ);
ф.position.z = ряд * (размеры[1] + отступ);
ф.position.y = слой * (размеры[2] + отступ);
}
};


// // // //


ПодготовитьСценуМаджонга = мир =>
{
мир.сценаМаджонга = new THREE.Group();
мир.отступМеждуФишкамиСцены = 0.02;
};

+ 0
- 11
🎬.череда View File

@@ -1,11 +0,0 @@
ручной пуск
подготовить сцену маджонга

надо создать фишки в сцене
убрать старые фишки сцены
создать новые фишки сцены
посчитать размер поля фишек
центрировать фишки сцены
расположить камеру сцены
задать материалы фишкам сцены
# создать отладочную сферу в центре корня

+ 37
- 20
📖.js View File

@@ -1,35 +1,52 @@
СкрытьУбранныеФишкиВСцене = мир =>
{
for (var номер in мир.убранныеФишкиМаджонга)
{
var н = мир.убранныеФишкиМаджонга[номер];
// Перемещаем фишку на другой слой для исключения из отрисовки и выбора.
var ф = мир.фишкиСцены[н];
ф.layers.set(1);
}
}
const ДЛИТЕЛЬНОСТЬ_ОТОБРАЖЕНИЯ = 3000;


// // // //


ВыделитьВыбранныеФишкиВСцене = мир =>
ВывестиВремена = мир =>
{
for (var номер in мир.выбранныеФишкиМаджонга)
var сообщения = [];
for (var н in мир.времена)
{
var н = мир.выбранныеФишкиМаджонга[номер];
var ф = мир.фишкиСцены[н];
var г = мир.фишкиМаджонга[н]["🚩"];
var м = мир.выбранныеМатериалыФишекСцены[г];
ф.material = м;
var э = мир.времена[н];
if (н >= 1)
{
var разница = э.время - мир.времена[н - 1].время;
var сообщение = `${э.маркер}`;
if (разница > 0)
{
сообщение = `${э.маркер} ${разница}`;
}
console.debug(сообщение);
сообщения.push(сообщение);
}

}
мир.времена = [];
UIkit.notification(сообщения.join(", "), {timeout: ДЛИТЕЛЬНОСТЬ_ОТОБРАЖЕНИЯ});
};


// // // //


СоздатьФишкиВСцене = мир =>
ЗасечьВремяД = мир =>
{
засечьВремя(мир, "Д");
};
ЗасечьВремяГ = мир =>
{
засечьВремя(мир, "Г");
};
ЗасечьВремяВ = мир =>
{
засечьВремя(мир, "В");
};
ЗасечьВремяБ = мир =>
{
засечьВремя(мир, "Б");
};
ЗасечьВремяА = мир =>
{
мир.уведомить("надо создать фишки в сцене");
засечьВремя(мир, "А");
};

Loading…
Cancel
Save