function Игра() { this.создать = function() { мир.физдвижок = Matter.Engine.create({ enableSleeping: true, gravity: { y: 2, }, }); var корень = document.getElementById("корень"); мир.события = new События(); мир.состояние = new Состояние(); мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) }; мир.виды = new Виды(мир.события); мир.изображения = new Изображения(мир.события, мир.виды, корень), мир.физика = new Физика(мир.события); мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world); мир.слежение = 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.создать(); }