@@ -3,6 +3,37 @@ | |||||
// // // // | // // // // | ||||
ИзменитьРазмерОтрисовщикаThreeJS = мир => | |||||
{ | |||||
var ширина = window.innerWidth * мир.масштаб; | |||||
var высота = window.innerHeight * мир.масштаб; | |||||
мир.камера.aspect = ширина / высота; | |||||
мир.камера.updateProjectionMatrix(); | |||||
мир.отрисовщик.setSize(ширина, высота); | |||||
var размер = мир.масштаб * 100; | |||||
мир.канва.style = ` | |||||
max-width: ${размер}%; | |||||
max-height: ${размер}%; | |||||
width: ${размер}%; | |||||
height: ${размер}%; | |||||
`; | |||||
}; | |||||
// // // // | |||||
ЗадатьОтладочныйМасштаб = мир => | |||||
{ | |||||
мир.масштаб = 3; | |||||
мир.уведомить("изменили масштаб"); | |||||
}; | |||||
// // // // | |||||
ИсправитьОтслеживаниеНажатийНаIOS = мир => | ИсправитьОтслеживаниеНажатийНаIOS = мир => | ||||
{ | { | ||||
// https://stackoverflow.com/a/31459240/3404710 | // https://stackoverflow.com/a/31459240/3404710 | ||||
@@ -18,14 +49,9 @@ | |||||
window.addEventListener( | window.addEventListener( | ||||
"touchstart", | "touchstart", | ||||
function(событие) { | function(событие) { | ||||
var позиция = new THREE.Vector2(); | |||||
позиция.x = (событие.touches[0].clientX / window.innerWidth) * 2 - 1; | |||||
позиция.y = - (событие.touches[0].clientY / window.innerHeight) * 2 + 1; | |||||
мир.позицияНажатия = позиция; | |||||
мир.уведомить("нажали"); | |||||
сообщитьОНажатии(мир, событие.touches[0]); | |||||
} | } | ||||
); | ); | ||||
}; | }; | ||||
@@ -37,11 +63,7 @@ | |||||
window.addEventListener( | window.addEventListener( | ||||
"click", | "click", | ||||
function(событие) { | function(событие) { | ||||
var позиция = new THREE.Vector2(); | |||||
позиция.x = (событие.clientX / window.innerWidth) * 2 - 1; | |||||
позиция.y = - (событие.clientY / window.innerHeight) * 2 + 1; | |||||
мир.позицияНажатия = позиция; | |||||
мир.уведомить("нажали"); | |||||
сообщитьОНажатии(мир, событие); | |||||
} | } | ||||
); | ); | ||||
}; | }; | ||||
@@ -180,7 +202,7 @@ html, body { | |||||
мир.канва = document.createElement("canvas"); | мир.канва = document.createElement("canvas"); | ||||
мир.канва.id = "канва-threejs"; | мир.канва.id = "канва-threejs"; | ||||
мир.канва.style = ` | мир.канва.style = ` | ||||
position: fixed; | |||||
position: absolute; | |||||
left: 0; | left: 0; | ||||
top: 0; | top: 0; | ||||
width: 100%; | width: 100%; | ||||
@@ -197,3 +219,12 @@ height: 100%; | |||||
} | } | ||||
}; | }; | ||||
// // // // | |||||
СоздатьМасштаб = мир => | |||||
{ | |||||
мир.масштаб = 1; | |||||
}; | |||||
@@ -1,7 +1,7 @@ | |||||
пуск модулей маджонга | пуск модулей маджонга | ||||
создать масштаб | |||||
создать канву ThreeJS | создать канву ThreeJS | ||||
настроить ThreeJS | настроить ThreeJS | ||||
# встроить отрисовщика ThreeJS | |||||
выбрали раскладку | выбрали раскладку | ||||
отслеживать изменение размера окна браузера | отслеживать изменение размера окна браузера | ||||
изменить размер отрисовщика ThreeJS | изменить размер отрисовщика ThreeJS | ||||
@@ -19,4 +19,6 @@ | |||||
запустить отрисовку | запустить отрисовку | ||||
изменили размер окна браузера | изменили размер окна браузера | ||||
изменить размер отрисовщика ThreeJS | |||||
изменили масштаб | |||||
изменить размер отрисовщика ThreeJS | изменить размер отрисовщика ThreeJS |
@@ -3,6 +3,15 @@ | |||||
// // // // | // // // // | ||||
ВывестиКоординатыНажатия = мир => | |||||
{ | |||||
console.debug("Координаты нажатия:", мир.позицияНажатия.x, мир.позицияНажатия.y); | |||||
}; | |||||
// // // // | |||||
УведомитьОПоражении = мир => | УведомитьОПоражении = мир => | ||||
{ | { | ||||
мир.уведомить("поражение"); | мир.уведомить("поражение"); | ||||
@@ -445,7 +454,6 @@ | |||||
мир.уведомить("нашли фишку в координатах нажатия"); | мир.уведомить("нашли фишку в координатах нажатия"); | ||||
} | } | ||||
} | } | ||||
}; | }; | ||||
@@ -12,6 +12,7 @@ | |||||
нажали | нажали | ||||
проверить возможность поиска фишки | проверить возможность поиска фишки | ||||
можно искать фишку | можно искать фишку | ||||
# вывести координаты нажатия | |||||
найти фишку в координатах нажатия | найти фишку в координатах нажатия | ||||
нашли фишку в координатах нажатия | нашли фишку в координатах нажатия | ||||
вывести найденную фишку | вывести найденную фишку | ||||
@@ -1,5 +1,23 @@ | |||||
// // // // | |||||
сообщитьОНажатии = (мир, событие) => | |||||
{ | |||||
var позиция = new THREE.Vector2(); | |||||
var ширина = window.innerWidth * мир.масштаб; | |||||
var высота = window.innerHeight * мир.масштаб; | |||||
позиция.x = ((событие.clientX + window.pageXOffset) / ширина ) * 2 - 1; | |||||
позиция.y = - ((событие.clientY + window.pageYOffset) / высота) * 2 + 1; | |||||
мир.позицияНажатия = позиция; | |||||
мир.уведомить("нажали"); | |||||
}; | |||||
// // // // | |||||
фишкуМожноВыбрать = (индексы, индекс) => | фишкуМожноВыбрать = (индексы, индекс) => | ||||
{ | { | ||||
var позиция = позицияИндексаФишки(индекс); | var позиция = позицияИндексаФишки(индекс); | ||||