105 lines
2.6 KiB
JavaScript
105 lines
2.6 KiB
JavaScript
/*
|
||
*
|
||
* Реакции
|
||
*
|
||
*/
|
||
|
||
|
||
НастроитьМышь = мир =>
|
||
{
|
||
мир.сцена.input.mouse.disableContextMenu();
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УведомитьОМыши = мир =>
|
||
{
|
||
var мышь = мир.сцена.input.activePointer;
|
||
const новое = {
|
||
"x": мышь.x,
|
||
"y": мышь.y,
|
||
"нажата": мышь.isDown,
|
||
};
|
||
if (
|
||
мир.мышь &&
|
||
мир.мышь.x == новое.x &&
|
||
мир.мышь.y == новое.y &&
|
||
мир.мышь.нажата == новое.нажата
|
||
) {
|
||
// Ничего не делаем.
|
||
}
|
||
else
|
||
{
|
||
мир.мышь = новое;
|
||
мир.уведомить("изменили мышь");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УведомитьОбУправлении = мир =>
|
||
{
|
||
const камера = мир.сцена.cameras.main;
|
||
const ширина = камера.width;
|
||
const высота = камера.height;
|
||
var новое = {
|
||
"направление": 0, // Центр.
|
||
"прыжок": false,
|
||
};
|
||
новое.прыжок = (мир.мышь.y < высота * 0.45);
|
||
if (мир.мышь.x < ширина * 0.45)
|
||
{
|
||
новое.направление = -1; // Лево.
|
||
}
|
||
else if (мир.мышь.x > ширина * 0.55)
|
||
{
|
||
новое.направление = 1; // Право.
|
||
}
|
||
|
||
// Начало движения.
|
||
if (!мир.управление && мир.мышь.нажата)
|
||
{
|
||
мир.управление = новое;
|
||
мир.уведомить("изменили управление");
|
||
}
|
||
// Окончание движения.
|
||
else if (мир.управление && !мир.мышь.нажата)
|
||
{
|
||
мир.управление = null;
|
||
мир.уведомить("изменили управление");
|
||
}
|
||
// Продолжение движения.
|
||
else if (
|
||
(мир.управление && мир.мышь.нажата) &&
|
||
(
|
||
(мир.управление.направление != новое.направление) ||
|
||
(мир.управление.прыжок != новое.прыжок)
|
||
)
|
||
) {
|
||
мир.управление = новое;
|
||
мир.уведомить("изменили управление");
|
||
}
|
||
};
|
||
|
||
|
||
/*
|
||
*
|
||
* Последовательность
|
||
*
|
||
*/
|
||
|
||
|
||
мир.разобрать(`
|
||
создать сцену
|
||
настроить мышь
|
||
обновить сцену
|
||
уведомить о мыши
|
||
изменили мышь
|
||
уведомить об управлении
|
||
`);
|
||
|