diff --git a/0000 b/0000 index 035a2ac..95af9ba 100644 --- a/0000 +++ b/0000 @@ -9,4 +9,5 @@ x /пуск|run.js x /сцена|scene.js /сцена|scene.череда x /тема|theme.js -/тема|theme.череда \ No newline at end of file +/тема|theme.череда +x /функции|functions.js \ No newline at end of file diff --git a/сцена|scene.js b/сцена|scene.js index 4c0cb48..ed3e32d 100644 --- a/сцена|scene.js +++ b/сцена|scene.js @@ -1,5 +1,86 @@ const ИМЯ = "ОМ | MB"; const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | Mahjong resources"; +const ИМЯ_ОТЛ_РАСКЛАДКИ = "Отладочные раскладки Маджонга | Mahjong debug layouts"; + + +// // // // + + +ОкраситьВыбранныеФишки = мир => +{ + /* + // Очищаем цвета всех фишек. + for (var номер in мир.фишки) + { + var фишка = мир.фишки[номер]; + фишка.color = new THREE.Color(); + } + */ + // Окрашиваем выбранные фишки. + for (var номерЭлемента in мир.номераВыбранныхФишек) + { + var номер = мир.номераВыбранныхФишек[номерЭлемента]; + console.debug("окрасить фишку", номер); + //мир.фишки[номер].color = new THREE.Color(0xff0000); + } +}; + + +// // // // + + +ВывестиВыбранныеФишки = мир => +{ + var номер = мир.номерВыбраннойФишки; + var группа = мир.группыФишек[номер]; + console.debug(`Выбрали фишку. номер: '${номер}' группа: '${группа}'`); + console.debug("Номера выбранных фишек", мир.номераВыбранныхФишек); +}; + + +// // // // + + +ПодготовитьВыборФишек = мир => +{ + мир.номераВыбранныхФишек = []; +}; + + +// // // // + + +ВыбратьФишкуВКоординатахНажатия = мир => +{ + мир.ловецНажатий.setFromCamera(мир.позицияНажатия, мир.камера); + var пересечения = мир.ловецНажатий.intersectObjects(мир.корень.children); + if (пересечения.length) + { + var фишка = пересечения[0].object; + var номер = номерФишки(мир.фишки, фишка.id); + if (номер) + { + мир.номерВыбраннойФишки = номер; + мир.номераВыбранныхФишек.push(Number(номер)); + мир.уведомить("выбор фишки"); + } + } + +}; + + +// // // // + + +ЗагрузитьОтладочнуюРаскладку = мир => +{ + var модуль = мир.модули.модульПоИмени(ИМЯ_ОТЛ_РАСКЛАДКИ); + var ресурс = "/успех|success.layout"; + var содержимое = модуль.содержимое[ресурс]; + мир.раскладкаKMahjongg = { + "содержимое": содержимое, + }; +}; // // // // @@ -86,7 +167,7 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | { мир.группыФишек.push(группа); // Меняем группу каждую пару фишек. - if (номер %2 == 0) + if (номер % 2 == 1) { ++группа; // Начинаем группы заново, как только они заканчиваются. @@ -326,7 +407,7 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | ПодготовитьСцену = мир => { var коэффициент = 2; - var расстояние = 12; + var расстояние = 6; мир.камера.position.y = расстояние * коэффициент; мир.камера.position.z = расстояние; мир.камера.lookAt(new THREE.Vector3(0, 0, 0)); diff --git a/сцена|scene.череда b/сцена|scene.череда index cca71f6..16c62f2 100644 --- a/сцена|scene.череда +++ b/сцена|scene.череда @@ -8,7 +8,8 @@ подготовить сцену загрузить фишку загрузили фишку - загрузить раскладку +# загрузить раскладку + загрузить отладочную раскладку разобрать раскладку KMahjongg разобрали раскладку KMahjongg задать тему фишек для загрузки @@ -28,12 +29,18 @@ отслеживать нажатия мышью отслеживать нажатия пальцем исправить отслеживание нажатий на IOS + подготовить выбор фишек запустить отрисовку изменили размер окна браузера изменить размер отрисовщика ThreeJS нажали вывести координаты нажатия + выбрать фишку в координатах нажатия + +выбор фишки + вывести выбранные фишки + окрасить выбранные фишки #поворот фишки # отладка diff --git a/функции|functions.js b/функции|functions.js new file mode 100644 index 0000000..c7d7aca --- /dev/null +++ b/функции|functions.js @@ -0,0 +1,14 @@ + +номерФишки = (фишки, id) => +{ + for (var номер in фишки) + { + var фишка = фишки[номер]; + if (фишка.id == id) + { + return номер; + } + } + + return null; +}; \ No newline at end of file