|
|
@@ -5,6 +5,135 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | |
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВывестиКоординатыНажатия = мир => |
|
|
|
{ |
|
|
|
var п = мир.позицияНажатия; |
|
|
|
console.debug("нажатие", п.x, п.y); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ИсправитьОтслеживаниеНажатийНаIOS = мир => |
|
|
|
{ |
|
|
|
// https://stackoverflow.com/a/31459240/3404710 |
|
|
|
мир.отрисовщик.domElement.style.cursor = "pointer"; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ОтслеживатьНажатияПальцем = мир => |
|
|
|
{ |
|
|
|
window.addEventListener( |
|
|
|
"touchstart", |
|
|
|
function(событие) { |
|
|
|
var позиция = new THREE.Vector2(); |
|
|
|
позиция.x = (событие.touches[0].clientX / window.innerWidth) * 2 - 1; |
|
|
|
позиция.y = - (событие.touches[0].clientY / window.innerHeight) * 2 + 1; |
|
|
|
мир.позицияНажатия = позиция; |
|
|
|
мир.уведомить("нажали"); |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ОтслеживатьНажатияМышью = мир => |
|
|
|
{ |
|
|
|
window.addEventListener( |
|
|
|
"click", |
|
|
|
function(событие) { |
|
|
|
var позиция = new THREE.Vector2(); |
|
|
|
позиция.x = (событие.clientX / window.innerWidth) * 2 - 1; |
|
|
|
позиция.y = - (событие.clientY / window.innerHeight) * 2 + 1; |
|
|
|
мир.позицияНажатия = позиция; |
|
|
|
мир.уведомить("нажали"); |
|
|
|
} |
|
|
|
); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ЗадатьМатериалыФишкамПоГруппам = мир => |
|
|
|
{ |
|
|
|
for (var номер in мир.группыФишек) |
|
|
|
{ |
|
|
|
var группа = мир.группыФишек[номер]; |
|
|
|
var материал = мир.материалыФишек[группа]; |
|
|
|
фишка = мир.фишки[номер]; |
|
|
|
фишка.material = материал; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
СоздатьГруппыФишек = мир => |
|
|
|
{ |
|
|
|
мир.группыФишек = []; |
|
|
|
const позиции = мир.раскладкаKMahjongg.позиции; |
|
|
|
var группа = 0; |
|
|
|
for (var номер in позиции) |
|
|
|
{ |
|
|
|
мир.группыФишек.push(группа); |
|
|
|
// Меняем группу каждую пару фишек. |
|
|
|
if (номер %2 == 0) |
|
|
|
{ |
|
|
|
++группа; |
|
|
|
// Начинаем группы заново, как только они заканчиваются. |
|
|
|
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 границы = мир.фишка.geometry.boundingBox; |
|
|
@@ -30,12 +159,9 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | |
|
|
|
фишка.position.x = столбец * размеры[0]; |
|
|
|
фишка.position.z = ряд * размеры[1]; |
|
|
|
фишка.position.y = слой; |
|
|
|
// Текстура. |
|
|
|
var номерТекстуры = номер % 42; |
|
|
|
// Потому что текстуры с индекса 1 начинаются. |
|
|
|
номерТекстуры += 1; |
|
|
|
var текстура = мир.текстурыТемФишек["отладочная|debug"][номерТекстуры]; |
|
|
|
var материал = new THREE.MeshLambertMaterial({map: текстура}); |
|
|
|
// Материал. |
|
|
|
var номерМатериала = номер % 42; |
|
|
|
var материал = мир.материалыФишек[номерМатериала]; |
|
|
|
фишка.material = материал; |
|
|
|
} |
|
|
|
}; |
|
|
@@ -44,6 +170,22 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | |
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
СоздатьМатериалыФишекОтладочнойТемы = мир => |
|
|
|
{ |
|
|
|
мир.материалыФишек = []; |
|
|
|
var тема = "отладочная|debug"; |
|
|
|
for (var номер = 1; номер <= 42; ++номер) |
|
|
|
{ |
|
|
|
var текстура = мир.текстурыТемФишек[тема][номер]; |
|
|
|
var материал = new THREE.MeshLambertMaterial({map: текстура}); |
|
|
|
мир.материалыФишек.push(материал); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВывестиФактЗагрузкиТемыФишекМаджонга = мир => |
|
|
|
{ |
|
|
|
console.debug("ВывестиФактЗагрузкиТемыФишекМаджонга"); |
|
|
@@ -52,6 +194,7 @@ const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | |
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ЗадатьТемуФишекДляЗагрузки = мир => |
|
|
|
{ |
|
|
|
мир.темаФишек = "отладочная|debug"; |
|
|
|