like2d 2.8.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +44 -41
  2. package/dist/__benchmarks__/vector2.bench.d.ts +2 -0
  3. package/dist/__benchmarks__/vector2.bench.d.ts.map +1 -0
  4. package/dist/__benchmarks__/vector2.bench.js +74 -0
  5. package/dist/{core → audio}/audio.d.ts +21 -9
  6. package/dist/audio/audio.d.ts.map +1 -0
  7. package/dist/{core → audio}/audio.js +15 -4
  8. package/dist/audio/index.d.ts +2 -0
  9. package/dist/audio/index.d.ts.map +1 -0
  10. package/dist/engine.d.ts +30 -15
  11. package/dist/engine.d.ts.map +1 -1
  12. package/dist/engine.js +79 -160
  13. package/dist/events.d.ts +86 -0
  14. package/dist/events.d.ts.map +1 -0
  15. package/dist/events.js +5 -0
  16. package/dist/gamecontrollerdb.txt +9 -8
  17. package/dist/graphics/canvas.d.ts +65 -0
  18. package/dist/graphics/canvas.d.ts.map +1 -0
  19. package/dist/graphics/canvas.js +224 -0
  20. package/dist/graphics/drawing.d.ts +203 -0
  21. package/dist/graphics/drawing.d.ts.map +1 -0
  22. package/dist/graphics/drawing.js +388 -0
  23. package/dist/graphics/index.d.ts +19 -0
  24. package/dist/graphics/index.d.ts.map +1 -0
  25. package/dist/graphics/index.js +13 -0
  26. package/dist/index.d.ts +18 -24
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +15 -15
  29. package/dist/input/gamepad-mapping.d.ts +134 -0
  30. package/dist/input/gamepad-mapping.d.ts.map +1 -0
  31. package/dist/input/gamepad-mapping.js +146 -0
  32. package/dist/input/gamepad.d.ts +74 -0
  33. package/dist/input/gamepad.d.ts.map +1 -0
  34. package/dist/input/gamepad.js +288 -0
  35. package/dist/input/index.d.ts +6 -0
  36. package/dist/input/index.d.ts.map +1 -0
  37. package/dist/input/index.js +1 -0
  38. package/dist/input/input.d.ts +76 -0
  39. package/dist/input/input.d.ts.map +1 -0
  40. package/dist/input/input.js +164 -0
  41. package/dist/input/keyboard.d.ts +15 -0
  42. package/dist/input/keyboard.d.ts.map +1 -0
  43. package/dist/input/keyboard.js +53 -0
  44. package/dist/input/mouse.d.ts +108 -0
  45. package/dist/input/mouse.d.ts.map +1 -0
  46. package/dist/input/mouse.js +241 -0
  47. package/dist/like.d.ts +80 -0
  48. package/dist/like.d.ts.map +1 -0
  49. package/dist/like.js +5 -0
  50. package/dist/math/index.d.ts +18 -0
  51. package/dist/math/index.d.ts.map +1 -0
  52. package/dist/math/index.js +17 -0
  53. package/dist/math/rect.d.ts +68 -0
  54. package/dist/math/rect.d.ts.map +1 -0
  55. package/dist/{core → math}/rect.js +48 -66
  56. package/dist/math/vector2.d.ts +133 -0
  57. package/dist/math/vector2.d.ts.map +1 -0
  58. package/dist/math/vector2.js +111 -0
  59. package/dist/prefab-scenes/index.d.ts +8 -0
  60. package/dist/prefab-scenes/index.d.ts.map +1 -0
  61. package/dist/prefab-scenes/index.js +7 -0
  62. package/dist/prefab-scenes/mapGamepad.d.ts +28 -0
  63. package/dist/prefab-scenes/mapGamepad.d.ts.map +1 -0
  64. package/dist/prefab-scenes/mapGamepad.js +181 -0
  65. package/dist/prefab-scenes/startScreen.d.ts +59 -0
  66. package/dist/prefab-scenes/startScreen.d.ts.map +1 -0
  67. package/dist/{scenes/startup.js → prefab-scenes/startScreen.js} +48 -8
  68. package/dist/scene.d.ts +104 -6
  69. package/dist/scene.d.ts.map +1 -1
  70. package/dist/scene.js +28 -1
  71. package/dist/timer/index.d.ts +2 -0
  72. package/dist/timer/index.d.ts.map +1 -0
  73. package/dist/timer/timer.d.ts +32 -0
  74. package/dist/timer/timer.d.ts.map +1 -0
  75. package/dist/{core → timer}/timer.js +19 -14
  76. package/package.json +27 -2
  77. package/dist/core/audio.d.ts.map +0 -1
  78. package/dist/core/canvas-config.d.ts +0 -22
  79. package/dist/core/canvas-config.d.ts.map +0 -1
  80. package/dist/core/canvas-config.js +0 -14
  81. package/dist/core/canvas-manager.d.ts +0 -32
  82. package/dist/core/canvas-manager.d.ts.map +0 -1
  83. package/dist/core/canvas-manager.js +0 -179
  84. package/dist/core/events.d.ts +0 -31
  85. package/dist/core/events.d.ts.map +0 -1
  86. package/dist/core/gamepad-buttons.d.ts +0 -23
  87. package/dist/core/gamepad-buttons.d.ts.map +0 -1
  88. package/dist/core/gamepad-buttons.js +0 -36
  89. package/dist/core/gamepad-mapping.d.ts +0 -19
  90. package/dist/core/gamepad-mapping.d.ts.map +0 -1
  91. package/dist/core/gamepad-mapping.js +0 -223
  92. package/dist/core/gamepad.d.ts +0 -61
  93. package/dist/core/gamepad.d.ts.map +0 -1
  94. package/dist/core/gamepad.js +0 -237
  95. package/dist/core/graphics.d.ts +0 -93
  96. package/dist/core/graphics.d.ts.map +0 -1
  97. package/dist/core/graphics.js +0 -289
  98. package/dist/core/input-state.d.ts +0 -14
  99. package/dist/core/input-state.d.ts.map +0 -1
  100. package/dist/core/input-state.js +0 -50
  101. package/dist/core/input.d.ts +0 -33
  102. package/dist/core/input.d.ts.map +0 -1
  103. package/dist/core/input.js +0 -117
  104. package/dist/core/keyboard.d.ts +0 -16
  105. package/dist/core/keyboard.d.ts.map +0 -1
  106. package/dist/core/keyboard.js +0 -83
  107. package/dist/core/like.d.ts +0 -59
  108. package/dist/core/like.d.ts.map +0 -1
  109. package/dist/core/mouse.d.ts +0 -45
  110. package/dist/core/mouse.d.ts.map +0 -1
  111. package/dist/core/mouse.js +0 -182
  112. package/dist/core/rect.d.ts +0 -26
  113. package/dist/core/rect.d.ts.map +0 -1
  114. package/dist/core/timer.d.ts +0 -18
  115. package/dist/core/timer.d.ts.map +0 -1
  116. package/dist/core/vector2.d.ts +0 -26
  117. package/dist/core/vector2.d.ts.map +0 -1
  118. package/dist/core/vector2.js +0 -105
  119. package/dist/scenes/startup.d.ts +0 -18
  120. package/dist/scenes/startup.d.ts.map +0 -1
  121. /package/dist/{core/events.js → audio/index.js} +0 -0
  122. /package/dist/{core/like.js → timer/index.js} +0 -0
