@typeonce/ritmo-browser 0.10.0 → 0.11.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 (58) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +6 -1
  3. package/dist/Controls.d.ts +495 -0
  4. package/dist/Controls.d.ts.map +1 -0
  5. package/dist/Controls.js +343 -0
  6. package/dist/Controls.js.map +1 -0
  7. package/dist/Gamepad.d.ts +375 -0
  8. package/dist/Gamepad.d.ts.map +1 -0
  9. package/dist/Gamepad.js +452 -0
  10. package/dist/Gamepad.js.map +1 -0
  11. package/dist/InputCapture.d.ts +46 -16
  12. package/dist/InputCapture.d.ts.map +1 -1
  13. package/dist/InputCapture.js +1 -1
  14. package/dist/InputCapture.js.map +1 -1
  15. package/dist/Keyboard.d.ts +184 -21
  16. package/dist/Keyboard.d.ts.map +1 -1
  17. package/dist/Keyboard.js +257 -91
  18. package/dist/Keyboard.js.map +1 -1
  19. package/dist/Pointer.d.ts +231 -62
  20. package/dist/Pointer.d.ts.map +1 -1
  21. package/dist/Pointer.js +205 -145
  22. package/dist/Pointer.js.map +1 -1
  23. package/dist/Touch.d.ts +73 -27
  24. package/dist/Touch.d.ts.map +1 -1
  25. package/dist/Touch.js +25 -30
  26. package/dist/Touch.js.map +1 -1
  27. package/dist/index.d.ts +10 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +10 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/internal/buttons.d.ts +52 -0
  32. package/dist/internal/buttons.d.ts.map +1 -0
  33. package/dist/internal/buttons.js +211 -0
  34. package/dist/internal/buttons.js.map +1 -0
  35. package/dist/internal/introspect.d.ts +14 -0
  36. package/dist/internal/introspect.d.ts.map +1 -0
  37. package/dist/internal/introspect.js +19 -0
  38. package/dist/internal/introspect.js.map +1 -0
  39. package/dist/internal/used.d.ts +8 -0
  40. package/dist/internal/used.d.ts.map +1 -0
  41. package/dist/internal/used.js +14 -0
  42. package/dist/internal/used.js.map +1 -0
  43. package/dist/internal/vectors.d.ts +24 -0
  44. package/dist/internal/vectors.d.ts.map +1 -0
  45. package/dist/internal/vectors.js +22 -0
  46. package/dist/internal/vectors.js.map +1 -0
  47. package/package.json +4 -3
  48. package/src/Controls.ts +799 -0
  49. package/src/Gamepad.ts +747 -0
  50. package/src/InputCapture.ts +43 -24
  51. package/src/Keyboard.ts +395 -68
  52. package/src/Pointer.ts +392 -164
  53. package/src/Touch.ts +111 -54
  54. package/src/index.ts +10 -1
  55. package/src/internal/buttons.ts +222 -0
  56. package/src/internal/introspect.ts +23 -0
  57. package/src/internal/used.ts +14 -0
  58. package/src/internal/vectors.ts +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controls.d.ts","sourceRoot":"","sources":["../src/Controls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ import * as Debug from "@typeonce/ritmo/Debug";
