Files
__01/🏁.js

228 lines
6.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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";
// // // //
СкрытьПаруВыбранныхФишекПослеЗадержки = мир =>
{
setTimeout(
function() {
for (var номер in мир.выбранныеФишки)
{
var н = мир.выбранныеФишки[номер];
// Перемещаем фишку на другой слой для исключения её из отрисовки и выбора.
var ф = мир.фишки[н];
ф.layers.set(1);
}
мир.выбранныеФишки = [];
},
100
);
}
// // // //
СнятьВыделениеСПервойВыбраннойФишки = мир =>
{
var н = мир.выбранныеФишки.shift();
var ф = мир.фишки[н];
var г = мир.группы[н];
var м = мир.материалы[г];
ф.material = м;
}
// // // //
СравнитьПаруВыбранныхФишек = мир =>
{
// Удостоверяемся в наличии двух фишек.
if (мир.выбранныеФишки.length != 2)
{
return;
}
var н1 = мир.выбранныеФишки[0];
var н2 = мир.выбранныеФишки[1];
var г1 = мир.группы[н1];
var г2 = мир.группы[н2];
if (г1 == г2)
{
мир.уведомить("выбрали пару фишек одной группы");
}
else
{
мир.уведомить("выбрали пару фишек разных групп");
}
};
// // // //
ВыделитьВыбраннуюФишку = мир =>
{
var н = мир.выбраннаяФишка;
var ф = мир.фишки[н];
var г = мир.группы[н];
var м = мир.выбранныеМатериалы[г];
ф.material = м;
};
// // // //
ВыбратьФишку = мир =>
{
var номер = мир.выбранныйУзел.userData;
// Отсекаем выбор одной и той же фишки.
if (мир.выбраннаяФишка && мир.выбраннаяФишка == номер)
{
return;
}
мир.выбраннаяФишка = номер;
мир.выбранныеФишки.push(номер);
мир.уведомить("выбрали фишку");
};
// // // //
ПодготовитьФишкиКВыбору = мир =>
{
мир.выборныеУзлы = мир.фишки;
мир.выбранныеФишки = [];
мир.выбраннаяФишка = null;
};
// // // //
НазначитьФишкамМатериалы = мир =>
{
for (var н in мир.фишки)
{
var ф = мир.фишки[н];
var г = мир.группы[н];
var м = мир.материалы[г];
ф.material = м;
}
};
// // // //
СоздатьГруппы = мир =>
{
мир.группы = [];
var группа = 0;
for (var номер in мир.фишки)
{
мир.группы.push(группа);
if (номер % 2)
{
++группа;
}
}
};
// // // //
СоздатьФишки = мир =>
{
мир.фишка = мир.полигональныеСетки[РЕСУРСЫ][ФИШКА];
мир.фишки = [];
var позиции = [-2, 0, 2];
for (var номер in позиции)
{
var позиция = позиции[номер];
var фишка = мир.фишка.clone();
фишка.userData = номер;
фишка.position.x = позиция;
мир.фишки.push(фишка);
мир.сцена.add(фишка);
}
};
// // // //
СоздатьПримерСцены = мир =>
{
мир.сцена.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;
}
};
// // // //
СкрытьКрутилку = мир =>
{
document.getElementById("крутилка").style.display = "none";
};