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

This commit is contained in:
Главред | Glavred
2020-09-17 16:42:22 +03:00
parent 268cba8466
commit b7de06d515
7 changed files with 316 additions and 10 deletions

180
фишки|tiles.js Normal file
View File

@@ -0,0 +1,180 @@
// // // //
УведомитьОСозданииФишекВСцене = мир =>
{
мир.уведомить("создали фишки в сцене");
};
// // // //
ОкраситьВыбранныеФишки = мир =>
{
// Очищаем цвета всех фишек.
for (var номер in мир.фишки)
{
var фишка = мир.фишки[номер];
var группа = мир.группыФишек[номер];
var материал = мир.материалыФишек[группа];
фишка.material = материал;
}
// Окрашиваем выбранные фишки.
for (var id in мир.номераВыбранныхФишек)
{
var номер = мир.номераВыбранныхФишек[id];
var фишка = мир.фишки[номер];
var группа = мир.группыФишек[номер];
var материал = мир.материалыВыбранныхФишек[группа];
фишка.material = материал;
}
};
// // // //
ВывестиВыбранныеФишки = мир =>
{
var номер = мир.номерВыбраннойФишки;
var группа = мир.группыФишек[номер];
console.debug(`Выбрали фишку. номер: '${номер}' группа: '${группа}'`);
console.debug("Номера выбранных фишек", мир.номераВыбранныхФишек);
};
// // // //
ВыбратьФишкуВКоординатахНажатия = мир =>
{
мир.ловецНажатий.setFromCamera(мир.позицияНажатия, мир.камера);
var пересечения = мир.ловецНажатий.intersectObjects(мир.корень.children);
if (пересечения.length)
{
var фишка = пересечения[0].object;
var номер = номерФишки(мир.фишки, фишка.id);
if (номер)
{
мир.номерВыбраннойФишки = номер;
мир.номераВыбранныхФишек.push(номер);
мир.уведомить("выбор фишки");
}
}
};
// // // //
СоздатьМатериалыВыбранныхФишекОтладочнойТемы = мир =>
{
мир.материалыВыбранныхФишек = [];
for (var номер in мир.материалыФишек)
{
var материал = мир.материалыФишек[номер].clone();
материал.color = new THREE.Color(0xff0000);
мир.материалыВыбранныхФишек.push(материал);
}
};
// // // //
ПодготовитьВыборФишек = мир =>
{
мир.номераВыбранныхФишек = [];
};
// // // //
ЗадатьМатериалыФишкамПоГруппам = мир =>
{
for (var номер in мир.группыФишек)
{
var группа = мир.группыФишек[номер];
var материал = мир.материалыФишек[группа];
фишка = мир.фишки[номер];
фишка.material = материал;
}
};
// // // //
СоздатьГруппыФишек = мир =>
{
мир.группыФишек = [];
const позиции = мир.раскладкаKMahjongg.позиции;
var группа = 0;
for (var номер in позиции)
{
мир.группыФишек.push(группа);
// Меняем группу каждую пару фишек.
if (номер % 2 == 1)
{
++группа;
// Начинаем группы заново, как только они заканчиваются.
if (группа >= 42)
{
группа = 0;
}
}
}
};
// // // //
СоздатьУзлыФишек = мир =>
{
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 = слой;
}
};
// // // //
СоздатьМатериалыФишекОтладочнойТемы = мир =>
{
мир.материалыФишек = [];
var тема = "отладочная|debug";
for (var номер = 1; номер <= 42; ++номер)
{
var текстура = мир.текстурыТемФишек[тема][номер];
var материал = new THREE.MeshLambertMaterial({map: текстура});
мир.материалыФишек.push(материал);
}
};