2
+ import { boundKeys, claim, ownersOf } from "./internal/introspect.js";
3
+ import { longer, zero } from "./internal/vectors.js";
4
+ const idleState = { held: false, pressed: false, released: false };
5
+ const isLacking = (entry) => entry._tag === "Lacking";
6
+ const isGroup = (unit) => unit._tag === "Group";
7
+ /** A merge entry's devices by name: a group's members, or the device under the entry's name. */
8
+ const membersOf = (name, unit) => isGroup(unit)
9
+ ? Object.entries(unit.members).map(([member, device]) => ({ name: member, device }))
10
+ : [{ name, device: unit }];
11
+ /**
12
+ * Declares the game's actions: `buttons` (pressed and held: jump, pause)
13
+ * and `vectors` (a direction with length at most 1: move), each bound on
14
+ * every device. Build the merged source with the returned set's `merge`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const Actions = Controls.actions({ buttons: ["jump", "pause"], vectors: ["move"] })
19
+ * ```
20
+ */
21
+ export const actions = (names) => {
22
+ const list = [...new Set(names.buttons)];
23
+ const vectorList = [...new Set(names.vectors ?? [])];
24
+ const everyAvailable = () => Object.fromEntries([...list, ...vectorList].map((name) => [name, true]));
25
+ return {
26
+ buttons: list,
27
+ vectors: vectorList,
28
+ lacking: (device, lacking) => ({ _tag: "Lacking", device, lacking }),
29
+ group: (members) => ({ _tag: "Group", members }),
30
+ merge(devices) {
31
+ const entries = Object.entries(devices).map(([name, entry]) => {
32
+ const unit = isLacking(entry) ? entry.device : entry;
33
+ return { name, members: membersOf(name, unit), lacking: new Set(isLacking(entry) ? entry.lacking : []) };
34
+ });
35
+ const all = entries.flatMap((entry) => entry.members);
36
+ for (const { device } of all)
37
+ claim(device, "a Controls merge");
38
+ let lastUsed = null;
39
+ const rebind = {};
40
+ for (const { name, device } of all) {
41
+ const candidate = device.rebind;
42
+ if (typeof candidate === "function")
43
+ rebind[name] = (bindings) => candidate.call(device, bindings);
44
+ }
45
+ const controls = {
46
+ snapshot() {
47
+ const snapshots = {};
48
+ for (const { name, device } of all)
49
+ snapshots[name] = device.snapshot();
50
+ const used = entries.filter(({ members }) => members.some(({ name }) => snapshots[name].used));
51
+ if (used.length > 0 && !used.some(({ name }) => name === lastUsed))
52
+ lastUsed = used[0].name;
53
+ const current = entries.find(({ name }) => name === lastUsed);
54
+ const merged = {};
55
+ const available = {};
56
+ for (const action of list) {
57
+ let held = false;
58
+ let pressed = false;
59
+ let released = false;
60
+ for (const { name } of all) {
61
+ const state = snapshots[name].actions[action];
62
+ if (state === undefined)
63
+ continue;
64
+ held ||= state.held;
65
+ pressed ||= state.pressed;
66
+ released ||= state.released;
67
+ }
68
+ merged[action] = held || pressed || released ? { held, pressed, released: released && !held } : idleState;
69
+ available[action] = current === undefined || !current.lacking.has(action);
70
+ }
71
+ const vectors = {};
72
+ for (const action of vectorList) {
73
+ let longest = zero;
74
+ for (const { name } of all) {
75
+ const vector = snapshots[name].vectors[action];
76
+ if (vector !== undefined)
77
+ longest = longer(longest, vector);
78
+ }
79
+ vectors[action] = longest;
80
+ available[action] = current === undefined || !current.lacking.has(action);
81
+ }
82
+ return { actions: merged, vectors, available, devices: snapshots, lastUsed };
83
+ },
84
+ rebind,
85
+ dispose() {
86
+ for (const { device } of all)
87
+ device.dispose();
88
+ },
89
+ [Debug.serviceLints]: () => [
90
+ ...entries.flatMap(({ name, lacking }) => [...lacking].map((action) => ({
91
+ severity: "info",
92
+ message: `${name} lacks ${action}, so while ${name} is the last used device the player cannot ${action}`,
93
+ fix: `fine if the game offers ${action} another way while ${name} is in use (read available.${action} from the input); otherwise bind ${action} on ${name}`
94
+ }))),
95
+ ...all.flatMap(({ name, device }) => sharedLint(name, device))
96
+ ]
97
+ };
98
+ // The checked signature carries the device types; the implementation is the same for every merge.
99
+ return controls;
100
+ },
101
+ idle: (devices) => ({
102
+ actions: Object.fromEntries(list.map((name) => [name, idleState])),
103
+ vectors: Object.fromEntries(vectorList.map((name) => [name, zero])),
104
+ available: everyAvailable(),
105
+ devices,
106
+ lastUsed: null
107
+ })
108
+ };
109
+ };
110
+ /** A device handed to more than one source: each takes its snapshots, so each sees only some presses. */
111
+ const sharedLint = (name, device) => ownersOf(device).length > 1
112
+ ? [{
113
+ severity: "warning",
114
+ message: `${name} is taken by ${ownersOf(device).join(" and ")}: each takes its snapshots, so a press reaches one of them`,
115
+ fix: `build ${name} once for each source (each Keyboard.actions(...) call is its own device), or merge it in one place`
116
+ }]
117
+ : [];
118
+ /**
119
+ * Declares the players of a local multiplayer game over `actions`: the
120
+ * `slots` (the most players at once, in join order), the button action
121
+ * that joins (`"any"` for any button action but `leave`, or any vector
122
+ * moved), and the optional one that leaves while joining is open. Build the
123
+ * input source with the returned set's `pool`. For one player on several
124
+ * devices, use the action set's `merge` instead.
125
+ *
126
+ * Pressing join on a device nobody holds gives it the first free slot; that
127
+ * snapshot reports `event: "joined"` with the player's input idle, so the
128
+ * press does nothing else. A slot keeps its name when another empties. A
129
+ * pad that disconnects keeps its slot (`connected: false`) and returns to
130
+ * it when it comes back (two pads of one model share an id, so they are
131
+ * told apart by their place in the pad list: each returns to the slot
132
+ * holding that place). Leaving by button works only while joining is
133
+ * open; otherwise `leave` is an ordinary action (a pause menu), and
134
+ * `pool.leave(slot)` frees the slot. `pool.seat(slot, device)` puts a
135
+ * player in without a press: one who is in from the start.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * const Players = Controls.players(Actions, { slots: ["p1", "p2"], join: "join", leave: "back" })
140
+ * const makePlayers = (devices: {
141
+ * readonly left: Keyboard.Actions<typeof leftKeys>
142
+ * readonly right: Keyboard.Actions<typeof rightKeys>
143
+ * readonly pads: Gamepad.Pads<typeof padBindings>
144
+ * }) => Players.pool(devices)
145
+ *
146
+ * // In a system:
147
+ * const input = resources.input.get()
148
+ * if (input.p2.event === "joined") spawnSecondPlayer()
149
+ * const move = input.p2.vectors.move
150
+ * ```
151
+ */
152
+ export const players = (actions, options) => {
153
+ const slots = [...new Set(options.slots)];
154
+ const buttons = actions.buttons;
155
+ const vectors = actions.vectors;
156
+ const join = options.join;
157
+ const leaveAction = options.leave;
158
+ const idleInput = () => ({
159
+ actions: Object.fromEntries(buttons.map((name) => [name, idleState])),
160
+ vectors: Object.fromEntries(vectors.map((name) => [name, zero])),
161
+ available: Object.fromEntries([...buttons, ...vectors].map((name) => [name, true]))
162
+ });
163
+ const empty = (event) => ({ ...idleInput(), joined: false, device: null, connected: false, event, devices: {} });
164
+ return {
165
+ slots,
166
+ idle: () => ({ joining: false, ...Object.fromEntries(slots.map((slot) => [slot, empty(null)])) }),
167
+ pool(devices) {
168
+ const entries = Object.entries(devices).map(([name, entry]) => {
169
+ const unit = isLacking(entry) ? entry.device : entry;
170
+ claim(unit, "a player pool");
171
+ return { name, unit, lacking: new Set(isLacking(entry) ? entry.lacking : []) };
172
+ });
173
+ const isPads = (unit) => unit._tag === "Pads";
174
+ /** Who holds each slot: the pool entry, the pad's place in its list, and the pad's id to find it again. */
175
+ const held = new Map();
176
+ const events = new Map();
177
+ let joining = false;
178
+ let everOpened = false;
179
+ let everSeated = false;
180
+ const wantsJoin = (snapshot) => {
181
+ const pressed = (name) => snapshot.actions[name]?.pressed === true;
182
+ if (join !== "any")
183
+ return pressed(join);
184
+ return buttons.some((name) => name !== leaveAction && pressed(name)) ||
185
+ Object.values(snapshot.vectors).some((vector) => vector.x !== 0 || vector.y !== 0);
186
+ };
187
+ const rebind = {};
188
+ for (const { name, unit } of entries) {
189
+ const candidate = unit.rebind;
190
+ if (typeof candidate === "function")
191
+ rebind[name] = (bindings) => candidate.call(unit, bindings);
192
+ }
193
+ const pool = {
194
+ snapshot() {
195
+ const units = [];
196
+ for (const { name, unit } of entries) {
197
+ if (isPads(unit))
198
+ unit.snapshot().forEach((snapshot, index) => units.push({ key: `${name}#${index}`, device: name, id: snapshot.id, connected: snapshot.connected, snapshot }));
199
+ else
200
+ units.push({ key: name, device: name, id: null, connected: true, snapshot: unit.snapshot() });
201
+ }
202
+ const byKey = new Map(units.map((unit) => [unit.key, unit]));
203
+ // A pad seated before it was plugged in is known by its id from the first snapshot it shows up in.
204
+ for (const holder of held.values()) {
205
+ const unit = byKey.get(holder.key);
206
+ if (holder.id === null && unit?.connected === true)
207
+ holder.id = unit.id;
208
+ }
209
+ const taken = new Set([...held.values()].map((holder) => holder.key));
210
+ // A pad that comes back (here or at another index) returns to the slot it holds.
211
+ for (const holder of held.values()) {
212
+ if (holder.id === null || byKey.get(holder.key)?.connected === true)
213
+ continue;
214
+ const back = units.find((unit) => unit.device === holder.device && unit.id === holder.id && unit.connected && !taken.has(unit.key));
215
+ if (back === undefined)
216
+ continue;
217
+ taken.delete(holder.key);
218
+ holder.key = back.key;
219
+ taken.add(back.key);
220
+ }
221
+ if (joining && leaveAction !== undefined) {
222
+ for (const [slot, holder] of held) {
223
+ // A slot seated since the last snapshot reports its join first; its input is idle there.
224
+ if (events.get(slot) === "joined")
225
+ continue;
226
+ const unit = byKey.get(holder.key);
227
+ const pressed = unit?.snapshot.actions?.[leaveAction]?.pressed;
228
+ if (unit?.connected === true && pressed === true) {
229
+ held.delete(slot);
230
+ taken.delete(holder.key);
231
+ events.set(slot, "left");
232
+ }
233
+ }
234
+ }
235
+ if (joining) {
236
+ for (const unit of units) {
237
+ if (taken.has(unit.key) || !unit.connected || !wantsJoin(unit.snapshot))
238
+ continue;
239
+ const free = slots.find((slot) => !held.has(slot));
240
+ if (free === undefined)
241
+ break;
242
+ held.set(free, { device: unit.device, key: unit.key, id: unit.id });
243
+ taken.add(unit.key);
244
+ events.set(free, "joined");
245
+ }
246
+ }
247
+ const result = { joining };
248
+ for (const slot of slots) {
249
+ const holder = held.get(slot);
250
+ const event = events.get(slot) ?? null;
251
+ if (holder === undefined) {
252
+ result[slot] = empty(event === "left" ? "left" : null);
253
+ continue;
254
+ }
255
+ const unit = byKey.get(holder.key);
256
+ const lacking = entries.find(({ name }) => name === holder.device)?.lacking ?? new Set();
257
+ const input = idleInput();
258
+ // The snapshot that joins is idle, so the join press does nothing else.
259
+ if (unit !== undefined && event !== "joined") {
260
+ const actionsNow = unit.snapshot.actions;
261
+ const vectorsNow = unit.snapshot.vectors;
262
+ for (const name of buttons)
263
+ input.actions[name] = actionsNow[name] ?? idleState;
264
+ for (const name of vectors)
265
+ input.vectors[name] = vectorsNow[name] ?? zero;
266
+ }
267
+ for (const name of [...buttons, ...vectors])
268
+ input.available[name] = !lacking.has(name);
269
+ result[slot] = {
270
+ ...input,
271
+ joined: true,
272
+ device: holder.device,
273
+ connected: unit?.connected ?? false,
274
+ event: event === "joined" ? "joined" : null,
275
+ devices: unit === undefined ? {} : { [holder.device]: unit.snapshot }
276
+ };
277
+ }
278
+ events.clear();
279
+ return result;
280
+ },
281
+ setJoining(open) {
282
+ joining = open;
283
+ if (open)
284
+ everOpened = true;
285
+ },
286
+ seat(slot, device) {
287
+ const [name, index] = typeof device === "string" ? [device, null] : Object.entries(device)[0] ?? ["", 0];
288
+ const unit = entries.find((entry) => entry.name === name)?.unit;
289
+ if (unit === undefined || (index !== null && !(isPads(unit) && Number.isInteger(index) && index >= 0 && index < unit.max))) {
290
+ return { ok: false, reason: "no-such-pad" };
291
+ }
292
+ const key = index === null ? name : `${name}#${index}`;
293
+ if (held.has(slot))
294
+ return { ok: false, reason: "slot-taken" };
295
+ if ([...held.values()].some((holder) => holder.key === key))
296
+ return { ok: false, reason: "device-taken" };
297
+ held.set(slot, { device: name, key, id: null });
298
+ events.set(slot, "joined");
299
+ everSeated = true;
300
+ return { ok: true };
301
+ },
302
+ leave(slot) {
303
+ if (!held.delete(slot))
304
+ return;
305
+ events.set(slot, "left");
306
+ },
307
+ rebind,
308
+ dispose() {
309
+ for (const { unit } of entries)
310
+ unit.dispose();
311
+ },
312
+ [Debug.serviceLints]: () => {
313
+ const keyed = entries.flatMap(({ name, unit }) => {
314
+ const keys = unit[boundKeys]?.();
315
+ return keys === undefined ? [] : [{ name, keys: new Set(keys) }];
316
+ });
317
+ const shared = keyed.flatMap((first, index) => keyed.slice(index + 1).flatMap((second) => [...first.keys].filter((key) => second.keys.has(key)).map((key) => ({
318
+ severity: "warning",
319
+ message: `${first.name} and ${second.name} both bind ${key}: one key press reaches two players`,
320
+ fix: `bind ${key} on one of them only, so each player has their own keys`
321
+ }))));
322
+ return [
323
+ ...shared,
324
+ ...entries.flatMap(({ name, unit }) => sharedLint(name, unit)),
325
+ ...entries.flatMap(({ name, lacking }) => [...lacking].map((action) => ({
326
+ severity: "info",
327
+ message: `${name} lacks ${action}, so a player on ${name} cannot ${action}`,
328
+ fix: `fine if the game offers ${action} another way (read available.${action} from the player's input); otherwise bind ${action} on ${name}`
329
+ }))),
330
+ ...(everOpened || everSeated ? [] : [{
331
+ severity: "info",
332
+ message: "joining was never opened in this session, so nobody could join",
333
+ fix: "call setJoining(true) from a system (on the join screen, or once at setup for drop-in play)"
334
+ }])
335
+ ];
336
+ }
337
+ };
338
+ // The checked signature carries the device types; the implementation is the same for every pool.
339
+ return pool;
340
+ }
341
+ };
342
+ };
343
+ //# sourceMappingURL=Controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controls.js","sourceRoot":"","sources":["../src/Controls.ts"],"names":[],"mappings":"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"}