// // // // УведомитьОСозданииФишекВСцене = мир => { мир.уведомить("создали фишки в сцене"); }; // // // // ОкраситьВыбранныеФишки = мир => { // Очищаем цвета всех фишек. 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(материал); } };