|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- function Сцена(состояние, события)
- {
- this.создать = function()
- {
- this.умолчание = {
- скорость: [1, 1],
- };
- this.задано = {};
- события.подписать(this);
- };
-
- this.обработатьКлюч = function(ключ, путь, значение)
- {
- if (путь[0] != "сцена")
- {
- return;
- }
-
- var свойство = путь.slice(1).join(".");
- this.задано[свойство] = значение;
- };
-
- this.обработатьНажатиеМышиУказатьИНажать = function(x, y, указатель)
- {
- var тип = this.задано["тип"];
- var игрок = this.задано["игрок"];
- var цель = this.задано["цель"];
- if (!тип || !игрок || !цель || тип != "указать и нажать")
- {
- return;
- }
-
- var тело = мир.тела.тела[цель];
- if (!тело)
- {
- return;
- }
- var пр = [
- тело.bounds.min.x,
- тело.bounds.min.y,
- тело.bounds.max.x - тело.bounds.min.x,
- тело.bounds.max.y - тело.bounds.min.y,
- ]
- let ширина = пр[2];
- пр[0] = x - ширина;
-
- состояние.разобрать({
- тела: {
- [цель]: {
- пр: пр,
- },
- },
- });
- };
-
- this.обработатьСобытие = function(событие)
- {
- let префикс = "мышь/нажатие/";
- if (событие.startsWith(префикс))
- {
- let значения = событие.substring(префикс.length).split("/");
- let x = Number(значения[0]);
- let y = Number(значения[1]);
- let указатель = значения[2];
- this.обработатьНажатиеМышиУказатьИНажать(x, y, указатель);
- }
- };
-
- // Конструктор.
- this.создать();
- };
|