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.

61 lines
1.9KB

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