|
|
@@ -3,34 +3,83 @@ |
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
УведомитьОСозданииФишекВСцене = мир => |
|
|
|
ОчиститьВыборПервойНайденнойФишки = мир => |
|
|
|
{ |
|
|
|
мир.уведомить("создали фишки в сцене"); |
|
|
|
мир.номераВыбранныхФишек.shift(); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
СоздатьИндексыФишек = мир => |
|
|
|
ОчиститьОкрашиваниеПервойНайденнойФишки = мир => |
|
|
|
{ |
|
|
|
мир.индексыФишек = {}; |
|
|
|
const позиции = мир.раскладкаKMahjongg.позиции; |
|
|
|
for (var номер in позиции) |
|
|
|
var номер = мир.номераВыбранныхФишек[0]; |
|
|
|
var фишка = мир.фишки[номер]; |
|
|
|
var группа = мир.группыФишек[номер]; |
|
|
|
var материал = мир.материалыФишек[группа]; |
|
|
|
фишка.material = материал; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВывестиРазличиеФишек = мир => |
|
|
|
{ |
|
|
|
console.debug("ВывестиРазличиеФишек"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВывестиСовпадениеФишек = мир => |
|
|
|
{ |
|
|
|
console.debug("ВывестиСовпадениеФишек"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
СравнитьВыбранныеФишки = мир => |
|
|
|
{ |
|
|
|
var номер0 = мир.номераВыбранныхФишек[0]; |
|
|
|
var группа0 = мир.группыФишек[номер0]; |
|
|
|
|
|
|
|
var номер1 = мир.номераВыбранныхФишек[1]; |
|
|
|
var группа1 = мир.группыФишек[номер1]; |
|
|
|
|
|
|
|
if (группа0 == группа1) |
|
|
|
{ |
|
|
|
var позиция = позиции[номер]; |
|
|
|
var фишка = мир.фишки[номер]; |
|
|
|
var индекс = индексПозицииФишки(позиция); |
|
|
|
мир.индексыФишек[индекс] = фишка; |
|
|
|
}; |
|
|
|
мир.уведомить("фишки совпадают"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
мир.уведомить("фишки не совпадают"); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ПроверитьНаличиеДвухВыбранныхФишек = мир => |
|
|
|
{ |
|
|
|
if (мир.номераВыбранныхФишек.length == 2) |
|
|
|
{ |
|
|
|
мир.уведомить("выбраны две фишки"); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ОкраситьВыбранныеФишки = мир => |
|
|
|
ОкраситьНайденнуюФишку = мир => |
|
|
|
{ |
|
|
|
/* |
|
|
|
// Очищаем цвета всех фишек. |
|
|
|
for (var номер in мир.фишки) |
|
|
|
{ |
|
|
@@ -48,25 +97,112 @@ |
|
|
|
var материал = мир.материалыВыбранныхФишек[группа]; |
|
|
|
фишка.material = материал; |
|
|
|
} |
|
|
|
*/ |
|
|
|
var номер = мир.номерНайденнойФишки; |
|
|
|
var фишка = мир.фишки[номер]; |
|
|
|
var группа = мир.группыФишек[номер]; |
|
|
|
var материал = мир.материалыВыбранныхФишек[группа]; |
|
|
|
фишка.material = материал; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВывестиВыбраннуюФишку = мир => |
|
|
|
{ |
|
|
|
var номер = мир.номерНайденнойФишки; |
|
|
|
var группа = мир.группыФишек[номер]; |
|
|
|
console.debug(`ВЫБРАЛИ фишку. номер: '${номер}' группа: '${группа}'`); |
|
|
|
}; |
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВыбратьНайденнуюФишку = мир => |
|
|
|
{ |
|
|
|
мир.номераВыбранныхФишек.push(мир.номерНайденнойФишки); |
|
|
|
мир.уведомить("выбрали фишку"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ПроверитьДоступностьФишкиДляВыбора = мир => |
|
|
|
{ |
|
|
|
// Проверяем заблокированность фишки одновременно с обеих сторон. |
|
|
|
var позиция = мир.раскладкаKMahjongg.позиции[мир.номерНайденнойФишки]; |
|
|
|
var слева = уФишкиЕстьСоседи(мир.индексыФишек, позиция, 0, -2); |
|
|
|
var справа = уФишкиЕстьСоседи(мир.индексыФишек, позиция, 0, 2); |
|
|
|
if (слева && справа) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// Проверяем заблокированность сверху. |
|
|
|
for (var смещениеСтолбца = -1; смещениеСтолбца < 2; ++смещениеСтолбца) |
|
|
|
{ |
|
|
|
if (уФишкиЕстьСоседи(мир.индексыФишек, позиция, 1, смещениеСтолбца)) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
мир.уведомить("фишка доступна для выбора"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
УведомитьОСозданииФишекВСцене = мир => |
|
|
|
{ |
|
|
|
мир.уведомить("создали фишки в сцене"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ПодготовитьФишкиКВыбору = мир => |
|
|
|
{ |
|
|
|
мир.номераВыбранныхФишек = []; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
СоздатьИндексыФишек = мир => |
|
|
|
{ |
|
|
|
мир.индексыФишек = {}; |
|
|
|
const позиции = мир.раскладкаKMahjongg.позиции; |
|
|
|
for (var номер in позиции) |
|
|
|
{ |
|
|
|
var позиция = позиции[номер]; |
|
|
|
var фишка = мир.фишки[номер]; |
|
|
|
var индекс = индексПозицииФишки(позиция); |
|
|
|
мир.индексыФишек[индекс] = фишка; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВывестиВыбранныеФишки = мир => |
|
|
|
ВывестиНайденнуюФишку = мир => |
|
|
|
{ |
|
|
|
var номер = мир.номерВыбраннойФишки; |
|
|
|
var номер = мир.номерНайденнойФишки; |
|
|
|
var группа = мир.группыФишек[номер]; |
|
|
|
console.debug(`Выбрали фишку. номер: '${номер}' группа: '${группа}'`); |
|
|
|
console.debug("Номера выбранных фишек", мир.номераВыбранныхФишек); |
|
|
|
console.debug(`Нашли фишку. номер: '${номер}' группа: '${группа}'`); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВыбратьФишкуВКоординатахНажатия = мир => |
|
|
|
НайтиФишкуВКоординатахНажатия = мир => |
|
|
|
{ |
|
|
|
мир.ловецНажатий.setFromCamera(мир.позицияНажатия, мир.камера); |
|
|
|
var пересечения = мир.ловецНажатий.intersectObjects(мир.корень.children); |
|
|
@@ -76,9 +212,8 @@ |
|
|
|
var номер = номерФишки(мир.фишки, фишка.id); |
|
|
|
if (номер) |
|
|
|
{ |
|
|
|
мир.номерВыбраннойФишки = номер; |
|
|
|
мир.номераВыбранныхФишек.push(номер); |
|
|
|
мир.уведомить("выбор фишки"); |
|
|
|
мир.номерНайденнойФишки = номер; |
|
|
|
мир.уведомить("нашли фишку в координатах нажатия"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -103,9 +238,9 @@ |
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ПодготовитьВыборФишек = мир => |
|
|
|
ПодготовитьПоискФишек = мир => |
|
|
|
{ |
|
|
|
мир.номераВыбранныхФишек = []; |
|
|
|
мир.номераНайденныхФишек = []; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|