zx-kit 0.13.0 → 0.14.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/dist/input.d.ts +2 -0
- package/dist/input.d.ts.map +1 -1
- package/dist/input.js +90 -0
- package/dist/input.js.map +1 -1
- package/package.json +1 -1
package/dist/input.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type Direction = 'up' | 'down' | 'left' | 'right';
|
|
|
5
5
|
* Idempotent — safe to call multiple times. Timing params are always updated;
|
|
6
6
|
* listeners are only attached on the first call.
|
|
7
7
|
* Arrow keys drive movement; `F`/`f` = flag; `P`/`p` = pause; `Ctrl+Shift+B` = debug toggle.
|
|
8
|
+
* Gamepad support is automatic — `tickMovement` polls the Gamepad API each frame.
|
|
9
|
+
* D-pad and left analog stick map to directions; A = flag, Start = pause, Y = debug.
|
|
8
10
|
*
|
|
9
11
|
* @param repeatDelay - Milliseconds before auto-repeat starts after initial press (default `150`)
|
|
10
12
|
* @param repeatInterval - Milliseconds between repeat ticks while key is held (default `80`)
|
package/dist/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAsGxD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,WAAW,SAAM,EAAE,cAAc,SAAK,GAAG,IAAI,CAoCtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAgB3D;AAED,sGAAsG;AACtG,wBAAgB,WAAW,IAAI,OAAO,CAA+D;AAErG,gGAAgG;AAChG,wBAAgB,YAAY,IAAI,OAAO,CAA8D;AAErG,kFAAkF;AAClF,wBAAgB,YAAY,IAAI,OAAO,CAA8D;AAErG;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAA6D;AAErG;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAyB;AAErE;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAcjC"}
|
package/dist/input.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const DIR_KEYS = {
|
|
2
2
|
ArrowUp: 'up', ArrowDown: 'down', ArrowLeft: 'left', ArrowRight: 'right',
|
|
3
3
|
};
|
|
4
|
+
const ARROW_KEYS = {
|
|
5
|
+
up: 'ArrowUp', down: 'ArrowDown', left: 'ArrowLeft', right: 'ArrowRight',
|
|
6
|
+
};
|
|
4
7
|
const held = new Set();
|
|
5
8
|
let pendingFlag = false;
|
|
6
9
|
let pendingDebug = false;
|
|
@@ -13,11 +16,92 @@ let pendingImmediate = null;
|
|
|
13
16
|
let _repeatDelay = 150;
|
|
14
17
|
let _repeatInterval = 80;
|
|
15
18
|
let inputInitialized = false;
|
|
19
|
+
// ── Gamepad state ──────────────────────────────────────────────────────────────
|
|
20
|
+
const STICK_DEAD = 0.35;
|
|
21
|
+
let padPrevDir = null;
|
|
22
|
+
let padPrevBtnFlag = false;
|
|
23
|
+
let padPrevBtnPause = false;
|
|
24
|
+
let padPrevBtnDebug = false;
|
|
25
|
+
let padPrevAny = false;
|
|
26
|
+
function pollGamepad() {
|
|
27
|
+
if (typeof navigator === 'undefined')
|
|
28
|
+
return;
|
|
29
|
+
const pads = navigator.getGamepads?.();
|
|
30
|
+
if (!pads)
|
|
31
|
+
return;
|
|
32
|
+
for (const pad of pads) {
|
|
33
|
+
if (!pad?.connected)
|
|
34
|
+
continue;
|
|
35
|
+
// D-pad (standard mapping: buttons 12-15) takes priority over analog stick
|
|
36
|
+
let dir = null;
|
|
37
|
+
if (pad.buttons[12]?.pressed)
|
|
38
|
+
dir = 'up';
|
|
39
|
+
else if (pad.buttons[13]?.pressed)
|
|
40
|
+
dir = 'down';
|
|
41
|
+
else if (pad.buttons[14]?.pressed)
|
|
42
|
+
dir = 'left';
|
|
43
|
+
else if (pad.buttons[15]?.pressed)
|
|
44
|
+
dir = 'right';
|
|
45
|
+
// Left analog stick with deadzone — dominant axis wins
|
|
46
|
+
if (dir === null) {
|
|
47
|
+
const ax = pad.axes[0] ?? 0;
|
|
48
|
+
const ay = pad.axes[1] ?? 0;
|
|
49
|
+
if (Math.abs(ax) > STICK_DEAD || Math.abs(ay) > STICK_DEAD) {
|
|
50
|
+
if (Math.abs(ax) >= Math.abs(ay))
|
|
51
|
+
dir = ax < 0 ? 'left' : 'right';
|
|
52
|
+
else
|
|
53
|
+
dir = ay < 0 ? 'up' : 'down';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Synthesize direction changes into the existing keyboard repeat state machine
|
|
57
|
+
if (dir !== padPrevDir) {
|
|
58
|
+
if (padPrevDir !== null && repeatDir === padPrevDir && !held.has(ARROW_KEYS[padPrevDir])) {
|
|
59
|
+
repeatDir = null;
|
|
60
|
+
repeatPhase = 'idle';
|
|
61
|
+
}
|
|
62
|
+
if (dir !== null) {
|
|
63
|
+
pendingImmediate = dir;
|
|
64
|
+
repeatDir = dir;
|
|
65
|
+
repeatPhase = 'delay';
|
|
66
|
+
repeatTimer = _repeatDelay;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
padPrevDir = dir;
|
|
70
|
+
// Action buttons — rising-edge detection (A=flag, Start=pause, Y=debug)
|
|
71
|
+
const btnFlag = !!(pad.buttons[0]?.pressed);
|
|
72
|
+
const btnPause = !!(pad.buttons[9]?.pressed);
|
|
73
|
+
const btnDebug = !!(pad.buttons[3]?.pressed);
|
|
74
|
+
const btnAny = pad.buttons.some(b => b?.pressed);
|
|
75
|
+
if (btnFlag && !padPrevBtnFlag)
|
|
76
|
+
pendingFlag = true;
|
|
77
|
+
if (btnPause && !padPrevBtnPause)
|
|
78
|
+
pendingPause = true;
|
|
79
|
+
if (btnDebug && !padPrevBtnDebug)
|
|
80
|
+
pendingDebug = true;
|
|
81
|
+
if (btnAny && !padPrevAny)
|
|
82
|
+
pendingAnyKey = true;
|
|
83
|
+
padPrevBtnFlag = btnFlag;
|
|
84
|
+
padPrevBtnPause = btnPause;
|
|
85
|
+
padPrevBtnDebug = btnDebug;
|
|
86
|
+
padPrevAny = btnAny;
|
|
87
|
+
return; // first connected gamepad only
|
|
88
|
+
}
|
|
89
|
+
// No gamepad connected — release any direction that came from a pad
|
|
90
|
+
if (padPrevDir !== null) {
|
|
91
|
+
if (repeatDir === padPrevDir && !held.has(ARROW_KEYS[padPrevDir])) {
|
|
92
|
+
repeatDir = null;
|
|
93
|
+
repeatPhase = 'idle';
|
|
94
|
+
}
|
|
95
|
+
padPrevDir = null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
16
98
|
/**
|
|
17
99
|
* Attaches global `keydown`/`keyup` listeners and configures key-repeat timing.
|
|
18
100
|
* Idempotent — safe to call multiple times. Timing params are always updated;
|
|
19
101
|
* listeners are only attached on the first call.
|
|
20
102
|
* Arrow keys drive movement; `F`/`f` = flag; `P`/`p` = pause; `Ctrl+Shift+B` = debug toggle.
|
|
103
|
+
* Gamepad support is automatic — `tickMovement` polls the Gamepad API each frame.
|
|
104
|
+
* D-pad and left analog stick map to directions; A = flag, Start = pause, Y = debug.
|
|
21
105
|
*
|
|
22
106
|
* @param repeatDelay - Milliseconds before auto-repeat starts after initial press (default `150`)
|
|
23
107
|
* @param repeatInterval - Milliseconds between repeat ticks while key is held (default `80`)
|
|
@@ -77,6 +161,7 @@ export function initInput(repeatDelay = 150, repeatInterval = 80) {
|
|
|
77
161
|
* }
|
|
78
162
|
*/
|
|
79
163
|
export function tickMovement(dtMs) {
|
|
164
|
+
pollGamepad();
|
|
80
165
|
if (pendingImmediate !== null) {
|
|
81
166
|
const d = pendingImmediate;
|
|
82
167
|
pendingImmediate = null;
|
|
@@ -131,5 +216,10 @@ export function resetInput() {
|
|
|
131
216
|
repeatDir = null;
|
|
132
217
|
repeatPhase = 'idle';
|
|
133
218
|
pendingImmediate = null;
|
|
219
|
+
padPrevDir = null;
|
|
220
|
+
padPrevBtnFlag = false;
|
|
221
|
+
padPrevBtnPause = false;
|
|
222
|
+
padPrevBtnDebug = false;
|
|
223
|
+
padPrevAny = false;
|
|
134
224
|
}
|
|
135
225
|
//# sourceMappingURL=input.js.map
|
package/dist/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAGA,MAAM,QAAQ,GAA8B;IAC1C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;CACzE,CAAA;AAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;AAC9B,IAAI,WAAW,GAAG,KAAK,CAAA;AACvB,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,IAAI,aAAa,GAAG,KAAK,CAAA;AAEzB,IAAI,SAAS,GAAqB,IAAI,CAAA;AACtC,IAAI,WAAW,GAAG,CAAC,CAAA;AACnB,IAAI,WAAW,GAAgC,MAAM,CAAA;AACrD,IAAI,gBAAgB,GAAqB,IAAI,CAAA;AAC7C,IAAI,YAAY,GAAG,GAAG,CAAA;AACtB,IAAI,eAAe,GAAG,EAAE,CAAA;AACxB,IAAI,gBAAgB,GAAG,KAAK,CAAA;AAE5B
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
|