package/dist/engine.js CHANGED
@@ -1,92 +1,57 @@
1
- import { Audio } from './core/audio';
2
- import { Input } from './core/input';
3
- import { Timer } from './core/timer';
4
- import { Keyboard } from './core/keyboard';
5
- import { Mouse } from './core/mouse';
6
- import { Gamepad } from './core/gamepad';
7
- import { newState, bindGraphics } from './core/graphics';
8
- import { CanvasManager } from './core/canvas-manager';
1
+ /**
2
+ * @module engine
3
+ * @description Core game engine - lifecycle management and event dispatch.
4
+ */
5
+ import { Audio } from './audio/audio';
6
+ import { Input } from './input/input';
7
+ import { Timer } from './timer/timer';
8
+ import { Keyboard } from './input/keyboard';
9
+ import { Mouse } from './input/mouse';
10
+ import { Gamepad } from './input/gamepad';
11
+ import { bindGraphics } from './graphics/index';
12
+ import { Canvas } from './graphics/canvas';
13
+ import { sceneDispatch } from './scene';
14
+ /**
15
+ * @private
16
+ * Core game engine managing the event loop and subsystems.
17
+ */
9
18
  export class Engine {
10
19
  constructor(container) {
11
- Object.defineProperty(this, "canvas", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
- Object.defineProperty(this, "isRunning", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: false
22
- });
23
- Object.defineProperty(this, "lastTime", {
24
- enumerable: true,
25
- configurable: true,
26
- writable: true,
27
- value: 0
28
- });
29
20
  Object.defineProperty(this, "container", {
30
21
  enumerable: true,
31
22
  configurable: true,
32
23
  writable: true,
33
- value: void 0
34
- });
35
- Object.defineProperty(this, "canvasManager", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: void 0
40
- });
41
- Object.defineProperty(this, "handleEvent", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: null
46
- });
47
- Object.defineProperty(this, "currentScene", {
48
- enumerable: true,
49
- configurable: true,
50
- writable: true,
51
- value: null
24
+ value: container
52
25
  });
