function Игра() { this.создать = function() { мир.физдвижок = Matter.Engine.create({ enableSleeping: true, gravity: { y: 2, }, }); var корень = document.getElementById("корень"); мир.события = new События(мир.uuid); мир.состояние = new Состояние(); мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) }; мир.виды = new Виды(мир.события); мир.анимации = new Анимации(мир.события); мир.изображения = new Изображения(мир.события, мир.виды, мир.анимации, корень), мир.физика = new Физика(мир.события); мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world); мир.слежение = new Слежение(мир.состояние, мир.изображения, мир.тела); мир.объекты = new Объекты(мир.состояние, мир.события); мир.состояниЯ = new Состояния(мир.состояние); мир.мышь = new Мышь(мир.события); мир.столкновения = new Столкновения(мир.события, мир.тела, мир.физдвижок); this.ключники = [ new Заголовок(), мир.виды, мир.анимации, мир.изображения, мир.физика, мир.тела, мир.слежение, мир.объекты, мир.состояниЯ, мир.столкновения, ]; this.настроитьКлючиGR() var z64 = мир.параметрыЗапуска()["z64"]; this.исполнитьКод(z64); this.отслеживатьОбновленияКода(); this.обновить(); }; this.исполнитьКод = function(z64) { if (z64) { var код = мир.изZ64(z64); eval(код); } }; this.настроитьКлючиGR = function() { let адресИгры = window.location.pathname + "/../игра.html?z64="; мир.grСцена = new grСцена(мир.состояние, мир.состояниЯ, мир.события, мир.тела, адресИгры); this.ключники.push(мир.grСцена); мир.grПодсказки = new grПодсказки(); this.ключники.push(мир.grПодсказки); мир.grРеплики = new grРеплики(мир.события); this.ключники.push(мир.grРеплики); мир.grМеню = new grМеню(мир.события, мир.grПодсказки, мир.grРеплики); } this.обновить = function() { Matter.Engine.update(мир.физдвижок); мир.слежение.обновить(); мир.grСцена.обновить(); var тут = this; requestAnimationFrame(function() { тут.обновить(); }); }; this.обработатьКлюч = function(ключ, путь, значение) { for (var номер in this.ключники) { var ключник = this.ключники[номер]; ключник.обработатьКлюч(ключ, путь, значение); } }; this.отслеживатьОбновленияКода = function() { var тут = this; window.addEventListener("message", function(событие) { тут.исполнитьКод(событие.data); }); }; // Конструктор. this.создать(); }