You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.3KB

  1. function Игра()
  2. {
  3. this.создать = function()
  4. {
  5. var корень = document.getElementById("корень");
  6. мир.события = new События();
  7. мир.состояние = new Состояние();
  8. мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) };
  9. мир.физика = new Физика();
  10. мир.изображения = new Изображения(корень),
  11. мир.тела = new Тела(мир.события, мир.физика.движок.world);
  12. мир.слежение = new Слежение(мир.события, мир.изображения, мир.тела);
  13. мир.объекты = new Объекты(мир.события, мир.состояние);
  14. this.ключники = [
  15. new Заголовок(),
  16. мир.изображения,
  17. мир.тела,
  18. мир.слежение,
  19. мир.объекты,
  20. ];
  21. var z64 = мир.параметрыЗапуска()["z64"];
  22. this.исполнитьКод(z64);
  23. this.отслеживатьОбновленияКода();
  24. this.обновить();
  25. };
  26. this.исполнитьКод = function(z64)
  27. {
  28. if (z64)
  29. {
  30. var код = мир.изZ64(z64);
  31. eval(код);
  32. }
  33. };
  34. this.обновить = function()
  35. {
  36. мир.физика.обновить();
  37. мир.слежение.обновить();
  38. var тут = this;
  39. requestAnimationFrame(function() {
  40. тут.обновить();
  41. });
  42. };
  43. this.обработатьКлюч = function(ключ, путь, значение)
  44. {
  45. for (var номер in this.ключники)
  46. {
  47. var ключник = this.ключники[номер];
  48. ключник.обработатьКлюч(ключ, путь, значение);
  49. }
  50. };
  51. this.отслеживатьОбновленияКода = function()
  52. {
  53. var тут = this;
  54. window.addEventListener("message", function(событие) {
  55. тут.исполнитьКод(событие.data);
  56. });
  57. };
  58. // Конструктор.
  59. this.создать();
  60. }