53
- Object.defineProperty(this, "gfxState", {
26
+ /** The canvas on which we bind all events. Not always the same canvas
27
+ * that we render to. */
28
+ Object.defineProperty(this, "canvas", {
54
29
  enumerable: true,
55
30
  configurable: true,
56
31
  writable: true,
57
32
  value: void 0
58
33
  });
59
- // Event handler references for cleanup
60
- Object.defineProperty(this, "windowFocusHandler", {
61
- enumerable: true,
62
- configurable: true,
63
- writable: true,
64
- value: null
65
- });
66
- Object.defineProperty(this, "windowBlurHandler", {
67
- enumerable: true,
68
- configurable: true,
69
- writable: true,
70
- value: null
71
- });
72
- Object.defineProperty(this, "canvasFocusHandler", {
34
+ Object.defineProperty(this, "isRunning", {
73
35
  enumerable: true,
74
36
  configurable: true,
75
37
  writable: true,
76
- value: null
38
+ value: false
77
39
  });
78
- Object.defineProperty(this, "canvasBlurHandler", {
40
+ Object.defineProperty(this, "lastTime", {
79
41
  enumerable: true,
80
42
  configurable: true,
81
43
  writable: true,
82
- value: null
44
+ value: 0
83
45
  });
84
- Object.defineProperty(this, "fullscreenChangeHandler", {
46
+ Object.defineProperty(this, "abort", {
85
47
  enumerable: true,
86
48
  configurable: true,
87
49
  writable: true,
88
- value: null
50
+ value: new AbortController()
89
51
  });
52
+ /**
53
+ * The Like interface providing access to all engine subsystems.
54
+ */
90
55
  Object.defineProperty(this, "like", {
91
56
  enumerable: true,
92
57
  configurable: true,
@@ -94,23 +59,25 @@ export class Engine {
94
59
  value: void 0
95
60
  });
96
61
  this.canvas = document.createElement('canvas');
97
- this.canvas.style.border = '1px solid #ccc';
98
- this.canvas.style.display = 'block';
99
- const ctx = this.canvas.getContext('2d');
100
- if (!ctx)
101
- throw new Error('Failed to get 2D context');
102
- this.container = container;
62
+ const canvas = new Canvas(this.canvas, this.dispatch.bind(this), this.abort.signal);
63
+ this.canvas.addEventListener("like:updateRenderTarget", (event) => {
64
+ if (!(event instanceof CustomEvent))
65
+ return;
66
+ this.like.gfx = bindGraphics(event.detail.target.getContext('2d'));
67
+ });
103
68
  this.container.appendChild(this.canvas);
104
- this.canvasManager = new CanvasManager(this.canvas, this.container, ctx, { pixelResolution: null, fullscreen: false });
105
- const renderTarget = this.canvasManager.getRenderTarget();
106
- this.gfxState = newState(renderTarget.ctx);
107
- let gfx = bindGraphics(this.gfxState);
69
+ let gfx = bindGraphics(this.canvas.getContext('2d'));
70
+ const props = {
71
+ canvas: this.canvas,
72
+ dispatch: this.dispatch.bind(this),
73
+ abort: this.abort.signal,
74
+ };
108
75
  const audio = new Audio();
109
- const timer = new Timer();
110
- const keyboard = new Keyboard(this.canvas);
111
- const mouse = new Mouse(this.canvas, (cssX, cssY) => this.canvasManager.transformMousePosition(cssX, cssY));
112
- const gamepad = new Gamepad();
113
- const input = new Input({ keyboard, mouse, gamepad });
76
+ const timer = new Timer(props);
77
+ const keyboard = new Keyboard(props);
78
+ const mouse = new Mouse(props);
79
+ const gamepad = new Gamepad(props);
80
+ const input = new Input(props.dispatch, { keyboard, mouse, gamepad });
114
81
  this.like = {
115
82
  audio,
116
83
  timer,
@@ -119,76 +86,43 @@ export class Engine {
119
86
  mouse,
120
87
  gamepad,
121
88
  gfx,
122
- setMode: (m) => this.setMode(m),
123
- getMode: () => this.canvasManager.getMode(),
124
- getCanvasSize: () => this.canvasManager.getCanvasSize(),
89
+ canvas,
90
+ start: this.start.bind(this),
91
+ dispose: this.dispose.bind(this),
125
92
  setScene: (scene) => {
126
- this.currentScene = scene;
127
- scene?.load?.(this.like);
93
+ if (scene) {
94
+ this.like.handleEvent = (event) => sceneDispatch(scene, this.like, event);
95
+ if (this.isRunning)
96
+ this.dispatch("load", []);
97
+ }
98
+ else {
99
+ this.like.handleEvent = undefined;
100
+ }
128
101
  },
129
- };
130
- this.canvasManager.onResize = () => {
131
- const target = this.canvasManager.getRenderTarget();
132
- this.gfxState = newState(target.ctx);
133
- this.like.gfx = bindGraphics(this.gfxState);
134
- };
135
- keyboard.onKeyEvent = (scancode, keycode, type) => {
136
- this.dispatch(type === 'keydown' ? 'keypressed' : 'keyreleased', [scancode, keycode]);
137
- };
138
- mouse.onMouseMove = (pos, relative) => {
139
- this.dispatch('mousemoved', [pos, relative]);
140
- };
141
- mouse.onMouseDown = (pos, button) => {
142
- this.dispatch('mousepressed', [pos, button]);
143
- };
144
- mouse.onMouseUp = (pos, button) => {
145
- this.dispatch('mousereleased', [pos, button]);
146
- };
147
- gamepad.onButtonEvent = (gpIndex, buttonIndex, buttonName, pressed) => {
148
- this.dispatch(pressed ? 'gamepadpressed' : 'gamepadreleased', [gpIndex, buttonIndex, buttonName]);
149
- };
150
- this.windowFocusHandler = () => this.dispatch('focus', []);
151
- this.windowBlurHandler = () => this.dispatch('blur', []);
152
- this.canvasFocusHandler = () => this.dispatch('focus', []);
153
- this.canvasBlurHandler = () => this.dispatch('blur', []);
154
- this.fullscreenChangeHandler = () => {
155
- const mode = this.canvasManager.getMode();
156
- const isFullscreen = !!document.fullscreenElement;
157
- if (mode.fullscreen !== isFullscreen) {
158
- this.canvasManager.setMode({ ...mode, fullscreen: isFullscreen });
102
+ callOwnHandlers: (event) => {
103
+ if (event.type in this.like)
104
+ this.like[event.type](...event.args);
159
105
  }
160
106
  };
161
- window.addEventListener('focus', this.windowFocusHandler);
162
- window.addEventListener('blur', this.windowBlurHandler);
163
- this.canvas.addEventListener('focus', this.canvasFocusHandler);
164
- this.canvas.addEventListener('blur', this.canvasBlurHandler);
165
- document.addEventListener('fullscreenchange', this.fullscreenChangeHandler);
107
+ window.addEventListener('focus', () => this.dispatch('focus', ['tab']));
108
+ window.addEventListener('blur', () => this.dispatch('blur', ['tab']));
109
+ this.canvas.addEventListener('focus', () => this.dispatch('focus', ['canvas']));
166
110
  }
167
111
  dispatch(type, args) {
168
- if (!this.handleEvent)
169
- return;
170
- const event = { type, args, timestamp: performance.now() };
171
- if (this.currentScene) {
172
- this.currentScene.handleEvent?.(this.like, event);
173
- const method = this.currentScene[event.type];
174
- method?.call(this.currentScene, this.like, ...args);
112
+ const event = { type, args, timestamp: this.like.timer.getTime() };
113
+ if (this.like.handleEvent) {
114
+ this.like.handleEvent(event);
175
115
  }
176
116
  else {
177
- this.handleEvent(event);
117
+ this.like.callOwnHandlers(event);
178
118
  }
179
119
  }
180
- setMode(mode) {
181
- const currentMode = this.canvasManager.getMode();
182
- if ('fullscreen' in mode && mode.fullscreen !== currentMode.fullscreen) {
183
- mode.fullscreen ? this.container.requestFullscreen().catch(console.error) : document.exitFullscreen();
184
- }
185
- this.canvasManager.setMode({ ...currentMode, ...mode });
186
- }
187
- async start(handleEvent) {
188
- this.handleEvent = handleEvent;
120
+ /**
121
+ * Start the game loop.
122
+ */
123
+ async start() {
189
124
  this.isRunning = true;
190
125
  this.lastTime = performance.now();
191
- await this.like.gamepad.init();
192
126
  const loop = () => {
193
127
  if (!this.isRunning)
194
128
  return;
@@ -196,37 +130,22 @@ export class Engine {
196
130
  const dt = (now - this.lastTime) / 1000;
197
131
  this.lastTime = now;
198
132
  if (!this.like.timer.isSleeping()) {
199
- this.like.timer.update(dt);
200
- const { pressed, released } = this.like.input.update();
201
- pressed.forEach(action => this.dispatch('actionpressed', [action]));
202
- released.forEach(action => this.dispatch('actionreleased', [action]));
133
+ this.canvas.dispatchEvent(new CustomEvent("update", { detail: { dt } }));
203
134
  this.dispatch('update', [dt]);
204
135
  }
136
+ this.canvas.dispatchEvent(new CustomEvent("like:preDraw"));
205
137
  this.dispatch('draw', []);
206
- this.canvasManager.present();
138
+ this.canvas.dispatchEvent(new CustomEvent("like:postDraw"));
207
139
  requestAnimationFrame(loop);
208
140
  };
209
141
  this.dispatch('load', []);
210
142
  requestAnimationFrame(loop);
211
143
  }
144
+ /**
145
+ * Clean up all resources and stop the engine.
146
+ */
212
147
  dispose() {
213
148
  this.isRunning = false;
214
- this.like.keyboard.dispose();
215
- this.like.mouse.dispose();
216
- this.like.gamepad.dispose();
217
- this.canvasManager.dispose();
218
- if (this.windowFocusHandler)
219
- window.removeEventListener('focus', this.windowFocusHandler);
220
- if (this.windowBlurHandler)
221
- window.removeEventListener('blur', this.windowBlurHandler);
222
- if (this.canvasFocusHandler)
223
- this.canvas.removeEventListener('focus', this.canvasFocusHandler);
224
- if (this.canvasBlurHandler)
225
- this.canvas.removeEventListener('blur', this.canvasBlurHandler);
226
- if (this.fullscreenChangeHandler)
227
- document.removeEventListener('fullscreenchange', this.fullscreenChangeHandler);
228
- if (this.canvas.parentNode === this.container) {
229
- this.container.removeChild(this.canvas);
230
- }
149
+ this.abort.abort();
231
150
  }
232
151
  }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @module events
3
+ * @description All events that flow through the engine.
4
+ */
5
+ import type { Vector2 } from './math/vector2';
6
+ import type { LikeButton } from './input';
7
+ export type MouseButton = 'left' | 'middle' | 'right';
8
+ declare global {
9
+ interface HTMLElementEventMap {
10
+ ['like:mousemoved']: CustomEvent<{
11
+ pos: Vector2;
12
+ delta: Vector2;
13
+ }>;
14
+ ['like:updateRenderTarget']: CustomEvent<{
15
+ target: HTMLCanvasElement;
16
+ }>;
17
+ ['like:resizeCanvas']: CustomEvent<{
18
+ size: Vector2;
19
+ }>;
20
+ ['like:preDraw']: CustomEvent<{}>;
21
+ ['like:postDraw']: CustomEvent<{}>;
22
+ ['like:update']: CustomEvent<{
23
+ dt: number;
24
+ }>;
25
+ }
26
+ }
27
+ /**
28
+ * The master type will all events on it.
29
+ */
30
+ export type EventMap = {
31
+ /** Game initialization. Called once before the first frame. */
32
+ load: [];
33
+ /** Frame update. dt is delta time in seconds (time since last frame). */
34
+ update: [dt: number];
35
+ /** Render frame. Clear the screen and draw your game here. */
36
+ draw: [];
37
+ /** Canvas was resized. Used mostly in native mode, though setMode may send it too. */
38
+ resize: [size: Vector2];
39
+ /** Physical key pressed. scancode is the physical key, keycode is the character. */
40
+ keypressed: [scancode: string, keycode: string];
41
+ /** Physical key released. */
42
+ keyreleased: [scancode: string, keycode: string];
43
+ /** Canvas or tab gained focus. Game may resume audio/updates. */
44
+ focus: [source: 'canvas' | 'tab'];
45
+ /** Canvas or tab lost focus. Game may pause audio/updates. */
46
+ blur: [source: 'canvas' | 'tab'];
47
+ /** Mouse moved event. `pos` is absolute, `delta` is relative. */
48
+ mousemoved: [pos: Vector2, delta: Vector2];
49
+ /** Mouse button pressed. pos in canvas pixels. Button: 1=left, 2=middle, 3=right. */
50
+ mousepressed: [pos: Vector2, button: MouseButton];
51
+ /** Mouse button released. */
52
+ mousereleased: [pos: Vector2, button: MouseButton];
53
+ /** Gamepad button pressed. `source` is controller index, `name` is derived from a mapping on the raw `num` */
54
+ gamepadpressed: [source: number, name: LikeButton, num: number];
55
+ /** Gamepad button released. `source` is controller index, `name` is derived from a mapping on the raw `num` */
56
+ gamepadreleased: [source: number, name: LikeButton, num: number];
57
+ /**
58
+ * Fires when a gamepad is connected.
59
+ */
60
+ gamepadconnected: [index: number];
61
+ /** Fires when a gamepad is disconnected. */
62
+ gamepaddisconnected: [index: number];
63
+ /** Mapped action triggered. See {@link Input} for action mapping. */
64
+ actionpressed: [action: string];
65
+ /** Mapped action released. */
66
+ actionreleased: [action: string];
67
+ };
68
+ export type EventType = keyof EventMap;
69
+ export type LikeMouseEvent = 'mousemoved' | 'mousepressed' | 'mousereleased';
70
+ export type LikeKeyboardEvent = 'keypressed' | 'keyreleased';
71
+ export type LikeGamepadEvent = 'gamepadpressed' | 'gamepadreleased' | 'gamepadconnected' | 'gamepaddisconnected';
72
+ /**
73
+ * Generic dispatcher - each module defines its own event subset
74
+ */
75
+ export type Dispatcher<T extends EventType> = <K extends T>(type: K, args: EventMap[K]) => void;
76
+ /**
77
+ * Discriminated union of all event objects.
78
+ */
79
+ export type LikeEvent = {
80
+ [K in EventType]: {
81
+ type: K;
82
+ args: EventMap[K];
83
+ timestamp: number;
84
+ };
85
+ }[EventType];
86
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
package/dist/events.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @module events
3
+ * @description All events that flow through the engine.
4
+ */
5
+ export {};
@@ -140,7 +140,6 @@
140
140
  03000000ad1b000001f9000000000000,BB 070,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
141
141
  03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,
142
142
  03000000bc2000005250000000000000,Beitong G3,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a3,righty:a4,start:b15,x:b3,y:b4,platform:Windows,
143
- 030000000d0500000208000000000000,Belkin Nostromo N40,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,
144
143
  03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
145
144
  03000000bc2000000055000000000000,Betop BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
146
145
  03000000790000000700000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,
@@ -386,7 +385,6 @@
386
385
  030000008f0e00001300000000000000,Logic3,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
387
386
  030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
388
387
  030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
389
- 030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows,
390
388
  030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
391
389
  030000006d0400001dc2000000000000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
392
390
  030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
@@ -396,6 +394,7 @@
396
394
  030000006d0400001ac2000000000000,Logitech Precision,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
397
395
  030000006d04000009c2000000000000,Logitech WingMan,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows,
398
396
  030000006d0400000bc2000000000000,Logitech WingMan Action Pad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:a5~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:a2~,start:b8,x:b3,y:b4,platform:Windows,
397
+ 030000006d04000011c2000000000000,Logitech WingMan Cordless,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows,
399
398
  030000006d0400000ac2000000000000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows,
400
399
  03000000380700005645000000000000,Lynx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
401
400
  03000000222200006000000000000000,Macally,a:b1,b:b2,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
@@ -486,6 +485,7 @@
486
485
  03000000ec110000e1a7000000000000,Nintendo Switch,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
487
486
  030000007e0500006920000000000000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Windows,
488
487
  030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
488
+ 030000000d0500000208000000000000,Nostromo N40,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,
489
489
  030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows,
490
490
  030000007e0500007320000000000000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Windows,
491
491
  030000007e0500001920000000000000,NSO N64 Controller,+rightx:b8,+righty:b2,-rightx:b3,-righty:b7,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Windows,
@@ -942,6 +942,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
942
942
  03000000120c0000200e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,
943
943
  03000000120c0000210e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,
944
944
  030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
945
+ 03000000501d00009e61000001000000,CoreOrbits GamerPad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,
945
946
  03000000d8140000cecf000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,
946
947
  03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X,
947
948
  03000000a306000022f6000001030000,Cyborg V3 Rumble Pad PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,
@@ -1434,7 +1435,6 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
1434
1435
  030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
1435
1436
  030000006d040000d1ca000000000000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1436
1437
  030000006d040000d1ca000011010000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1437
- 030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1438
1438
  030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1439
1439
  030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1440
1440
  030000006d0400001dc2000014400000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
@@ -1443,7 +1443,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
1443
1443
  030000006d04000019c2000011010000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1444
1444
  030000006d0400001fc2000005030000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
1445
1445
  030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1446
- 030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux,
1446
+ 030000006d04000019c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1447
+ 030000006d04000011c2000010010000,Logitech WingMan RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux,
1447
1448
  030000006d0400000ac2000010010000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux,
1448
1449
  05000000380700006652000025010000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
1449
1450
  03000000380700008532000010010000,Mad Catz Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
@@ -1546,7 +1547,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
1546
1547
  05000000010000000100000003000000,Nintendo Wii Remote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
1547
1548
  050000007e0500003003000001000000,Nintendo Wii U Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,
1548
1549
  050000005a1d00000218000003000000,Nokia GC 5000,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
1549
- 030000000d0500000308000010010000,Nostromo n45 Dual Analog,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux,
1550
+ 030000000d0500000308000010010000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux,
1550
1551
  030000007e0500007320000011010000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Linux,
1551
1552
  030000007e0500001920000011810000,NSO N64 Controller,+rightx:b2,+righty:b3,-rightx:b4,-righty:b10,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b7,righttrigger:b9,start:b11,platform:Linux,
1552
1553
  050000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Linux,
@@ -2108,7 +2109,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
2108
2109
  526574726f5553422e636f6d20534e45,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android,
2109
2110
  64643037633038386238303966376137,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android,
2110
2111
  37656564346533643138636436356230,Rock Candy Switch Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android,
2111
- 33373336396634316434323337666361,RumblePad 2,a:b22,b:b23,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b24,platform:Android,
2112
+ 33373336396634316434323337666361,Logitech RumblePad 2,a:b22,b:b23,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b24,platform:Android,
2112
2113
  36363537303435333566386638366333,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2113
2114
  53616d73756e672047616d6520506164,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2114
2115
  66386565396238363534313863353065,Sanwa PlayOnline Mobile,a:b21,b:b22,back:b23,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b24,platform:Android,
@@ -2171,8 +2172,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
2171
2172
  050000005e040000ea02000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2172
2173
  050000005e040000fd020000ff7f3f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2173
2174
  050000005e040000120b000000783f00,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android,
2174
- 050000005e040000120b000000783f80,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2175
- 050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2175
+ 050000005e040000120b000000783f80,Xbox Series Controller,a:b0,b:b1,back:b4,misc1:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2176
+ 050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b4,misc1:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2176
2177
  65633038363832353634653836396239,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
2177
2178
  050000001727000044310000ffff3f00,XiaoMi Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android,
2178
2179
 
@@ -0,0 +1,65 @@
1
+ import { type Dispatcher } from "../events";
2
+ import { Rectangle } from "../math/rect";
3
+ import { type Vector2 } from "../math/vector2";
4
+ export type CanvasModeOptions = {
5
+ fullscreen: boolean;
6
+ };
7
+ export type CanvasSize = Vector2 | 'native';
8
+ export declare class Canvas {
9
+ /** The ultimately visible canvas in the browser */
10
+ private displayCanvas;
11
+ private dispatch;
12
+ private abort;
13
+ /** The canvas that we're drawing to with `like.gfx` functions.
14
+ * If it's the same as displayCanvas, we're in native mode.
15
+ * Otherwise, we're in pixelart mode, consisting of nearest -> linear scaling.
16
+ */
17
+ private renderCanvas;
18
+ private resizeTimeoutId;
19
+ constructor(
20
+ /** The ultimately visible canvas in the browser */
21
+ displayCanvas: HTMLCanvasElement, dispatch: Dispatcher<'resize'>, abort: AbortSignal);
22
+ /** Get a unified canvas info object. */
23
+ getMode(): {
24
+ size: Vector2;
25
+ flags: CanvasModeOptions;
26
+ };
27
+ /** Set the game's apparent resolution, fullscreen, etc.
28
+ *
29
+ * ### `'native'` mode
30
+ * Keeps the canvas pixel resolution
31
+ * the same as the physical pixel resolution of the
32
+ * device.
33
+ *
34
+ * ### Pixel art mode `[width, height]`
35
+ * The canvas will use prescaling to keep your pixel
36
+ * games looking sharp, but without the uneven pixels
37
+ * caused by the naive approach.
38
+ *
39
+ * @param size 'native' for native mode, otherwise [width, height]
40
+ * @param flags optional options.
41
+ */
42
+ setMode(size: CanvasSize, flags?: Partial<CanvasModeOptions>): void;
43
+ /** Get the apparent (in-game) canvas size. */
44
+ getSize(): Vector2;
45
+ private dispatchResize;
46
+ /** Sometimes you want a screen rect! */
47
+ getRect(): Rectangle;
48
+ /** Get the actual (physical) canvas size on screen. */
49
+ private getDisplayPixelSize;
50
+ /** Are we fullscreen? */
51
+ getFullscreen(): boolean;
52
+ /** Set fullscreen. */
53
+ setFullscreen(fullscreen: boolean): void;
54
+ /**
55
+ * Called internally by the engine before
56
+ * rendering a frame.
57
+ */
58
+ private preDraw;
59
+ /** Called every frame by the engine after drawing */
60
+ private postDraw;
61
+ /** @returns if size was changed. */
62
+ static setCanvasElemSize(canvas: HTMLCanvasElement, newSize: Vector2): boolean;
63
+ static getCanvasElemSize(canvas: HTMLCanvasElement): Vector2;
64
+ }
65
+ //# sourceMappingURL=canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/graphics/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAQ,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5C,qBAAa,MAAM;IAUX,mDAAmD;IACnD,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IAZjB;;;MAGE;IACF,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO,CAAC,eAAe,CAAU;;IAG7B,mDAAmD;IAC3C,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC9B,KAAK,EAAE,WAAW;IAoE9B,wCAAwC;IACxC,OAAO,IAAI;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,iBAAiB,CAAA;KAAE;IAStD;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,GAAE,OAAO,CAAC,iBAAiB,CAAM;IA6BhE,8CAA8C;IAC9C,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,cAAc;IAWtB,wCAAwC;IACxC,OAAO,IAAI,SAAS;IAIpB,uDAAuD;IACvD,OAAO,CAAC,mBAAmB;IAO3B,yBAAyB;IACzB,aAAa,IAAI,OAAO;IAIxB,sBAAsB;IACtB,aAAa,CAAC,UAAU,EAAE,OAAO;IAWjC;;;OAGG;IACH,OAAO,CAAC,OAAO;IAmBf,qDAAqD;IACrD,OAAO,CAAC,QAAQ;IA2BhB,qCAAqC;IACrC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAO9E,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;CAG/D"}