@rydr/game-sdk 8.4.0 → 8.6.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/nav/README.md +42 -0
- package/dist/nav/index.d.ts +12 -0
- package/dist/nav/index.d.ts.map +1 -1
- package/dist/nav/index.js +11 -0
- package/dist/nav/index.js.map +1 -1
- package/dist/nav/stick-nav.d.ts +114 -0
- package/dist/nav/stick-nav.d.ts.map +1 -0
- package/dist/nav/stick-nav.js +153 -0
- package/dist/nav/stick-nav.js.map +1 -0
- package/dist/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/dist/ui/README.md +34 -14
- package/dist/ui/controller/combo-demo.d.ts +0 -3
- package/dist/ui/controller/combo-demo.d.ts.map +1 -1
- package/dist/ui/controller/combo-demo.js +7 -1
- package/dist/ui/controller/combo-demo.js.map +1 -1
- package/dist/ui/controller/control-spotlight.d.ts.map +1 -1
- package/dist/ui/controller/control-spotlight.js +8 -0
- package/dist/ui/controller/control-spotlight.js.map +1 -1
- package/dist/ui/controller/control-trainer.d.ts +3 -11
- package/dist/ui/controller/control-trainer.d.ts.map +1 -1
- package/dist/ui/controller/control-trainer.js +1 -1
- package/dist/ui/controller/control-trainer.js.map +1 -1
- package/dist/ui/controller/controller-map.d.ts +0 -3
- package/dist/ui/controller/controller-map.d.ts.map +1 -1
- package/dist/ui/controller/controller-map.js +0 -1
- package/dist/ui/controller/controller-map.js.map +1 -1
- package/dist/ui/controller/controller-pad.d.ts +35 -10
- package/dist/ui/controller/controller-pad.d.ts.map +1 -1
- package/dist/ui/controller/controller-pad.js +23 -8
- package/dist/ui/controller/controller-pad.js.map +1 -1
- package/dist/ui/controller/input-chip.d.ts +4 -26
- package/dist/ui/controller/input-chip.d.ts.map +1 -1
- package/dist/ui/controller/input-chip.js +107 -106
- package/dist/ui/controller/input-chip.js.map +1 -1
- package/dist/ui/controller/live-presses.d.ts +11 -0
- package/dist/ui/controller/live-presses.d.ts.map +1 -1
- package/dist/ui/controller/live-presses.js +3 -1
- package/dist/ui/controller/live-presses.js.map +1 -1
- package/dist/ui/controller/styles.js +81 -29
- package/dist/ui/controller/styles.js.map +1 -1
- package/dist/ui/controller/types.d.ts +2 -1
- package/dist/ui/controller/types.d.ts.map +1 -1
- package/dist/ui/controller/types.js.map +1 -1
- package/dist/ui/keycap.d.ts +19 -0
- package/dist/ui/keycap.d.ts.map +1 -1
- package/dist/ui/keycap.js +4 -1
- package/dist/ui/keycap.js.map +1 -1
- package/dist/ui/labeled-diamond.d.ts +12 -1
- package/dist/ui/labeled-diamond.d.ts.map +1 -1
- package/dist/ui/labeled-diamond.js +6 -3
- package/dist/ui/labeled-diamond.js.map +1 -1
- package/dist/ui/option-menu.d.ts +45 -3
- package/dist/ui/option-menu.d.ts.map +1 -1
- package/dist/ui/option-menu.js +151 -7
- package/dist/ui/option-menu.js.map +1 -1
- package/dist/ui/power-race.d.ts +84 -3
- package/dist/ui/power-race.d.ts.map +1 -1
- package/dist/ui/power-race.js +98 -41
- package/dist/ui/power-race.js.map +1 -1
- package/dist/ui/showcase/index.d.ts.map +1 -1
- package/dist/ui/showcase/index.js +23 -132
- package/dist/ui/showcase/index.js.map +1 -1
- package/dist/ui/styles.js +17 -5
- package/dist/ui/styles.js.map +1 -1
- package/dist/voiceover-editor/index.d.ts.map +1 -1
- package/dist/voiceover-editor/index.js +8 -0
- package/dist/voiceover-editor/index.js.map +1 -1
- package/package.json +2 -1
package/dist/nav/README.md
CHANGED
|
@@ -131,3 +131,45 @@ const scroll = createScrollNav({
|
|
|
131
131
|
|
|
132
132
|
A press at the top/bottom edge is a silent no-op (no false cue). Smooth scroll is used unless
|
|
133
133
|
`prefers-reduced-motion` is set. See `scroll-nav.ts` for the full option list.
|
|
134
|
+
|
|
135
|
+
## Navigating with the stick — `createStickNav`
|
|
136
|
+
|
|
137
|
+
Both engines above speak discrete `UP` / `DOWN` / `LEFT` / `RIGHT` presses. An analog stick is not
|
|
138
|
+
that: it's a direction and a distance. `createStickNav` is the converter, and it lives here — beside
|
|
139
|
+
the menu — on purpose.
|
|
140
|
+
|
|
141
|
+
**Why it isn't done in the device layer.** Thresholding each axis on its own fires *two* directions on
|
|
142
|
+
a diagonal (push top-right, the highlight jumps twice), and once the vector has been thrown away
|
|
143
|
+
nobody downstream can work out which one the rider meant. Which direction a push *means* is a menu
|
|
144
|
+
question, not a hardware fact. So the engine keeps the vector, picks the single axis the stick is
|
|
145
|
+
pushed furthest along, and holds at most one direction at a time.
|
|
146
|
+
|
|
147
|
+
It also auto-repeats, which a faked D-pad structurally cannot: a held stick emits no new samples, so a
|
|
148
|
+
synthesized press steps once and then sits there. Here a held direction steps, pauses
|
|
149
|
+
(`STICK_NAV_REPEAT_DELAY_MS`, 400 ms), then repeats at `STICK_NAV_REPEAT_MS` (125 ms ≈ 8/s).
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
import { createSpatialNav, createStickNav } from "@rydr/game-sdk/nav";
|
|
153
|
+
|
|
154
|
+
const nav = createSpatialNav({ session, root: document.body });
|
|
155
|
+
const stickNav = createStickNav({
|
|
156
|
+
session, // polls session.stick("LSTICK") each frame
|
|
157
|
+
onDirection: (dir) => nav.handle(dir), // one direction per push
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`createStickNav(options) → { sample, axis, current, release, dispose }`
|
|
162
|
+
|
|
163
|
+
- `sample(x, y)` — feed a full stick position (right/up = `+1`) when you're not passing `session`.
|
|
164
|
+
- `axis(name, value)` — feed one canonical axis (`LX`/`LY`); the other keeps its last value. For
|
|
165
|
+
consumers whose analog stream arrives per-axis, like the platform shell's.
|
|
166
|
+
- `current()` — the direction currently held, or `null`.
|
|
167
|
+
- `release()` — force the stick to centre (no emit). Call it when you stop owning input, so a held
|
|
168
|
+
stick can't fire into whatever takes over.
|
|
169
|
+
- `dispose()` — stop polling, clear timers.
|
|
170
|
+
|
|
171
|
+
Tuning is exported so a consumer can match its own feel: `STICK_NAV_ON` (0.6) is the deflection that
|
|
172
|
+
counts as a press, `STICK_NAV_OFF` (0.4) the one it releases below (hysteresis, so a stick resting on
|
|
173
|
+
the threshold can't chatter), and `STICK_NAV_DOMINANCE` (1.2) how much the other axis must beat the
|
|
174
|
+
held one by to take over mid-push — which is what stops a thumb parked on the 45° line from
|
|
175
|
+
flickering between two directions. Pass `repeat: false` for one step per push.
|
package/dist/nav/index.d.ts
CHANGED
|
@@ -21,9 +21,21 @@
|
|
|
21
21
|
* import { createScrollNav } from "@rydr/game-sdk/nav";
|
|
22
22
|
* const scroll = createScrollNav({ root: readerEl, session, onBack: () => goHome() });
|
|
23
23
|
* ```
|
|
24
|
+
*
|
|
25
|
+
* Both engines above speak discrete `UP`/`DOWN`/`LEFT`/`RIGHT` presses. To drive one from an ANALOG
|
|
26
|
+
* STICK — one direction per push (never two on a diagonal), with console-style auto-repeat while it's
|
|
27
|
+
* held — add {@link createStickNav}:
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { createSpatialNav, createStickNav } from "@rydr/game-sdk/nav";
|
|
31
|
+
* const nav = createSpatialNav({ session, root: document.body });
|
|
32
|
+
* const stickNav = createStickNav({ session, onDirection: (dir) => nav.handle(dir) });
|
|
33
|
+
* ```
|
|
24
34
|
*/
|
|
25
35
|
export { createSpatialNav } from "./spatial-nav.js";
|
|
26
36
|
export type { SpatialNav, SpatialNavOptions, NavButtonSource, NavCue } from "./spatial-nav.js";
|
|
27
37
|
export { createScrollNav, SCROLL_NAV_STEP } from "./scroll-nav.js";
|
|
28
38
|
export type { ScrollNav, ScrollNavOptions } from "./scroll-nav.js";
|
|
39
|
+
export { createStickNav, STICK_NAV_ON, STICK_NAV_OFF, STICK_NAV_DOMINANCE, STICK_NAV_REPEAT_DELAY_MS, STICK_NAV_REPEAT_MS } from "./stick-nav.js";
|
|
40
|
+
export type { StickNav, StickNavOptions, StickNavDirection, NavStickSource } from "./stick-nav.js";
|
|
29
41
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/nav/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nav/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nav/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAClJ,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/nav/index.js
CHANGED
|
@@ -21,7 +21,18 @@
|
|
|
21
21
|
* import { createScrollNav } from "@rydr/game-sdk/nav";
|
|
22
22
|
* const scroll = createScrollNav({ root: readerEl, session, onBack: () => goHome() });
|
|
23
23
|
* ```
|
|
24
|
+
*
|
|
25
|
+
* Both engines above speak discrete `UP`/`DOWN`/`LEFT`/`RIGHT` presses. To drive one from an ANALOG
|
|
26
|
+
* STICK — one direction per push (never two on a diagonal), with console-style auto-repeat while it's
|
|
27
|
+
* held — add {@link createStickNav}:
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { createSpatialNav, createStickNav } from "@rydr/game-sdk/nav";
|
|
31
|
+
* const nav = createSpatialNav({ session, root: document.body });
|
|
32
|
+
* const stickNav = createStickNav({ session, onDirection: (dir) => nav.handle(dir) });
|
|
33
|
+
* ```
|
|
24
34
|
*/
|
|
25
35
|
export { createSpatialNav } from "./spatial-nav.js";
|
|
26
36
|
export { createScrollNav, SCROLL_NAV_STEP } from "./scroll-nav.js";
|
|
37
|
+
export { createStickNav, STICK_NAV_ON, STICK_NAV_OFF, STICK_NAV_DOMINANCE, STICK_NAV_REPEAT_DELAY_MS, STICK_NAV_REPEAT_MS } from "./stick-nav.js";
|
|
27
38
|
//# sourceMappingURL=index.js.map
|
package/dist/nav/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nav/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nav/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a joystick as MENU NAVIGATION — the missing half of {@link createSpatialNav}, which speaks
|
|
3
|
+
* discrete `UP`/`DOWN`/`LEFT`/`RIGHT` presses and knows nothing about analog sticks.
|
|
4
|
+
*
|
|
5
|
+
* **Why this exists.** A stick is a direction and a distance; a D-pad is four booleans. Anything that
|
|
6
|
+
* turns the first into the second by thresholding each axis on its own fires TWO directions on a
|
|
7
|
+
* diagonal — push top-right and the menu jumps twice — and, having thrown the vector away, gives
|
|
8
|
+
* whoever is downstream no way to recover which one the rider meant. So the conversion belongs
|
|
9
|
+
* here, next to the menu that consumes it, not in the device layer: the rider's INTENT is a menu
|
|
10
|
+
* question, not a hardware fact. This engine keeps the vector, picks the single dominant direction,
|
|
11
|
+
* and never holds more than one at a time.
|
|
12
|
+
*
|
|
13
|
+
* It also does the thing a synthesized D-pad structurally cannot: **auto-repeat**. Holding a stick
|
|
14
|
+
* produces no new events, so a faked press moves the highlight exactly once and then sits there
|
|
15
|
+
* until the rider recentres. Here a held direction steps once, pauses ({@link STICK_NAV_REPEAT_DELAY_MS}),
|
|
16
|
+
* then repeats at {@link STICK_NAV_REPEAT_MS} — what every console menu does.
|
|
17
|
+
*
|
|
18
|
+
* Game usage (auto-polls the session's stick each frame, feeding a spatial nav):
|
|
19
|
+
* import { createSpatialNav, createStickNav } from "@rydr/game-sdk/nav";
|
|
20
|
+
* const nav = createSpatialNav({ session, root: document.body });
|
|
21
|
+
* const stickNav = createStickNav({ session, onDirection: (dir) => nav.handle(dir) });
|
|
22
|
+
*
|
|
23
|
+
* Shell / multiplexed usage (feed axis samples yourself, one axis at a time):
|
|
24
|
+
* const stickNav = createStickNav({ onDirection: (dir) => router.dispatch(dir) });
|
|
25
|
+
* // …from the platform's analog stream: stickNav.axis(name, value)
|
|
26
|
+
*
|
|
27
|
+
* Note the two paths differ in more than wiring: a POLLED source (`session`) re-reads the stick every
|
|
28
|
+
* frame, while a FED source only hears about changes. Repeat is therefore driven by this engine's own
|
|
29
|
+
* timer in both cases, never by the arrival of samples — a stick held perfectly still is silent on the
|
|
30
|
+
* wire, and must still repeat.
|
|
31
|
+
*/
|
|
32
|
+
import type { AxisName, ButtonName, StickName } from "../protocol/buttons.js";
|
|
33
|
+
import type { NavCue } from "./spatial-nav.js";
|
|
34
|
+
/** The four directions a stick can resolve to — a subset of {@link ButtonName}, so it feeds `handle`. */
|
|
35
|
+
export type StickNavDirection = Extract<ButtonName, "UP" | "DOWN" | "LEFT" | "RIGHT">;
|
|
36
|
+
/**
|
|
37
|
+
* Deflection at which a push becomes a direction press. Measured RADIALLY (the vector's length), not
|
|
38
|
+
* per-axis — a per-axis test is what makes a diagonal read as two presses, since both components clear
|
|
39
|
+
* the bar at once.
|
|
40
|
+
*/
|
|
41
|
+
export declare const STICK_NAV_ON = 0.6;
|
|
42
|
+
/**
|
|
43
|
+
* Deflection the stick must fall back below before the held direction releases. Below {@link
|
|
44
|
+
* STICK_NAV_ON} on purpose (hysteresis): a stick resting near the threshold would otherwise chatter
|
|
45
|
+
* press/release for as long as the rider held it there.
|
|
46
|
+
*/
|
|
47
|
+
export declare const STICK_NAV_OFF = 0.4;
|
|
48
|
+
/**
|
|
49
|
+
* How much the other axis must BEAT the held one by before the direction switches mid-push (e.g.
|
|
50
|
+
* rolling from up-right round to right without recentring). A bare `>` comparison would flicker
|
|
51
|
+
* between two directions for a stick parked on the 45° line, which is exactly where a thumb naturally
|
|
52
|
+
* rests on a diagonal; the margin makes the current direction win ties and near-ties.
|
|
53
|
+
*/
|
|
54
|
+
export declare const STICK_NAV_DOMINANCE = 1.2;
|
|
55
|
+
/** Pause after the first step before a held stick starts repeating (ms) — long enough that a deliberate
|
|
56
|
+
* single step never turns into two. */
|
|
57
|
+
export declare const STICK_NAV_REPEAT_DELAY_MS = 400;
|
|
58
|
+
/** Interval between repeats while the stick is held (ms) — ~8 steps/second. */
|
|
59
|
+
export declare const STICK_NAV_REPEAT_MS = 125;
|
|
60
|
+
/**
|
|
61
|
+
* Anything that can report a stick position — a `PlatformSession` satisfies this. Structural on
|
|
62
|
+
* purpose: `nav` must not depend on the client.
|
|
63
|
+
*/
|
|
64
|
+
export interface NavStickSource {
|
|
65
|
+
stick(name: StickName): {
|
|
66
|
+
x: number;
|
|
67
|
+
y: number;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export interface StickNavOptions {
|
|
71
|
+
/** Where a resolved direction goes. Typically a {@link SpatialNav.handle} or the shell's dispatcher. */
|
|
72
|
+
onDirection: (dir: StickNavDirection) => void;
|
|
73
|
+
/**
|
|
74
|
+
* Auto-poll a stick source (`PlatformSession` or any `{ stick }`) every animation frame. Omit when
|
|
75
|
+
* the caller feeds {@link StickNav.axis} / {@link StickNav.sample} itself (the shell, which receives
|
|
76
|
+
* the platform's analog stream as it changes).
|
|
77
|
+
*/
|
|
78
|
+
session?: NavStickSource;
|
|
79
|
+
/** Which stick to poll when `session` is given. Default `"LSTICK"` — the movement stick. */
|
|
80
|
+
stick?: StickName;
|
|
81
|
+
/** Auto-repeat while the stick is held. Default `true`; `false` = one step per push, recentre to step again. */
|
|
82
|
+
repeat?: boolean;
|
|
83
|
+
/** Override {@link STICK_NAV_ON}. */
|
|
84
|
+
on?: number;
|
|
85
|
+
/** Override {@link STICK_NAV_OFF}. */
|
|
86
|
+
off?: number;
|
|
87
|
+
/** Override {@link STICK_NAV_DOMINANCE}. */
|
|
88
|
+
dominance?: number;
|
|
89
|
+
/** Override {@link STICK_NAV_REPEAT_DELAY_MS}. */
|
|
90
|
+
repeatDelayMs?: number;
|
|
91
|
+
/** Override {@link STICK_NAV_REPEAT_MS}. */
|
|
92
|
+
repeatMs?: number;
|
|
93
|
+
/** Sink for the `nav.move` cue, fired on every emitted direction (first step and repeats alike).
|
|
94
|
+
* Omit when the consumer already cues on its own `onDirection` — double-cueing is the common mistake. */
|
|
95
|
+
cue?: (id: NavCue) => void;
|
|
96
|
+
}
|
|
97
|
+
export interface StickNav {
|
|
98
|
+
/** Feed a full stick position (right/up = +1). The normal entry point for a polled source. */
|
|
99
|
+
sample(x: number, y: number): void;
|
|
100
|
+
/**
|
|
101
|
+
* Feed ONE canonical axis of the watched stick; the other keeps its last value. For consumers whose
|
|
102
|
+
* analog stream arrives per-axis. Axes belonging to the other stick are ignored.
|
|
103
|
+
*/
|
|
104
|
+
axis(name: AxisName, value: number): void;
|
|
105
|
+
/** The direction currently held, or `null`. */
|
|
106
|
+
current(): StickNavDirection | null;
|
|
107
|
+
/** Force the stick to centre — releases any held direction and stops repeats, emitting nothing.
|
|
108
|
+
* Use when the consumer stops owning input (a game takes the screen) so a held stick can't fire into it. */
|
|
109
|
+
release(): void;
|
|
110
|
+
/** Tear down: stop polling, clear timers. */
|
|
111
|
+
dispose(): void;
|
|
112
|
+
}
|
|
113
|
+
export declare function createStickNav(opts: StickNavOptions): StickNav;
|
|
114
|
+
//# sourceMappingURL=stick-nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stick-nav.d.ts","sourceRoot":"","sources":["../../src/nav/stick-nav.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,yGAAyG;AACzG,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEtF;;;;GAIG;AACH,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;wCACwC;AACxC,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,wGAAwG;IACxG,WAAW,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gHAAgH;IAChH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;8GAC0G;IAC1G,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,8FAA8F;IAC9F,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,+CAA+C;IAC/C,OAAO,IAAI,iBAAiB,GAAG,IAAI,CAAC;IACpC;iHAC6G;IAC7G,OAAO,IAAI,IAAI,CAAC;IAChB,6CAA6C;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;AAQD,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,CAqH9D"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deflection at which a push becomes a direction press. Measured RADIALLY (the vector's length), not
|
|
3
|
+
* per-axis — a per-axis test is what makes a diagonal read as two presses, since both components clear
|
|
4
|
+
* the bar at once.
|
|
5
|
+
*/
|
|
6
|
+
export const STICK_NAV_ON = 0.6;
|
|
7
|
+
/**
|
|
8
|
+
* Deflection the stick must fall back below before the held direction releases. Below {@link
|
|
9
|
+
* STICK_NAV_ON} on purpose (hysteresis): a stick resting near the threshold would otherwise chatter
|
|
10
|
+
* press/release for as long as the rider held it there.
|
|
11
|
+
*/
|
|
12
|
+
export const STICK_NAV_OFF = 0.4;
|
|
13
|
+
/**
|
|
14
|
+
* How much the other axis must BEAT the held one by before the direction switches mid-push (e.g.
|
|
15
|
+
* rolling from up-right round to right without recentring). A bare `>` comparison would flicker
|
|
16
|
+
* between two directions for a stick parked on the 45° line, which is exactly where a thumb naturally
|
|
17
|
+
* rests on a diagonal; the margin makes the current direction win ties and near-ties.
|
|
18
|
+
*/
|
|
19
|
+
export const STICK_NAV_DOMINANCE = 1.2;
|
|
20
|
+
/** Pause after the first step before a held stick starts repeating (ms) — long enough that a deliberate
|
|
21
|
+
* single step never turns into two. */
|
|
22
|
+
export const STICK_NAV_REPEAT_DELAY_MS = 400;
|
|
23
|
+
/** Interval between repeats while the stick is held (ms) — ~8 steps/second. */
|
|
24
|
+
export const STICK_NAV_REPEAT_MS = 125;
|
|
25
|
+
/** The two axes each stick is composed of, so {@link StickNav.axis} knows which samples are its own. */
|
|
26
|
+
const STICK_AXES = {
|
|
27
|
+
LSTICK: { x: "LX", y: "LY" },
|
|
28
|
+
RSTICK: { x: "RX", y: "RY" },
|
|
29
|
+
};
|
|
30
|
+
export function createStickNav(opts) {
|
|
31
|
+
const stickName = opts.stick ?? "LSTICK";
|
|
32
|
+
const axes = STICK_AXES[stickName];
|
|
33
|
+
const on = opts.on ?? STICK_NAV_ON;
|
|
34
|
+
const off = opts.off ?? STICK_NAV_OFF;
|
|
35
|
+
const dominance = opts.dominance ?? STICK_NAV_DOMINANCE;
|
|
36
|
+
const repeatDelayMs = opts.repeatDelayMs ?? STICK_NAV_REPEAT_DELAY_MS;
|
|
37
|
+
const repeatMs = opts.repeatMs ?? STICK_NAV_REPEAT_MS;
|
|
38
|
+
const repeats = opts.repeat ?? true;
|
|
39
|
+
let x = 0;
|
|
40
|
+
let y = 0;
|
|
41
|
+
let held = null;
|
|
42
|
+
let timer = null;
|
|
43
|
+
let raf = 0;
|
|
44
|
+
let disposed = false;
|
|
45
|
+
function clearTimer() {
|
|
46
|
+
if (timer !== null)
|
|
47
|
+
clearTimeout(timer);
|
|
48
|
+
timer = null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Which direction this vector means. Compares the two components' MAGNITUDES — the axis the stick is
|
|
52
|
+
* pushed furthest along wins, which is the same rule the phone controller's drag pad uses, so every
|
|
53
|
+
* transport agrees. `bias` is applied to the currently-held axis so it keeps the direction through a
|
|
54
|
+
* tie (see {@link STICK_NAV_DOMINANCE}).
|
|
55
|
+
*/
|
|
56
|
+
function resolve(bias) {
|
|
57
|
+
let horizontal = Math.abs(x);
|
|
58
|
+
let vertical = Math.abs(y);
|
|
59
|
+
if (held === "LEFT" || held === "RIGHT")
|
|
60
|
+
horizontal *= bias;
|
|
61
|
+
else if (held === "UP" || held === "DOWN")
|
|
62
|
+
vertical *= bias;
|
|
63
|
+
if (horizontal >= vertical)
|
|
64
|
+
return x > 0 ? "RIGHT" : "LEFT";
|
|
65
|
+
return y > 0 ? "UP" : "DOWN";
|
|
66
|
+
}
|
|
67
|
+
function emit(dir) {
|
|
68
|
+
held = dir;
|
|
69
|
+
opts.cue?.("nav.move");
|
|
70
|
+
opts.onDirection(dir);
|
|
71
|
+
if (!repeats)
|
|
72
|
+
return;
|
|
73
|
+
// Timer-driven, deliberately: a stick held still produces no further samples, so repeat can never
|
|
74
|
+
// ride the sample stream. Re-armed at the faster rate after the initial pause.
|
|
75
|
+
clearTimer();
|
|
76
|
+
timer = setTimeout(function step() {
|
|
77
|
+
if (disposed || held === null)
|
|
78
|
+
return;
|
|
79
|
+
opts.cue?.("nav.move");
|
|
80
|
+
opts.onDirection(held);
|
|
81
|
+
timer = setTimeout(step, repeatMs);
|
|
82
|
+
}, repeatDelayMs);
|
|
83
|
+
}
|
|
84
|
+
function evaluate() {
|
|
85
|
+
const magnitude = Math.hypot(x, y);
|
|
86
|
+
if (held === null) {
|
|
87
|
+
if (magnitude >= on)
|
|
88
|
+
emit(resolve(1));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (magnitude < off) {
|
|
92
|
+
// Released. No `up` edge goes out: a menu direction is a discrete step, not a hold — the repeat
|
|
93
|
+
// timer is the only thing that cared, and it stops here.
|
|
94
|
+
held = null;
|
|
95
|
+
clearTimer();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Still pushed. Only a CLEARLY dominant other axis takes the direction over, and when it does it
|
|
99
|
+
// steps immediately and starts its own pause — a deliberate roll from one direction to another
|
|
100
|
+
// should feel like a fresh press, not land mid-repeat.
|
|
101
|
+
const next = resolve(dominance);
|
|
102
|
+
if (next !== held)
|
|
103
|
+
emit(next);
|
|
104
|
+
}
|
|
105
|
+
const api = {
|
|
106
|
+
sample(nextX, nextY) {
|
|
107
|
+
x = nextX;
|
|
108
|
+
y = nextY;
|
|
109
|
+
evaluate();
|
|
110
|
+
},
|
|
111
|
+
axis(name, value) {
|
|
112
|
+
if (name === axes.x)
|
|
113
|
+
x = value;
|
|
114
|
+
else if (name === axes.y)
|
|
115
|
+
y = value;
|
|
116
|
+
else
|
|
117
|
+
return; // the other stick — not ours to read
|
|
118
|
+
evaluate();
|
|
119
|
+
},
|
|
120
|
+
current() {
|
|
121
|
+
return held;
|
|
122
|
+
},
|
|
123
|
+
release() {
|
|
124
|
+
x = 0;
|
|
125
|
+
y = 0;
|
|
126
|
+
held = null;
|
|
127
|
+
clearTimer();
|
|
128
|
+
},
|
|
129
|
+
dispose() {
|
|
130
|
+
disposed = true;
|
|
131
|
+
held = null;
|
|
132
|
+
clearTimer();
|
|
133
|
+
if (raf)
|
|
134
|
+
cancelAnimationFrame(raf);
|
|
135
|
+
raf = 0;
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
// Polled source: re-read every frame. Guarded on `requestAnimationFrame` so the engine stays
|
|
139
|
+
// importable server-side (and in tests) — a fed source needs no frame loop at all.
|
|
140
|
+
if (opts.session && typeof requestAnimationFrame === "function") {
|
|
141
|
+
const source = opts.session;
|
|
142
|
+
const tick = () => {
|
|
143
|
+
if (disposed)
|
|
144
|
+
return;
|
|
145
|
+
const v = source.stick(stickName);
|
|
146
|
+
api.sample(v.x, v.y);
|
|
147
|
+
raf = requestAnimationFrame(tick);
|
|
148
|
+
};
|
|
149
|
+
raf = requestAnimationFrame(tick);
|
|
150
|
+
}
|
|
151
|
+
return api;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=stick-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stick-nav.js","sourceRoot":"","sources":["../../src/nav/stick-nav.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
export declare const RYDR_PROTOCOL_VERSION: 30;
|
|
10
10
|
/** Semver of this SDK build. Sent in the handshake for telemetry/debugging.
|
|
11
11
|
* (Bumped to 2.0.0 by `npm version major` on release — see CHANGELOG [Unreleased].) */
|
|
12
|
-
export declare const RYDR_SDK_VERSION = "8.
|
|
12
|
+
export declare const RYDR_SDK_VERSION = "8.6.0";
|
|
13
13
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/protocol/version.js
CHANGED
|
@@ -176,5 +176,5 @@
|
|
|
176
176
|
export const RYDR_PROTOCOL_VERSION = 30;
|
|
177
177
|
/** Semver of this SDK build. Sent in the handshake for telemetry/debugging.
|
|
178
178
|
* (Bumped to 2.0.0 by `npm version major` on release — see CHANGELOG [Unreleased].) */
|
|
179
|
-
export const RYDR_SDK_VERSION = "8.
|
|
179
|
+
export const RYDR_SDK_VERSION = "8.6.0";
|
|
180
180
|
//# sourceMappingURL=version.js.map
|
package/dist/ui/README.md
CHANGED
|
@@ -48,12 +48,12 @@ feed its `{x, y, onScreen}` into `setScreenPos`/`setVisible` — don't compute p
|
|
|
48
48
|
| `mountChoiceCard(host, opts)` | fn | A player choice menu: prompt + highlighted option list (▲▼ move, A confirm). |
|
|
49
49
|
| `mountRarityCard(host, opts)` / `buildRarityCard(opts)` | fn | A generic rarity-tinted item/creature card. |
|
|
50
50
|
| `createActionMarker(host, opts)` | fn | **"There is something to do THERE"** — a card pinned to a point in the world (you `place(x, y)` it every frame with the point projected to screen), the keycap joining it once the rider is close enough (`setNear`), and a caret clamping it to the border with an arrow while the point is off screen. Two independent axes: `tone` is MOTION (`hint` still · `action` breathing · `urgent` hammering), `color` is SUBJECT (`red`/`danger`, `green`/`success`, `cyan`/`accent`, … — see `MARKER_COLORS`). |
|
|
51
|
-
| `createPowerRace(opts)` | fn | A timed **power-vs-deadline race** overlay — the "push NOW or lose it" beat. A charge bar (∫power dt) races a clock; first to 100% wins. `start()` then `setPower(w)`+`tick(dt)` per frame; `won`/`lost` via `onResolve`. Recolour with `theme`, relabel with `text`. |
|
|
51
|
+
| `createPowerRace(opts)` | fn | A timed **power-vs-deadline race** overlay — the "push NOW or lose it" beat. A charge bar (∫power dt) races a clock; first to 100% wins. `start()` then `setPower(w)`+`tick(dt)` per frame; `won`/`lost` via `onResolve`. Recolour with `theme`, relabel with `text`. **Timings:** `introS` is the wind-up before the bars go live (default 2s — pass `0` for a widget the rider OPENED by pressing a button, so watts count from frame 1), `durationS` the race itself, `hold: { stampDelayS, hideAfterS }` what happens after it resolves (either can be `false`). `setTarget({ ftp })` re-sizes the effort target in place — no rebuild when a rider retunes their FTP mid-ride. |
|
|
52
52
|
| `mountHeatVignette(host, opts)` | fn | **Screen-edge heat vignette alone** — the peripheral amber→orange→red glow that escalates with heat. Take this when your game draws its own heat bar. `setHeat(heat01, locked)` per frame. |
|
|
53
53
|
| `mountOverheatGlitch(host, opts)` | fn | **Lockout glitch overlay alone** — one-shot RGB chromatic burst on entry, then scanlines + red noise for the lockout. `setLocked(bool)` per frame. |
|
|
54
54
|
| `mountOverheatHudBar(host, opts)` | fn | **The whole overheat package**: centred inferno bar + label + COOLING DOWN countdown, composing the vignette and glitch above. One `update(heat01, locked, lockoutRemaining)` per frame. |
|
|
55
55
|
| `createButtonKeycap(button, opts)` | fn | A keycap for the buttons that are neither a face letter nor a direction, drawn as the pad draws them: `OPTIONS` → a round pip with the pad's ICON (`☰` on Xbox/DualSense, `+` on Switch); `LT`/`RT` and the stick clicks → a text pill ("LT"/"L2"/"LS"), since those are printed with a word. |
|
|
56
|
-
| `mountOptionMenu(host, opts)` | fn | **The in-game menu**, opened by the game's own `OPTIONS` button: game name big in YOUR font, a free `Resume` row + your own rows, each able to advertise its in-game `shortcut`. Takes the controller over while up; leaves the trainer alone. See below. |
|
|
56
|
+
| `mountOptionMenu(host, opts)` | fn | **The in-game menu**, opened by the game's own `OPTIONS` button: game name big in YOUR font, a free `Resume` row + your own rows, each able to advertise its in-game `shortcut` or be a stepper the rider turns with `LEFT`/`RIGHT`. Takes the controller over while up; leaves the trainer alone. See below. |
|
|
57
57
|
| `mountControllerPad(host, opts)` | fn | **The rider's controller, drawn live** — buttons light while held, stick caps follow the real axes. Pass `press: session`. |
|
|
58
58
|
| `mountControllerMap(host, opts)` | fn | **The controls screen** — that pad flanked by action callouts, each joined by a line to every button its combination names. The card prints the ACTION only; the line says which control. Takes a declarative `ControlAction[]`. |
|
|
59
59
|
| `mountComboDemo(host, opts)` | fn | **"Do this" animation** — loops the combination one action requires: buttons sink in, the stick swings, release, repeat. |
|
|
@@ -61,13 +61,12 @@ feed its `{x, y, onScreen}` into `setScreenPos`/`setVisible` — don't compute p
|
|
|
61
61
|
| `mountControlTrainer(host, opts)` | fn | **Guided lesson** — a title, one panel per step side by side, one shared controller below. Watches the rider: white "do this" → blue "doing it" → green ✓. Fires `onComplete` when every step is done. |
|
|
62
62
|
| `createComboStrip(action, opts)` | fn | Just the chip row for one action (`[L2] + [✕]`), for embedding in your own layout. |
|
|
63
63
|
| `createInputChip(token, opts)` | fn | One control's pictogram, for embedding in your own layout. Delegates to `createKeycap` / `createDpadKeycap` / `createButtonKeycap` for the buttons, and draws its own stick pictograms. The atom the two views are built from. |
|
|
64
|
-
| `DEFAULT_STICK_STYLE` | const | The joystick drawing convention the kit uses (`"profile"`). Override per-call with `stickStyle`. |
|
|
65
64
|
| `injectCss()` | fn | Force the `.rydr-ui-*` CSS into `<head>` early (components call it for you). |
|
|
66
65
|
|
|
67
66
|
Types: `DiamondButton` (`"DIAMOND_UP"\|"DIAMOND_DOWN"\|"DIAMOND_LEFT"\|"DIAMOND_RIGHT"`), `DirButton`, `KeycapVariant` (`"full"\|"solo"`),
|
|
68
67
|
`ButtonSource`, `Keycap`, `Card`, `ActionCard`, `ButtonPrompt`, `DialogueCard`, `ChoiceCard`,
|
|
69
68
|
`LabeledDiamond`, `ActionDiamond`, `Rarity`, `RarityCard`, `OptionMenu`, `OptionMenuItem`, `OptionMenuOptions`,
|
|
70
|
-
`ControlAction`, `ComboToken`, `StickDir`, `
|
|
69
|
+
`ControlAction`, `ComboToken`, `StickDir`, `PadInputSource`, `PadBrandKey`, `PadPart`, `PadLayout`,
|
|
71
70
|
`ControllerPad`, `ControllerMap`, `ComboDemo`, `InputChip`, `ComboStrip`,
|
|
72
71
|
`ActionMarker`, `ActionMarkerOptions`, `ActionMarkerTone`, `ActionMarkerColor`, `ActionMarkerRole`
|
|
73
72
|
(+ the `MARKER_COLORS` / `MARKER_ROLE_COLORS` tables).
|
|
@@ -91,14 +90,25 @@ const menu = mountOptionMenu(document.body, {
|
|
|
91
90
|
onClose: () => { paused = false },
|
|
92
91
|
items: [
|
|
93
92
|
{ label: "Restart", shortcut: "DIAMOND_UP", onSelect: () => restart() },
|
|
93
|
+
{ label: "Difficulty", value: difficulty, onStep: (d) => cycleDifficulty(d) }, // a stepper
|
|
94
94
|
{ label: "Back to menu", onSelect: () => router.go("/") },
|
|
95
95
|
],
|
|
96
96
|
});
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
`Resume` is prepended free, so the shortest useful menu passes no `items` at all. Rows also take
|
|
100
|
-
`
|
|
101
|
-
|
|
100
|
+
`disabled`, `danger` (destructive tint), `keepOpen` and `hint` (a second line — **discouraged**: a row
|
|
101
|
+
is read from a few feet away mid-ride, so if the label needs a sentence under it, fix the label). Drive
|
|
102
|
+
it by hand with `open()`/`close()`/`toggle()`/`setItems()`, or `handleButton(name)` if your host routes
|
|
103
|
+
input itself.
|
|
104
|
+
|
|
105
|
+
**A row can be a dial instead of an action.** Give it a `value` and an `onStep(delta)` and `LEFT`/`RIGHT`
|
|
106
|
+
change it in place: the value is drawn on the right between `‹ ›` arrows (clickable too), the menu stays
|
|
107
|
+
open, the ring stays put, and `onSelect` is never called — so a pure stepper needs no `onSelect` and is
|
|
108
|
+
drawn with no confirm keycap. Pass `canStepDown: false` / `canStepUp: false` at the ends of a range and
|
|
109
|
+
the spent arrow goes inert. **From `onStep`, re-publish the list with the new value via `setItems`** —
|
|
110
|
+
a same-shape list is patched in place rather than rebuilt, so the value changes without replaying the
|
|
111
|
+
entrance animation and a rider can hold `RIGHT` through the whole range.
|
|
102
112
|
|
|
103
113
|
**It renders in the game's font.** The title and every row inherit the host's `font-family` — set the
|
|
104
114
|
`font` option or the `--rydr-option-font` custom property to force one. The keycaps keep their own RYDR
|
|
@@ -186,13 +196,16 @@ Notes worth knowing:
|
|
|
186
196
|
- **Devices differ.** A Zwift Play has no joysticks and no triggers, so they aren't drawn at all. A
|
|
187
197
|
phone exposes only the confirm/back pair — the protocol can't tell us which buttons a device has, so
|
|
188
198
|
pass `available: [...]` if your game knows, and don't gate a required flow behind a rare control.
|
|
189
|
-
- **The joysticks are pictures, not letters
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
a
|
|
199
|
+
- **The joysticks are pictures, not letters** — and all three are the SAME picture, a well and a cap,
|
|
200
|
+
told apart by what the cap DOES. `LSTICK` runs the cap around its travel circle (move any way),
|
|
201
|
+
`LSTICK:left` pushes it left and back on a loop (parked at full deflection it would read as "already
|
|
202
|
+
done"), and `LSTICK_PRESS` keeps it centred and shrinks it under a real press — the live pad's own
|
|
203
|
+
click, because pressing a stick is motion straight at the viewer. No direction arrows: at chip size an
|
|
204
|
+
arrow is stroked in the same colour as the well rim, so it fuses into it or eats the well's room. "L3"
|
|
205
|
+
tells a rider nothing about what to do with their thumb, so the brand letter lives in the chip's
|
|
206
|
+
tooltip. `prefers-reduced-motion` gets a still frame instead of the loop. Every *button* shape comes
|
|
207
|
+
from the keycap factories, so a trigger or OPTIONS reads identically in a legend and in an in-game
|
|
208
|
+
prompt.
|
|
196
209
|
- Tuned for up to **5 callouts per side**; past that it warns rather than dropping one.
|
|
197
210
|
- Live catalog: `npm run showcase` in the SDK repo, or the platform's `/game-ui` route.
|
|
198
211
|
|
|
@@ -269,7 +282,14 @@ mountControlTrainer(modalBody, {
|
|
|
269
282
|
Each step walks three states, on both its chips and the shared pad: **whitish + pulsing** ("do this"),
|
|
270
283
|
**accent, pulse stops** ("you're doing it"), **green + ✓** ("done"). The prompt shows **one step at a
|
|
271
284
|
time, alternating**, and builds each combination **cumulatively** — the stick click lights, stays lit, and
|
|
272
|
-
the shoulder joins it a beat later; then the other half takes its turn, and it loops. **
|
|
285
|
+
the shoulder joins it a beat later; then the other half takes its turn, and it loops. **A hinted stick CLICK
|
|
286
|
+
performs the click** rather than sitting there white: a raised white cap is pixel-identical to a hinted round
|
|
287
|
+
button and says nothing about what to do with a thumb, so it sinks and shrinks on a loop, onto exactly the
|
|
288
|
+
frame a real click lands on (`--pad-click-depth` / `--pad-click-scale`, one definition per surface, shared by
|
|
289
|
+
the press and the loop). The chip in the panel clicks with it, at the same rate — and when the rider actually
|
|
290
|
+
clicks, that chip's "you're doing it" state drives the same pressed look real input drives. It's the click's
|
|
291
|
+
twin of a hinted *direction* sweeping out and back. Under `prefers-reduced-motion` both park on the clicked
|
|
292
|
+
frame, since the sink is the instruction, not decoration. **The two surfaces speak different languages.** The
|
|
273
293
|
**pad** is physical — white = *press this*, blue = *you're pressing it*, and **never green**; white and blue
|
|
274
294
|
have already taught the rider that colour there means *now*, so progress as a third colour reads as "and this
|
|
275
295
|
one too". The **panels** are logical — grey = to do, green + ✓ = done, and that stays for the rest of the
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import type { GlyphSet } from "../../protocol/glyphs.js";
|
|
34
34
|
import { type ControllerPad, type PadInputSource } from "./controller-pad.js";
|
|
35
|
-
import type { StickPictogramStyle } from "./input-chip.js";
|
|
36
35
|
import type { ControlAction } from "./tokens.js";
|
|
37
36
|
import type { PadBrandKey } from "./types.js";
|
|
38
37
|
export interface ComboDemoOptions {
|
|
@@ -63,8 +62,6 @@ export interface ComboDemoOptions {
|
|
|
63
62
|
labels?: boolean;
|
|
64
63
|
colored?: boolean;
|
|
65
64
|
accent?: string;
|
|
66
|
-
/** Drawing convention for the joystick pictograms in the chips. See {@link StickPictogramStyle}. */
|
|
67
|
-
stickStyle?: StickPictogramStyle;
|
|
68
65
|
/** Playback rate. `1` = normal, `0.5` = half speed for a slow walkthrough. */
|
|
69
66
|
speed?: number;
|
|
70
67
|
/** Called each time the loop completes a full cycle. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combo-demo.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/combo-demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAsB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"combo-demo.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/combo-demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAsB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIlG,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,IAAI,IAAI,CAAC;CACjB;AAqBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAgSnF"}
|
|
@@ -98,7 +98,6 @@ export function mountComboDemo(host, opts) {
|
|
|
98
98
|
strip = createComboStrip(action, {
|
|
99
99
|
glyphSet: opts.glyphSet ?? pad?.glyphSet() ?? undefined,
|
|
100
100
|
colored: opts.colored,
|
|
101
|
-
stickStyle: opts.stickStyle,
|
|
102
101
|
});
|
|
103
102
|
stripCell.textContent = "";
|
|
104
103
|
stripCell.appendChild(strip.el);
|
|
@@ -136,6 +135,13 @@ export function mountComboDemo(host, opts) {
|
|
|
136
135
|
driver?.setMeter(meter, 1);
|
|
137
136
|
},
|
|
138
137
|
setStick: (side, x, y, state) => pad?.driver().setStick(side, x, y, state === "done" ? "done" : "on"),
|
|
138
|
+
// Same as a part the animation doesn't own: a stick outside the combination is this pass's to put
|
|
139
|
+
// back, or the cap sits where the rider left it for as long as the demo runs.
|
|
140
|
+
restStick: (side) => {
|
|
141
|
+
if (channels.some((ch) => ch.stick?.side === side))
|
|
142
|
+
return; // the animation recentres its own
|
|
143
|
+
pad?.driver().setStick(side, 0, 0, "off");
|
|
144
|
+
},
|
|
139
145
|
release: (part) => {
|
|
140
146
|
if (channels.some((ch) => ch.part === part))
|
|
141
147
|
return; // the animation repaints it next frame
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combo-demo.js","sourceRoot":"","sources":["../../../src/ui/controller/combo-demo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combo-demo.js","sourceRoot":"","sources":["../../../src/ui/controller/combo-demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-spotlight.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/control-spotlight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAsB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAclG,OAAO,EAA8B,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAc,KAAK,WAAW,EAAgB,MAAM,YAAY,CAAC;AAExE,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAOxC,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,8FAA8F;IAC9F,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACzC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2FAA2F;IAC3F,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,WAAW,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,wFAAwF;IACxF,WAAW,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,sCAAsC;IACtC,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAAC;IACvD,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,8FAA8F;IAC9F,SAAS,IAAI,SAAS,OAAO,EAAE,CAAC;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAeD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"control-spotlight.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/control-spotlight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAsB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAclG,OAAO,EAA8B,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAc,KAAK,WAAW,EAAgB,MAAM,YAAY,CAAC;AAExE,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAOxC,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,8FAA8F;IAC9F,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACzC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2FAA2F;IAC3F,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,WAAW,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,wFAAwF;IACxF,WAAW,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,sCAAsC;IACtC,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAAC;IACvD,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,8FAA8F;IAC9F,SAAS,IAAI,SAAS,OAAO,EAAE,CAAC;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAeD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,gBAAgB,CAoexG"}
|