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