Изменения от Главреда ГитЖС | Changes of GitJS Glavred
This commit is contained in:
180
фишки|tiles.js
Normal file
180
фишки|tiles.js
Normal 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(материал);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user