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.

105 lines
2.6KB

  1. /*
  2. *
  3. * Реакции
  4. *
  5. */
  6. НастроитьМышь = мир =>
  7. {
  8. мир.сцена.input.mouse.disableContextMenu();
  9. };
  10. // // // //
  11. УведомитьОМыши = мир =>
  12. {
  13. var мышь = мир.сцена.input.activePointer;
  14. const новое = {
  15. "x": мышь.x,
  16. "y": мышь.y,
  17. "нажата": мышь.isDown,
  18. };
  19. if (
  20. мир.мышь &&
  21. мир.мышь.x == новое.x &&
  22. мир.мышь.y == новое.y &&
  23. мир.мышь.нажата == новое.нажата
  24. ) {
  25. // Ничего не делаем.
  26. }
  27. else
  28. {
  29. мир.мышь = новое;
  30. мир.уведомить("изменили мышь");
  31. }
  32. };
  33. // // // //
  34. УведомитьОбУправлении = мир =>
  35. {
  36. const камера = мир.сцена.cameras.main;
  37. const ширина = камера.width;
  38. const высота = камера.height;
  39. var новое = {
  40. "направление": 0, // Центр.
  41. "прыжок": false,
  42. };
  43. новое.прыжок = (мир.мышь.y < высота * 0.45);
  44. if (мир.мышь.x < ширина * 0.45)
  45. {
  46. новое.направление = -1; // Лево.
  47. }
  48. else if (мир.мышь.x > ширина * 0.55)
  49. {
  50. новое.направление = 1; // Право.
  51. }
  52. // Начало движения.
  53. if (!мир.управление && мир.мышь.нажата)
  54. {
  55. мир.управление = новое;
  56. мир.уведомить("изменили управление");
  57. }
  58. // Окончание движения.
  59. else if (мир.управление && !мир.мышь.нажата)
  60. {
  61. мир.управление = null;
  62. мир.уведомить("изменили управление");
  63. }
  64. // Продолжение движения.
  65. else if (
  66. (мир.управление && мир.мышь.нажата) &&
  67. (
  68. (мир.управление.направление != новое.направление) ||
  69. (мир.управление.прыжок != новое.прыжок)
  70. )
  71. ) {
  72. мир.управление = новое;
  73. мир.уведомить("изменили управление");
  74. }
  75. };
  76. /*
  77. *
  78. * Последовательность
  79. *
  80. */
  81. мир.разобрать(`
  82. создать сцену
  83. настроить мышь
  84. обновить сцену
  85. уведомить о мыши
  86. изменили мышь
  87. уведомить об управлении
  88. `);