function Игра() { this.создать = function() { var корень = document.getElementById("корень"); мир.события = new События(); мир.состояние = new Состояние(); мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) }; мир.физика = new Физика(); мир.изображения = new Изображения(корень), мир.тела = new Тела(мир.события, мир.физика.движок.world); мир.слежение = new Слежение(мир.события, мир.изображения, мир.тела); this.ключники = [ new Заголовок(), мир.изображения, мир.тела, мир.слежение, ]; var z64 = мир.параметрыЗапуска()["z64"]; this.исполнитьКод(z64); this.отслеживатьОбновленияКода(); this.обновить(); }; this.исполнитьКод = function(z64) { if (z64) { var код = мир.изZ64(z64); eval(код); } }; this.обновить = function() { мир.физика.обновить(); мир.слежение.обновить(); var тут = this; requestAnimationFrame(function() { тут.обновить(); }); }; this.обработатьКлюч = function(ключ, путь, значение) { for (var номер in this.ключники) { var ключник = this.ключники[номер]; ключник.обработатьКлюч(ключ, путь, значение); } }; this.отслеживатьОбновленияКода = function() { var тут = this; window.addEventListener("message", function(событие) { тут.исполнитьКод(событие.data); }); }; // Конструктор. this.создать(); }