Browse Source

Изменения от Главреда ГитЖС | Changes of GitJS Glavred

M-0.1.0
Главред | Glavred 4 years ago
parent
commit
797f6bef17
3 changed files with 198 additions and 28 deletions
  1. +157
    -22
      фишки|tiles.js
  2. +19
    -5
      фишки|tiles.череда
  3. +22
    -1
      функции|functions.js

+ 157
- 22
фишки|tiles.js View File

@@ -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 @@
// // // //


ПодготовитьВыборФишек = мир =>
ПодготовитьПоискФишек = мир =>
{
мир.номераВыбранныхФишек = [];
мир.номераНайденныхФишек = [];
};




+ 19
- 5
фишки|tiles.череда View File

@@ -3,13 +3,27 @@
создать узлы фишек
создать группы фишек
задать материалы фишкам по группам
подготовить выбор фишек
создать материалы выбранных фишек отладочной темы
создать индексы фишек
подготовить фишки к выбору
уведомить о создании фишек в сцене

нажали
выбрать фишку в координатах нажатия
выбор фишки
вывести выбранные фишки
окрасить выбранные фишки
найти фишку в координатах нажатия
нашли фишку в координатах нажатия
вывести найденную фишку
проверить доступность фишки для выбора
фишка доступна для выбора
выбрать найденную фишку
выбрали фишку
вывести выбранную фишку
окрасить найденную фишку
проверить наличие двух выбранных фишек
выбраны две фишки
сравнить выбранные фишки
фишки совпадают
вывести совпадение фишек
фишки не совпадают
вывести различие фишек
очистить окрашивание первой найденной фишки
очистить выбор первой найденной фишки

+ 22
- 1
функции|functions.js View File

@@ -3,7 +3,28 @@
// // // //


позицияИндексФишки = (индекс) =>
уФишкиЕстьСоседи = (индексы, позиция, смещениеСлоя, смещениеСтолбца) =>
{
for (var смещениеРяда = -1; смещениеРяда < 2; ++смещениеРяда)
{
var позицияСоседа = [
позиция[0] + смещениеСлоя,
позиция[1] + смещениеРяда,
позиция[2] + смещениеСтолбца,
];
var индексСоседа = индексПозицииФишки(позицияСоседа);
if (индексСоседа in индексы)
{
return true;
}
}
return false;
};

// // // //


позицияИндексаФишки = (индекс) =>
{
const x = индекс / 1000000;
const y = (индекс - x * 1000000) / 1000;


Loading…
Cancel
Save