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.

79 lines
2.8KB

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