|
-
-
- // // // //
-
-
- ОчиститьВыборПервойНайденнойФишки = мир =>
- {
- мир.номераВыбранныхФишек.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;
- }
- }
-
- мир.уведомить("фишка доступна для выбора");
- };
-
-
- // // // //
-
-
- УведомитьОСозданииФишекВСцене = мир =>
- {
- мир.уведомить("создали фишки в сцене");
- };
-
-
- // // // //
-
-
- ПодготовитьФишкиКВыбору = мир =>
- {
- мир.номераВыбранныхФишек = [];
- };
-
-
- // // // //
-
-
- СоздатьИндексыФишек = мир =>
- {
- мир.индексыФишек = {};
- const позиции = мир.раскладкаKMahjongg.позиции;
- for (var номер in позиции)
- {
- var позиция = позиции[номер];
- var фишка = мир.фишки[номер];
- var индекс = индексПозицииФишки(позиция);
- мир.индексыФишек[индекс] = фишка;
- };
- };
-
-
- // // // //
-
-
- ВывестиНайденнуюФишку = мир =>
- {
- var номер = мир.номерНайденнойФишки;
- var группа = мир.группыФишек[номер];
- console.debug(`Нашли фишку. номер: '${номер}' группа: '${группа}'`);
- };
-
-
- // // // //
-
-
- НайтиФишкуВКоординатахНажатия = мир =>
- {
- мир.ловецНажатий.setFromCamera(мир.позицияНажатия, мир.камера);
- var пересечения = мир.ловецНажатий.intersectObjects(мир.корень.children);
- if (пересечения.length)
- {
- var фишка = пересечения[0].object;
- var номер = номерФишки(мир.фишки, фишка.id);
- if (номер)
- {
- мир.номерНайденнойФишки = номер;
- мир.уведомить("нашли фишку в координатах нажатия");
- }
- }
-
- };
-
-
- // // // //
-
-
- СоздатьМатериалыВыбранныхФишекОтладочнойТемы = мир =>
- {
- мир.материалыВыбранныхФишек = [];
- for (var номер in мир.материалыФишек)
- {
- var материал = мир.материалыФишек[номер].clone();
- материал.color = new THREE.Color(0xff0000);
- мир.материалыВыбранныхФишек.push(материал);
- }
- };
-
-
- // // // //
-
-
- ПодготовитьПоискФишек = мир =>
- {
- мир.номераНайденныхФишек = [];
- };
-
-
- // // // //
-
-
- ЗадатьМатериалыФишкамПоГруппам = мир =>
- {
- for (var номер in мир.группыФишек)
- {
- var группа = мир.группыФишек[номер];
- var материал = мир.материалыФишек[группа];
- фишка = мир.фишки[номер];
- фишка.material = материал;
- }
- };
-
-
- // // // //
-
-
- СоздатьГруппыФишек = мир =>
- {
- мир.группыФишек = [];
- const позиции = мир.раскладкаKMahjongg.позиции;
- var группа = 0;
- for (var номер in позиции)
- {
- мир.группыФишек.push(группа);
- // Меняем группу каждую пару фишек.
- if (номер % 2 == 1)
- {
- ++группа;
- // Начинаем группы заново, как только они заканчиваются.
- 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 тема = "отладочная|debug";
- for (var номер = 1; номер <= 42; ++номер)
- {
- var текстура = мир.текстурыТемФишек[тема][номер];
- var материал = new THREE.MeshLambertMaterial({map: текстура});
- мир.материалыФишек.push(материал);
- }
- };
|