Изменения от Главреда ГитЖС | Changes of GitJS Glavred
This commit is contained in:
205
фишки|tiles.js
205
фишки|tiles.js
@@ -3,6 +3,159 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ОчиститьВыборПервойНайденнойФишки = мир =>
|
||||||
|
{
|
||||||
|
мир.номераВыбранныхФишек.shift();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ОчиститьОкрашиваниеПервойНайденнойФишки = мир =>
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
мир.уведомить("фишки совпадают");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
мир.уведомить("фишки не совпадают");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ПроверитьНаличиеДвухВыбранныхФишек = мир =>
|
||||||
|
{
|
||||||
|
if (мир.номераВыбранныхФишек.length == 2)
|
||||||
|
{
|
||||||
|
мир.уведомить("выбраны две фишки");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ОкраситьНайденнуюФишку = мир =>
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
// Очищаем цвета всех фишек.
|
||||||
|
for (var номер in мир.фишки)
|
||||||
|
{
|
||||||
|
var фишка = мир.фишки[номер];
|
||||||
|
var группа = мир.группыФишек[номер];
|
||||||
|
var материал = мир.материалыФишек[группа];
|
||||||
|
фишка.material = материал;
|
||||||
|
}
|
||||||
|
// Окрашиваем выбранные фишки.
|
||||||
|
for (var id in мир.номераВыбранныхФишек)
|
||||||
|
{
|
||||||
|
var номер = мир.номераВыбранныхФишек[id];
|
||||||
|
var фишка = мир.фишки[номер];
|
||||||
|
var группа = мир.группыФишек[номер];
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
мир.уведомить("фишка доступна для выбора");
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
УведомитьОСозданииФишекВСцене = мир =>
|
УведомитьОСозданииФишекВСцене = мир =>
|
||||||
{
|
{
|
||||||
мир.уведомить("создали фишки в сцене");
|
мир.уведомить("создали фишки в сцене");
|
||||||
@@ -12,6 +165,15 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ПодготовитьФишкиКВыбору = мир =>
|
||||||
|
{
|
||||||
|
мир.номераВыбранныхФишек = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьИндексыФишек = мир =>
|
СоздатьИндексыФишек = мир =>
|
||||||
{
|
{
|
||||||
мир.индексыФишек = {};
|
мир.индексыФишек = {};
|
||||||
@@ -29,44 +191,18 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ОкраситьВыбранныеФишки = мир =>
|
ВывестиНайденнуюФишку = мир =>
|
||||||
{
|
{
|
||||||
// Очищаем цвета всех фишек.
|
var номер = мир.номерНайденнойФишки;
|
||||||
for (var номер in мир.фишки)
|
|
||||||
{
|
|
||||||
var фишка = мир.фишки[номер];
|
|
||||||
var группа = мир.группыФишек[номер];
|
|
||||||
var материал = мир.материалыФишек[группа];
|
|
||||||
фишка.material = материал;
|
|
||||||
}
|
|
||||||
// Окрашиваем выбранные фишки.
|
|
||||||
for (var id in мир.номераВыбранныхФишек)
|
|
||||||
{
|
|
||||||
var номер = мир.номераВыбранныхФишек[id];
|
|
||||||
var фишка = мир.фишки[номер];
|
|
||||||
var группа = мир.группыФишек[номер];
|
|
||||||
var материал = мир.материалыВыбранныхФишек[группа];
|
|
||||||
фишка.material = материал;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
|
||||||
|
|
||||||
|
|
||||||
ВывестиВыбранныеФишки = мир =>
|
|
||||||
{
|
|
||||||
var номер = мир.номерВыбраннойФишки;
|
|
||||||
var группа = мир.группыФишек[номер];
|
var группа = мир.группыФишек[номер];
|
||||||
console.debug(`Выбрали фишку. номер: '${номер}' группа: '${группа}'`);
|
console.debug(`Нашли фишку. номер: '${номер}' группа: '${группа}'`);
|
||||||
console.debug("Номера выбранных фишек", мир.номераВыбранныхФишек);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ВыбратьФишкуВКоординатахНажатия = мир =>
|
НайтиФишкуВКоординатахНажатия = мир =>
|
||||||
{
|
{
|
||||||
мир.ловецНажатий.setFromCamera(мир.позицияНажатия, мир.камера);
|
мир.ловецНажатий.setFromCamera(мир.позицияНажатия, мир.камера);
|
||||||
var пересечения = мир.ловецНажатий.intersectObjects(мир.корень.children);
|
var пересечения = мир.ловецНажатий.intersectObjects(мир.корень.children);
|
||||||
@@ -76,9 +212,8 @@
|
|||||||
var номер = номерФишки(мир.фишки, фишка.id);
|
var номер = номерФишки(мир.фишки, фишка.id);
|
||||||
if (номер)
|
if (номер)
|
||||||
{
|
{
|
||||||
мир.номерВыбраннойФишки = номер;
|
мир.номерНайденнойФишки = номер;
|
||||||
мир.номераВыбранныхФишек.push(номер);
|
мир.уведомить("нашли фишку в координатах нажатия");
|
||||||
мир.уведомить("выбор фишки");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,9 +238,9 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ПодготовитьВыборФишек = мир =>
|
ПодготовитьПоискФишек = мир =>
|
||||||
{
|
{
|
||||||
мир.номераВыбранныхФишек = [];
|
мир.номераНайденныхФишек = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,27 @@
|
|||||||
создать узлы фишек
|
создать узлы фишек
|
||||||
создать группы фишек
|
создать группы фишек
|
||||||
задать материалы фишкам по группам
|
задать материалы фишкам по группам
|
||||||
подготовить выбор фишек
|
|
||||||
создать материалы выбранных фишек отладочной темы
|
создать материалы выбранных фишек отладочной темы
|
||||||
создать индексы фишек
|
создать индексы фишек
|
||||||
|
подготовить фишки к выбору
|
||||||
уведомить о создании фишек в сцене
|
уведомить о создании фишек в сцене
|
||||||
|
|
||||||
нажали
|
нажали
|
||||||
выбрать фишку в координатах нажатия
|
найти фишку в координатах нажатия
|
||||||
выбор фишки
|
нашли фишку в координатах нажатия
|
||||||
вывести выбранные фишки
|
вывести найденную фишку
|
||||||
окрасить выбранные фишки
|
проверить доступность фишки для выбора
|
||||||
|
фишка доступна для выбора
|
||||||
|
выбрать найденную фишку
|
||||||
|
выбрали фишку
|
||||||
|
вывести выбранную фишку
|
||||||
|
окрасить найденную фишку
|
||||||
|
проверить наличие двух выбранных фишек
|
||||||
|
выбраны две фишки
|
||||||
|
сравнить выбранные фишки
|
||||||
|
фишки совпадают
|
||||||
|
вывести совпадение фишек
|
||||||
|
фишки не совпадают
|
||||||
|
вывести различие фишек
|
||||||
|
очистить окрашивание первой найденной фишки
|
||||||
|
очистить выбор первой найденной фишки
|
||||||
@@ -3,7 +3,28 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
позицияИндексФишки = (индекс) =>
|
уФишкиЕстьСоседи = (индексы, позиция, смещениеСлоя, смещениеСтолбца) =>
|
||||||
|
{
|
||||||
|
for (var смещениеРяда = -1; смещениеРяда < 2; ++смещениеРяда)
|
||||||
|
{
|
||||||
|
var позицияСоседа = [
|
||||||
|
позиция[0] + смещениеСлоя,
|
||||||
|
позиция[1] + смещениеРяда,
|
||||||
|
позиция[2] + смещениеСтолбца,
|
||||||
|
];
|
||||||
|
var индексСоседа = индексПозицииФишки(позицияСоседа);
|
||||||
|
if (индексСоседа in индексы)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
позицияИндексаФишки = (индекс) =>
|
||||||
{
|
{
|
||||||
const x = индекс / 1000000;
|
const x = индекс / 1000000;
|
||||||
const y = (индекс - x * 1000000) / 1000;
|
const y = (индекс - x * 1000000) / 1000;
|
||||||
|
|||||||
Reference in New Issue
Block a user