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.создать(); };