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.
- package/README.md +44 -41
- package/dist/__benchmarks__/vector2.bench.d.ts +2 -0
- package/dist/__benchmarks__/vector2.bench.d.ts.map +1 -0
- package/dist/__benchmarks__/vector2.bench.js +74 -0
- package/dist/{core → audio}/audio.d.ts +21 -9
- package/dist/audio/audio.d.ts.map +1 -0
- package/dist/{core → audio}/audio.js +15 -4
- package/dist/audio/index.d.ts +2 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/engine.d.ts +30 -15
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +79 -160
- package/dist/events.d.ts +86 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +5 -0
- package/dist/gamecontrollerdb.txt +9 -8
- package/dist/graphics/canvas.d.ts +65 -0
- package/dist/graphics/canvas.d.ts.map +1 -0
- package/dist/graphics/canvas.js +224 -0
- package/dist/graphics/drawing.d.ts +203 -0
- package/dist/graphics/drawing.d.ts.map +1 -0
- package/dist/graphics/drawing.js +388 -0
- package/dist/graphics/index.d.ts +19 -0
- package/dist/graphics/index.d.ts.map +1 -0
- package/dist/graphics/index.js +13 -0
- package/dist/index.d.ts +18 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -15
- package/dist/input/gamepad-mapping.d.ts +134 -0
- package/dist/input/gamepad-mapping.d.ts.map +1 -0
- package/dist/input/gamepad-mapping.js +146 -0
- package/dist/input/gamepad.d.ts +74 -0
- package/dist/input/gamepad.d.ts.map +1 -0
- package/dist/input/gamepad.js +288 -0
- package/dist/input/index.d.ts +6 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +1 -0
- package/dist/input/input.d.ts +76 -0
- package/dist/input/input.d.ts.map +1 -0
- package/dist/input/input.js +164 -0
- package/dist/input/keyboard.d.ts +15 -0
- package/dist/input/keyboard.d.ts.map +1 -0
- package/dist/input/keyboard.js +53 -0
- package/dist/input/mouse.d.ts +108 -0
- package/dist/input/mouse.d.ts.map +1 -0
- package/dist/input/mouse.js +241 -0
- package/dist/like.d.ts +80 -0
- package/dist/like.d.ts.map +1 -0
- package/dist/like.js +5 -0
- package/dist/math/index.d.ts +18 -0
- package/dist/math/index.d.ts.map +1 -0
- package/dist/math/index.js +17 -0
- package/dist/math/rect.d.ts +68 -0
- package/dist/math/rect.d.ts.map +1 -0
- package/dist/{core → math}/rect.js +48 -66
- package/dist/math/vector2.d.ts +133 -0
- package/dist/math/vector2.d.ts.map +1 -0
- package/dist/math/vector2.js +111 -0
- package/dist/prefab-scenes/index.d.ts +8 -0
- package/dist/prefab-scenes/index.d.ts.map +1 -0
- package/dist/prefab-scenes/index.js +7 -0
- package/dist/prefab-scenes/mapGamepad.d.ts +28 -0
- package/dist/prefab-scenes/mapGamepad.d.ts.map +1 -0
- package/dist/prefab-scenes/mapGamepad.js +181 -0
- package/dist/prefab-scenes/startScreen.d.ts +59 -0
- package/dist/prefab-scenes/startScreen.d.ts.map +1 -0
- package/dist/{scenes/startup.js → prefab-scenes/startScreen.js} +48 -8
- package/dist/scene.d.ts +104 -6
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +28 -1
- package/dist/timer/index.d.ts +2 -0
- package/dist/timer/index.d.ts.map +1 -0
- package/dist/timer/timer.d.ts +32 -0
- package/dist/timer/timer.d.ts.map +1 -0
- package/dist/{core → timer}/timer.js +19 -14
- package/package.json +27 -2
- package/dist/core/audio.d.ts.map +0 -1
- package/dist/core/canvas-config.d.ts +0 -22
- package/dist/core/canvas-config.d.ts.map +0 -1
- package/dist/core/canvas-config.js +0 -14
- package/dist/core/canvas-manager.d.ts +0 -32
- package/dist/core/canvas-manager.d.ts.map +0 -1
- package/dist/core/canvas-manager.js +0 -179
- package/dist/core/events.d.ts +0 -31
- package/dist/core/events.d.ts.map +0 -1
- package/dist/core/gamepad-buttons.d.ts +0 -23
- package/dist/core/gamepad-buttons.d.ts.map +0 -1
- package/dist/core/gamepad-buttons.js +0 -36
- package/dist/core/gamepad-mapping.d.ts +0 -19
- package/dist/core/gamepad-mapping.d.ts.map +0 -1
- package/dist/core/gamepad-mapping.js +0 -223
- package/dist/core/gamepad.d.ts +0 -61
- package/dist/core/gamepad.d.ts.map +0 -1
- package/dist/core/gamepad.js +0 -237
- package/dist/core/graphics.d.ts +0 -93
- package/dist/core/graphics.d.ts.map +0 -1
- package/dist/core/graphics.js +0 -289
- package/dist/core/input-state.d.ts +0 -14
- package/dist/core/input-state.d.ts.map +0 -1
- package/dist/core/input-state.js +0 -50
- package/dist/core/input.d.ts +0 -33
- package/dist/core/input.d.ts.map +0 -1
- package/dist/core/input.js +0 -117
- package/dist/core/keyboard.d.ts +0 -16
- package/dist/core/keyboard.d.ts.map +0 -1
- package/dist/core/keyboard.js +0 -83
- package/dist/core/like.d.ts +0 -59
- package/dist/core/like.d.ts.map +0 -1
- package/dist/core/mouse.d.ts +0 -45
- package/dist/core/mouse.d.ts.map +0 -1
- package/dist/core/mouse.js +0 -182
- package/dist/core/rect.d.ts +0 -26
- package/dist/core/rect.d.ts.map +0 -1
- package/dist/core/timer.d.ts +0 -18
- package/dist/core/timer.d.ts.map +0 -1
- package/dist/core/vector2.d.ts +0 -26
- package/dist/core/vector2.d.ts.map +0 -1
- package/dist/core/vector2.js +0 -105
- package/dist/scenes/startup.d.ts +0 -18
- package/dist/scenes/startup.d.ts.map +0 -1
- /package/dist/{core/events.js → audio/index.js} +0 -0
- /package/dist/{core/like.js → timer/index.js} +0 -0
package/dist/engine.js
CHANGED
|
@@ -1,92 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
38
|
+
value: false
|
|
77
39
|
});
|
|
78
|
-
Object.defineProperty(this, "
|
|
40
|
+
Object.defineProperty(this, "lastTime", {
|
|
79
41
|
enumerable: true,
|
|
80
42
|
configurable: true,
|
|
81
43
|
writable: true,
|
|
82
|
-
value:
|
|
44
|
+
value: 0
|
|
83
45
|
});
|
|
84
|
-
Object.defineProperty(this, "
|
|
46
|
+
Object.defineProperty(this, "abort", {
|
|
85
47
|
enumerable: true,
|
|
86
48
|
configurable: true,
|
|
87
49
|
writable: true,
|
|
88
|
-
value:
|
|
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.
|
|
98
|
-
this.canvas.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
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(
|
|
111
|
-
const mouse = new Mouse(
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
89
|
+
canvas,
|
|
90
|
+
start: this.start.bind(this),
|
|
91
|
+
dispose: this.dispose.bind(this),
|
|
125
92
|
setScene: (scene) => {
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
131
|
-
|
|
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.
|
|
162
|
-
window.addEventListener('blur', this.
|
|
163
|
-
this.canvas.addEventListener('focus', this.
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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.
|
|
117
|
+
this.like.callOwnHandlers(event);
|
|
178
118
|
}
|
|
179
119
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
}
|
package/dist/events.d.ts
ADDED
|
@@ -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
|
@@ -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
|
-
|
|
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
|
|
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"}
|