@rydr/game-sdk 8.4.0 → 8.5.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/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/dist/ui/README.md +20 -11
- 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/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/package.json +2 -1
|
@@ -36,6 +36,32 @@ import { type GlyphSet } from "../../protocol/glyphs.js";
|
|
|
36
36
|
import { type PadDriver, type PadSvg } from "./pad-svg.js";
|
|
37
37
|
import type { ControlName } from "./tokens.js";
|
|
38
38
|
import type { PadBrandKey, PadLayout } from "./types.js";
|
|
39
|
+
/**
|
|
40
|
+
* What the host reports about the controller in the rider's hands, and how to hear about a swap.
|
|
41
|
+
*
|
|
42
|
+
* A `PlatformSession` satisfies it structurally, so a game just passes `session`. A SHELL — which
|
|
43
|
+
* identified the device itself and therefore knows more than the protocol carries — can also fill in
|
|
44
|
+
* {@link PadHardwareSnapshot.padBrand}.
|
|
45
|
+
*/
|
|
46
|
+
export interface PadHardwareStore {
|
|
47
|
+
current: PadHardwareSnapshot;
|
|
48
|
+
subscribe?(cb: (snapshot: PadHardwareSnapshot) => void): () => void;
|
|
49
|
+
}
|
|
50
|
+
export interface PadHardwareSnapshot {
|
|
51
|
+
/** Which lettering the pad carries. Drives the glyphs, and the silhouette when nothing better is known. */
|
|
52
|
+
glyphSet?: GlyphSet;
|
|
53
|
+
/**
|
|
54
|
+
* Which pad to DRAW, when the host knows something the lettering can't say.
|
|
55
|
+
*
|
|
56
|
+
* A {@link GlyphSet} is a lettering family, not a device: a Joy-Con pair and a Switch Pro Controller
|
|
57
|
+
* both letter `nintendo`, yet one is two slim halves and the other is a single shell. A host that
|
|
58
|
+
* identified the device (the RYDR shell does, from `gamepad.id`) reports the drawing key here and the
|
|
59
|
+
* pad follows it — including across a swap, exactly as it re-letters. Games can leave it unset: the
|
|
60
|
+
* wire protocol doesn't carry device identity, so `glyphSet` is all a guest has, and deriving the
|
|
61
|
+
* silhouette from it is still the right answer there.
|
|
62
|
+
*/
|
|
63
|
+
padBrand?: PadBrandKey;
|
|
64
|
+
}
|
|
39
65
|
/**
|
|
40
66
|
* The slice of a `PlatformSession` the controller views consume. A session satisfies it structurally —
|
|
41
67
|
* just pass `session`. Everything but `onButton` is optional so a hand-rolled stub or a showcase double
|
|
@@ -60,20 +86,17 @@ export interface PadInputSource {
|
|
|
60
86
|
* `ControlName` for the same reason as `onButton`: a shell source knows about `LB`/`RB` too.
|
|
61
87
|
*/
|
|
62
88
|
buttonsDown?(): ControlName[];
|
|
63
|
-
/** The hardware store — read for the rider's
|
|
64
|
-
hardware?:
|
|
65
|
-
current: {
|
|
66
|
-
glyphSet?: GlyphSet;
|
|
67
|
-
};
|
|
68
|
-
subscribe?(cb: (snapshot: {
|
|
69
|
-
glyphSet?: GlyphSet;
|
|
70
|
-
}) => void): () => void;
|
|
71
|
-
};
|
|
89
|
+
/** The hardware store — read for the rider's lettering and silhouette, subscribed to for pad swaps. */
|
|
90
|
+
hardware?: PadHardwareStore;
|
|
72
91
|
}
|
|
73
92
|
export interface ControllerPadOptions {
|
|
74
93
|
/** Wire to real input. Omit for static art. */
|
|
75
94
|
press?: PadInputSource;
|
|
76
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Force a silhouette, PINNING it: the pad then stops following pad swaps, which is what a preview or a
|
|
97
|
+
* showcase wants. Default: the host's own `hardware.current.padBrand` when it reports one, else derived
|
|
98
|
+
* from the glyph set.
|
|
99
|
+
*/
|
|
77
100
|
brand?: PadBrandKey;
|
|
78
101
|
/**
|
|
79
102
|
* Force the lettering. Default: the set reported by `press`, else `"xbox"`. Setting this explicitly
|
|
@@ -119,6 +142,8 @@ export interface ControllerPad {
|
|
|
119
142
|
* (the map's chips) must use the SAME set, or a pad swap leaves the two disagreeing.
|
|
120
143
|
*/
|
|
121
144
|
glyphSet(): GlyphSet;
|
|
145
|
+
/** The silhouette currently drawn — `"joycon"` when the host reported a Joy-Con pair. */
|
|
146
|
+
brand(): PadBrandKey;
|
|
122
147
|
/** Fires after the drawing is rebuilt (a pad swap). The map view uses it to re-route its lines. */
|
|
123
148
|
onRebuild(cb: () => void): () => void;
|
|
124
149
|
setVisible(on: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-pad.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EAAoD,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,YAAY,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/E,yGAAyG;IACzG,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;IAC9B,
|
|
1
|
+
{"version":3,"file":"controller-pad.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EAAoD,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,YAAY,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,mBAAmB;IAClC,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/E,yGAAyG;IACzG,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;IAC9B,uGAAuG;IACvG,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gDAAgD;IAChD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gGAAgG;IAChG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAClC;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,iGAAiG;IACjG,GAAG,IAAI,MAAM,CAAC;IACd,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,IAAI,SAAS,CAAC;IACpB;;;OAGG;IACH,QAAQ,IAAI,QAAQ,CAAC;IACrB,yFAAyF;IACzF,KAAK,IAAI,WAAW,CAAC;IACrB,mGAAmG;IACnG,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACtC,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC;CACjB;AAmBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAE,oBAAyB,GAAG,aAAa,CA+JpG"}
|
|
@@ -41,6 +41,14 @@ const DPAD_NAMES = ["UP", "DOWN", "LEFT", "RIGHT"];
|
|
|
41
41
|
function resolveGlyphSet(opts) {
|
|
42
42
|
return opts.glyphSet ?? opts.press?.hardware?.current?.glyphSet ?? DEFAULT_GLYPH_SET;
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Which pad to DRAW. Same shape as the lettering above, with one extra rung: a host that identified the
|
|
46
|
+
* device outranks anything derived from the lettering, because the lettering cannot distinguish a
|
|
47
|
+
* Joy-Con pair from a Pro Controller and it is the one place the drawing would otherwise be wrong.
|
|
48
|
+
*/
|
|
49
|
+
function resolveBrand(opts, glyphSet) {
|
|
50
|
+
return opts.brand ?? opts.press?.hardware?.current?.padBrand ?? glyphSet;
|
|
51
|
+
}
|
|
44
52
|
export function mountControllerPad(host, opts = {}) {
|
|
45
53
|
injectPadCss();
|
|
46
54
|
const root = document.createElement("div");
|
|
@@ -57,6 +65,7 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
57
65
|
const held = new Set();
|
|
58
66
|
const rebuildCbs = new Set();
|
|
59
67
|
let glyphSet = resolveGlyphSet(opts);
|
|
68
|
+
let brand = resolveBrand(opts, glyphSet);
|
|
60
69
|
let pad;
|
|
61
70
|
let driver;
|
|
62
71
|
let layout;
|
|
@@ -72,7 +81,7 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
72
81
|
return parts;
|
|
73
82
|
};
|
|
74
83
|
function build() {
|
|
75
|
-
layout = layoutForBrand(
|
|
84
|
+
layout = layoutForBrand(brand);
|
|
76
85
|
pad = buildPadSvg(layout, { labels: opts.labels ?? true });
|
|
77
86
|
driver = createPadDriver(pad, layout, { allowShellOwned: opts.allowShellOwned });
|
|
78
87
|
root.textContent = "";
|
|
@@ -157,14 +166,19 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
157
166
|
startFrames();
|
|
158
167
|
document.addEventListener("visibilitychange", onVisibility);
|
|
159
168
|
}
|
|
160
|
-
// ── re-lettering
|
|
161
|
-
// Only
|
|
162
|
-
|
|
169
|
+
// ── re-lettering, and re-drawing ────────────────────────────────────────────────────────────────
|
|
170
|
+
// Only for the parts the caller did NOT pin: an explicit `glyphSet`/`brand` is a deliberate preview.
|
|
171
|
+
// Both are watched here rather than in two subscriptions, because they come from ONE snapshot and a
|
|
172
|
+
// swap usually changes both — two handlers would rebuild the drawing twice for the same event.
|
|
173
|
+
const offHardware = (!opts.glyphSet || !opts.brand) && live
|
|
163
174
|
? source?.hardware?.subscribe?.((snapshot) => {
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
glyphSet
|
|
175
|
+
const nextGlyphs = opts.glyphSet ?? snapshot.glyphSet ?? DEFAULT_GLYPH_SET;
|
|
176
|
+
const nextBrand = opts.brand ?? snapshot.padBrand ?? nextGlyphs;
|
|
177
|
+
// A second pad of the same family is a non-event — in EITHER field.
|
|
178
|
+
if (nextGlyphs === glyphSet && nextBrand === brand)
|
|
179
|
+
return;
|
|
180
|
+
glyphSet = nextGlyphs;
|
|
181
|
+
brand = nextBrand;
|
|
168
182
|
build();
|
|
169
183
|
applyAllHeld();
|
|
170
184
|
for (const cb of rebuildCbs)
|
|
@@ -177,6 +191,7 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
177
191
|
driver: () => driver,
|
|
178
192
|
layout: () => layout,
|
|
179
193
|
glyphSet: () => glyphSet,
|
|
194
|
+
brand: () => brand,
|
|
180
195
|
onRebuild(cb) {
|
|
181
196
|
rebuildCbs.add(cb);
|
|
182
197
|
return () => rebuildCbs.delete(cb);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-pad.js","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAA+B,MAAM,cAAc,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"controller-pad.js","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* UP/DOWN/LEFT/RIGHT, R* → `createDpadKeycap` (the kit's chevron-on-steel keycap)
|
|
8
8
|
* LT / RT / OPTIONS → `createButtonKeycap` (the kit's pill "L2"/"ZL" for a trigger, the
|
|
9
9
|
* pad's round ☰ / + icon pip for OPTIONS)
|
|
10
|
-
* LSTICK / RSTICK → a stick pictogram
|
|
11
|
-
* LSTICK / RSTICK :direction → the same pictogram
|
|
12
|
-
* LSTICK_PRESS / RSTICK_PRESS →
|
|
13
|
-
*
|
|
10
|
+
* LSTICK / RSTICK → a stick pictogram whose cap runs its travel circle: any direction
|
|
11
|
+
* LSTICK / RSTICK :direction → the same pictogram, cap pushing that way and back on a loop
|
|
12
|
+
* LSTICK_PRESS / RSTICK_PRESS → the same pictogram again, cap centred: it shrinks under a real
|
|
13
|
+
* press, exactly as the live pad's cap does
|
|
14
14
|
*
|
|
15
15
|
* The sticks are pictures rather than lettered chips throughout, because that is the one control where
|
|
16
16
|
* the letter tells a rider nothing: "L3" does not say *click the stick*, and it changes per brand on
|
|
@@ -49,8 +49,6 @@ export interface InputChipOptions {
|
|
|
49
49
|
press?: ChipPressSource;
|
|
50
50
|
/** Per-role hue on face keycaps (confirm green, back amber). Default true, as elsewhere in the kit. */
|
|
51
51
|
colored?: boolean;
|
|
52
|
-
/** Drawing convention for the joystick pictograms. Default {@link DEFAULT_STICK_STYLE}. */
|
|
53
|
-
stickStyle?: StickPictogramStyle;
|
|
54
52
|
}
|
|
55
53
|
/**
|
|
56
54
|
* What a chip is saying, for a guided lesson. Mirrors {@link PadPartState} so the chip in the card and
|
|
@@ -71,26 +69,6 @@ export interface InputChip {
|
|
|
71
69
|
setDeflection(x: number, y: number): void;
|
|
72
70
|
dispose(): void;
|
|
73
71
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Which drawing convention to use for the joystick pictograms. Three real ones from the industry, kept
|
|
76
|
-
* as an option because they trade off differently and the right answer is a judgement call:
|
|
77
|
-
*
|
|
78
|
-
* - **`"topdown"`** — the abstract plan view: a well, a cap dot, outline chevrons. Compact and neutral,
|
|
79
|
-
* the PlayStation/Steam-overlay convention. Weakest at small sizes, and the *click* is its hard case:
|
|
80
|
-
* pressing along the view axis is exactly what a top-down view cannot show.
|
|
81
|
-
* - **`"profile"`** — the hybrid the free prompt packs (Kenney, Xelu) settled on, and the clearest of
|
|
82
|
-
* the three: **plan view with bold filled arrows for directions**, and a **side view for the click** —
|
|
83
|
-
* a real stick with a shaft and a thumb pad, being pushed down by a solid arrow. Each gesture gets the
|
|
84
|
-
* viewpoint that can actually depict it.
|
|
85
|
-
* - **`"glyph"`** — the bold console-UI mark (Xbox / Steam Input): a solid disc with solid triangles,
|
|
86
|
-
* and a click drawn as a heavy ring with an arrow inside it. Loudest and most legible far away;
|
|
87
|
-
* least literal about the hardware.
|
|
88
|
-
*
|
|
89
|
-
* Compare them in the showcase's "Joystick pictograms" section before changing {@link DEFAULT_STICK_STYLE}.
|
|
90
|
-
*/
|
|
91
|
-
export type StickPictogramStyle = "topdown" | "profile" | "glyph";
|
|
92
|
-
/** The style used when a caller doesn't ask for one. */
|
|
93
|
-
export declare const DEFAULT_STICK_STYLE: StickPictogramStyle;
|
|
94
72
|
/**
|
|
95
73
|
* Build the chip for one control.
|
|
96
74
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-chip.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/input-chip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtG,OAAO,EAAgD,KAAK,UAAU,EAAE,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAChF;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sFAAsF;IACtF,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,uGAAuG;IACvG,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"input-chip.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/input-chip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtG,OAAO,EAAgD,KAAK,UAAU,EAAE,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAChF;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sFAAsF;IACtF,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,uGAAuG;IACvG,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;CACjB;AA2KD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,gBAAqB,GAAG,SAAS,CAwHzF"}
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* UP/DOWN/LEFT/RIGHT, R* → `createDpadKeycap` (the kit's chevron-on-steel keycap)
|
|
8
8
|
* LT / RT / OPTIONS → `createButtonKeycap` (the kit's pill "L2"/"ZL" for a trigger, the
|
|
9
9
|
* pad's round ☰ / + icon pip for OPTIONS)
|
|
10
|
-
* LSTICK / RSTICK → a stick pictogram
|
|
11
|
-
* LSTICK / RSTICK :direction → the same pictogram
|
|
12
|
-
* LSTICK_PRESS / RSTICK_PRESS →
|
|
13
|
-
*
|
|
10
|
+
* LSTICK / RSTICK → a stick pictogram whose cap runs its travel circle: any direction
|
|
11
|
+
* LSTICK / RSTICK :direction → the same pictogram, cap pushing that way and back on a loop
|
|
12
|
+
* LSTICK_PRESS / RSTICK_PRESS → the same pictogram again, cap centred: it shrinks under a real
|
|
13
|
+
* press, exactly as the live pad's cap does
|
|
14
14
|
*
|
|
15
15
|
* The sticks are pictures rather than lettered chips throughout, because that is the one control where
|
|
16
16
|
* the letter tells a rider nothing: "L3" does not say *click the stick*, and it changes per brand on
|
|
@@ -32,38 +32,30 @@ import { createKeycap, createDpadKeycap, createButtonKeycap } from "../keycap.js
|
|
|
32
32
|
import { injectPadCss } from "./styles.js";
|
|
33
33
|
import { isShellControl, parseToken, STICK_DIR_VECTOR } from "./tokens.js";
|
|
34
34
|
const NS = "http://www.w3.org/2000/svg";
|
|
35
|
-
/** The style used when a caller doesn't ask for one. */
|
|
36
|
-
export const DEFAULT_STICK_STYLE = "profile";
|
|
37
35
|
/**
|
|
38
|
-
* Plan-view geometry.
|
|
39
|
-
* its rim, in clear air.
|
|
36
|
+
* Plan-view geometry. One drawing convention, deliberately plain: a well and a cap, and nothing else.
|
|
40
37
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
38
|
+
* There used to be three conventions (a top-down one, this one, and a bold console-UI glyph) and every
|
|
39
|
+
* one of them drew direction ARROWS around the well. They're gone: an arrow at chip size is stroked in
|
|
40
|
+
* the same `currentColor` as the well rim, so it either touches the rim and fuses into a blob, or it
|
|
41
|
+
* sits outside it and eats the room the well needed to look like a well. The cap itself says it better —
|
|
42
|
+
* it MOVES (see {@link animateStick}), which is what a stick actually does and what an arrow was only
|
|
43
|
+
* ever a static shorthand for.
|
|
44
|
+
*
|
|
45
|
+
* With the arrows gone the well can have the whole box, so these are much bigger than the arrowed
|
|
46
|
+
* version's.
|
|
44
47
|
*/
|
|
45
|
-
const WELL_R =
|
|
46
|
-
const CAP_R =
|
|
47
|
-
/** Outline chevron pointing OUTWARD, clear of the well rim. */
|
|
48
|
-
const STICK_ARROW = "M9.3 4 L12 1 L14.7 4";
|
|
49
|
-
/** The same cue as a SOLID triangle — heavier, and far more legible at chip size. */
|
|
50
|
-
const STICK_TRI = "M12 0.6 L14.9 4 L9.1 4 Z";
|
|
51
|
-
/** A solid triangle for the glyph style, whose disc has no rim to collide with. */
|
|
52
|
-
const STICK_TRI_FAR = "M12 1.2 L15.2 5.6 L8.8 5.6 Z";
|
|
53
|
-
/** The four rotations that turn one arrow into the "any direction" cue. */
|
|
54
|
-
const OMNI_ROTATIONS = [0, 90, 180, 270];
|
|
55
|
-
/** Chevron pointing DOWN at the well from outside it — the top-down style's "click" cue. */
|
|
56
|
-
const STICK_PRESS_ARROW = "M9.4 1 L12 3.8 L14.6 1";
|
|
57
|
-
/** Solid arrow pressing DOWN onto the thumb pad of the side-view stick. */
|
|
58
|
-
const STICK_PRESS_TRI = "M12 7.4 L9.4 3.4 L14.6 3.4 Z";
|
|
59
|
-
/** Solid arrow pointing DOWN *inside* the glyph style's heavy ring. */
|
|
60
|
-
const STICK_PRESS_TRI_IN = "M12 16.8 L8.3 9.6 L15.7 9.6 Z";
|
|
61
|
-
/** The side-view stick: a socket ellipse, a tapering shaft, and a rounded thumb pad. */
|
|
62
|
-
const STICK_SHAFT = "M9.8 19 L10.9 12.6 L13.1 12.6 L14.2 19 Z";
|
|
48
|
+
const WELL_R = 9;
|
|
49
|
+
const CAP_R = 4.6;
|
|
63
50
|
/** How far the cap slides at full deflection, in the pictogram's own 24-unit box. Kept under
|
|
64
51
|
* `WELL_R - CAP_R` so a fully-deflected cap still reads as *inside* its well rather than escaping it. */
|
|
65
|
-
const PIC_TRAVEL =
|
|
66
|
-
|
|
52
|
+
const PIC_TRAVEL = 3.6;
|
|
53
|
+
/** One full revolution of the "any direction" sweep, ms. Matches `combo-demo` / `control-spotlight`. */
|
|
54
|
+
const SWEEP_MS = 1200;
|
|
55
|
+
/** One out-and-back nudge of a DIRECTIONAL cap, ms. Matches `control-trainer`'s hint sweep. */
|
|
56
|
+
const NUDGE_MS = 1400;
|
|
57
|
+
/** Where a reduced-motion "any direction" cap parks: off-centre, so it still reads as a live stick. */
|
|
58
|
+
const OMNI_STILL = [0.7, 0.7];
|
|
67
59
|
/** Lesson colours. Kept beside the CSS block that mirrors them for the plain chips. */
|
|
68
60
|
const STATE_COLOR = {
|
|
69
61
|
idle: null, // null = whatever setColored would give
|
|
@@ -99,8 +91,8 @@ function textChip(text, extraClass = "") {
|
|
|
99
91
|
return span;
|
|
100
92
|
}
|
|
101
93
|
/**
|
|
102
|
-
* A directional chip
|
|
103
|
-
*
|
|
94
|
+
* A directional chip is BORN deflected — that is the information ("push it left"), and it's the frame a
|
|
95
|
+
* reduced-motion reader keeps. The loop and the combo demo both start from centre and take over anyway.
|
|
104
96
|
*/
|
|
105
97
|
function seatCap(cap, mode, travel = PIC_TRAVEL) {
|
|
106
98
|
if (mode === "omni" || mode === "press")
|
|
@@ -108,92 +100,96 @@ function seatCap(cap, mode, travel = PIC_TRAVEL) {
|
|
|
108
100
|
const [vx, vy] = STICK_DIR_VECTOR[mode];
|
|
109
101
|
cap.setAttribute("transform", `translate(${vx * travel} ${-vy * travel})`);
|
|
110
102
|
}
|
|
111
|
-
/**
|
|
112
|
-
function
|
|
113
|
-
|
|
114
|
-
return;
|
|
115
|
-
const rots = mode === "omni" ? OMNI_ROTATIONS : [ARROW_ROT[mode]];
|
|
116
|
-
for (const rot of rots)
|
|
117
|
-
svg.appendChild(svgEl("path", { d, transform: `rotate(${rot} 12 12)` }, cls));
|
|
118
|
-
}
|
|
119
|
-
/** Plan view, light outline chevrons. The click is concentric rings + a chevron pressing in. */
|
|
120
|
-
function drawTopDown(svg, mode) {
|
|
121
|
-
svg.appendChild(svgEl("circle", { cx: 12, cy: 12, r: WELL_R }, "rydr-pad-stickpic-well"));
|
|
122
|
-
if (mode === "press") {
|
|
123
|
-
svg.appendChild(svgEl("path", { d: STICK_PRESS_ARROW }, "rydr-pad-stickpic-arrow"));
|
|
124
|
-
svg.appendChild(svgEl("circle", { cx: 12, cy: 12, r: 4.9 }, "rydr-pad-stickpic-ring"));
|
|
125
|
-
const cap = svgEl("circle", { cx: 12, cy: 13, r: 3 }, "rydr-pad-stickpic-cap rydr-pad-stickpic-press");
|
|
126
|
-
svg.appendChild(cap);
|
|
127
|
-
return cap;
|
|
128
|
-
}
|
|
129
|
-
addArrows(svg, mode, STICK_ARROW, "rydr-pad-stickpic-arrow");
|
|
130
|
-
const cap = svgEl("circle", { cx: 12, cy: 12, r: CAP_R }, "rydr-pad-stickpic-cap");
|
|
131
|
-
seatCap(cap, mode);
|
|
132
|
-
svg.appendChild(cap);
|
|
133
|
-
return cap;
|
|
103
|
+
/** Write a deflection onto a cap, in the SDK's convention (right = +1, **up = +1**). */
|
|
104
|
+
function placeCap(cap, x, y) {
|
|
105
|
+
cap.setAttribute("transform", `translate(${(x * PIC_TRAVEL).toFixed(2)} ${(-y * PIC_TRAVEL).toFixed(2)})`);
|
|
134
106
|
}
|
|
135
107
|
/**
|
|
136
|
-
*
|
|
108
|
+
* Draw the pictogram: a well, and a cap in it. Same two shapes for every mode — what differs is what the
|
|
109
|
+
* cap DOES, which is the animation's job, not the drawing's.
|
|
137
110
|
*
|
|
138
|
-
*
|
|
139
|
-
* axis,
|
|
140
|
-
*
|
|
141
|
-
* stick with an arrow on top of it.
|
|
111
|
+
* The click's cap carries `-press` as well, which is what the pressed CSS scales: a click is motion along
|
|
112
|
+
* the viewing axis, so the cap shrinks in place (smaller = pushed away from you) and stays centred,
|
|
113
|
+
* exactly as the live pad's own cap does.
|
|
142
114
|
*/
|
|
143
|
-
function
|
|
144
|
-
if (mode === "press") {
|
|
145
|
-
svg.appendChild(svgEl("path", { d: STICK_PRESS_TRI }, "rydr-pad-stickpic-fill"));
|
|
146
|
-
svg.appendChild(svgEl("ellipse", { cx: 12, cy: 20, rx: 7.5, ry: 2.4 }, "rydr-pad-stickpic-base"));
|
|
147
|
-
svg.appendChild(svgEl("path", { d: STICK_SHAFT }, "rydr-pad-stickpic-shaft"));
|
|
148
|
-
const cap = svgEl("rect", { x: 7.4, y: 8.4, width: 9.2, height: 4.8, rx: 2.4 }, "rydr-pad-stickpic-cap rydr-pad-stickpic-press");
|
|
149
|
-
svg.appendChild(cap);
|
|
150
|
-
return cap;
|
|
151
|
-
}
|
|
115
|
+
function drawStick(svg, mode) {
|
|
152
116
|
svg.appendChild(svgEl("circle", { cx: 12, cy: 12, r: WELL_R }, "rydr-pad-stickpic-well"));
|
|
153
|
-
|
|
154
|
-
const cap = svgEl("circle", { cx: 12, cy: 12, r: CAP_R },
|
|
117
|
+
const cls = mode === "press" ? "rydr-pad-stickpic-cap rydr-pad-stickpic-press" : "rydr-pad-stickpic-cap";
|
|
118
|
+
const cap = svgEl("circle", { cx: 12, cy: 12, r: CAP_R }, cls);
|
|
155
119
|
seatCap(cap, mode);
|
|
156
120
|
svg.appendChild(cap);
|
|
157
121
|
return cap;
|
|
158
122
|
}
|
|
159
|
-
/**
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Make the cap DEMONSTRATE its gesture instead of parking at it — this is what replaced the arrows.
|
|
125
|
+
*
|
|
126
|
+
* "omni" → the cap runs its travel circle: every direction, in turn.
|
|
127
|
+
* a dir → the cap pushes that way and comes back, on a loop. A cap parked at full deflection reads
|
|
128
|
+
* as "already done" (the same reason `control-trainer` sweeps its hints); moving out and
|
|
129
|
+
* back reads as an instruction.
|
|
130
|
+
* "press" → nothing. A click is along the viewing axis, so there is no in-plane motion to loop; it
|
|
131
|
+
* shows the live pad's pressed look when the rider actually clicks (`setPressed`).
|
|
132
|
+
*
|
|
133
|
+
* `prefers-reduced-motion` gets a still frame, not a twitch: a directional cap parks deflected, an
|
|
134
|
+
* undirected one parks off-centre.
|
|
135
|
+
*
|
|
136
|
+
* Returns the stopper, which a driver calls on its first `setDeflection`: once the combo demo, the
|
|
137
|
+
* trainer or real axes are driving this cap, two things writing the same transform would fight.
|
|
138
|
+
*/
|
|
139
|
+
function animateStick(wrap, cap, mode) {
|
|
140
|
+
if (mode === "press")
|
|
141
|
+
return () => { };
|
|
142
|
+
const reduceMotion = typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
143
|
+
if (reduceMotion) {
|
|
144
|
+
if (mode === "omni")
|
|
145
|
+
placeCap(cap, OMNI_STILL[0], OMNI_STILL[1]);
|
|
146
|
+
return () => { };
|
|
166
147
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
148
|
+
// The cap's CSS transition smooths a driver's occasional writes; per-frame it would only add lag.
|
|
149
|
+
wrap.classList.add("anim");
|
|
150
|
+
let raf = 0;
|
|
151
|
+
let t0 = 0;
|
|
152
|
+
const frame = (t) => {
|
|
153
|
+
if (!t0)
|
|
154
|
+
t0 = t;
|
|
155
|
+
const p = t - t0;
|
|
156
|
+
if (mode === "omni") {
|
|
157
|
+
const a = (p / SWEEP_MS) * Math.PI * 2;
|
|
158
|
+
placeCap(cap, Math.cos(a), Math.sin(a));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const [vx, vy] = STICK_DIR_VECTOR[mode];
|
|
162
|
+
const s = 0.5 - 0.5 * Math.cos((p / NUDGE_MS) * Math.PI * 2);
|
|
163
|
+
placeCap(cap, vx * s, vy * s);
|
|
164
|
+
}
|
|
165
|
+
raf = requestAnimationFrame(frame);
|
|
166
|
+
};
|
|
167
|
+
raf = requestAnimationFrame(frame);
|
|
168
|
+
return () => {
|
|
169
|
+
cancelAnimationFrame(raf);
|
|
170
|
+
wrap.classList.remove("anim");
|
|
171
|
+
};
|
|
172
172
|
}
|
|
173
|
-
const STICK_DRAW = {
|
|
174
|
-
topdown: drawTopDown,
|
|
175
|
-
profile: drawProfile,
|
|
176
|
-
glyph: drawGlyph,
|
|
177
|
-
};
|
|
178
173
|
/**
|
|
179
|
-
* The stick pictogram. Three things must be tellable apart at a glance on a trainer screen
|
|
174
|
+
* The stick pictogram. Three things must be tellable apart at a glance on a trainer screen, and none of
|
|
175
|
+
* them is drawn — all three are the SAME well and cap, told apart by how the cap moves:
|
|
180
176
|
*
|
|
181
|
-
* "omni" — the whole stick, free movement:
|
|
182
|
-
* a dir — the stick pushed one way:
|
|
183
|
-
* "press" — the stick CLICKED straight down (`LSTICK_PRESS`)
|
|
177
|
+
* "omni" — the whole stick, free movement: the cap runs its circle
|
|
178
|
+
* a dir — the stick pushed one way: the cap pushes out that way and comes back, on a loop
|
|
179
|
+
* "press" — the stick CLICKED straight down (`LSTICK_PRESS`): the cap stays centred and shrinks under
|
|
180
|
+
* a real press, the live pad's own click
|
|
184
181
|
*
|
|
185
182
|
* Sticks are pictures rather than lettered chips because that is the one control where the letter tells
|
|
186
183
|
* a rider nothing — "L3" does not say *click the stick*, and it changes per brand on top of that. The
|
|
187
|
-
* printed label still reaches them through the chip's tooltip.
|
|
188
|
-
* three drawing conventions and why a click is the hard case.
|
|
184
|
+
* printed label still reaches them through the chip's tooltip.
|
|
189
185
|
*/
|
|
190
|
-
function stickChip(mode
|
|
186
|
+
function stickChip(mode) {
|
|
191
187
|
const wrap = document.createElement("span");
|
|
192
|
-
wrap.className =
|
|
188
|
+
wrap.className = "rydr-pad-chip stick";
|
|
193
189
|
const svg = svgEl("svg", { viewBox: "0 0 24 24" });
|
|
194
|
-
const cap =
|
|
190
|
+
const cap = drawStick(svg, mode);
|
|
195
191
|
wrap.appendChild(svg);
|
|
196
|
-
return { el: wrap, cap };
|
|
192
|
+
return { el: wrap, cap, stop: animateStick(wrap, cap, mode) };
|
|
197
193
|
}
|
|
198
194
|
/**
|
|
199
195
|
* Build the chip for one control.
|
|
@@ -204,7 +200,6 @@ function stickChip(mode, style) {
|
|
|
204
200
|
export function createInputChip(token, opts = {}) {
|
|
205
201
|
injectPadCss();
|
|
206
202
|
const set = opts.glyphSet ?? DEFAULT_GLYPH_SET;
|
|
207
|
-
const stickStyle = opts.stickStyle ?? DEFAULT_STICK_STYLE;
|
|
208
203
|
const parsed = parseToken(token);
|
|
209
204
|
let el;
|
|
210
205
|
let setPressed;
|
|
@@ -219,14 +214,14 @@ export function createInputChip(token, opts = {}) {
|
|
|
219
214
|
/** The control whose real presses this chip reflects (a stick pictogram has none). */
|
|
220
215
|
let pressName;
|
|
221
216
|
if (parsed.kind === "stick") {
|
|
222
|
-
const { el: node, cap } = stickChip(parsed.dir ?? "omni"
|
|
217
|
+
const { el: node, cap, stop } = stickChip(parsed.dir ?? "omni");
|
|
223
218
|
el = node;
|
|
224
219
|
node.title = parsed.stick === "LSTICK" ? "Left stick" : "Right stick";
|
|
225
220
|
setPressed = (on) => node.classList.toggle("pressed", on);
|
|
226
221
|
setState = (s) => classState(node, s);
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
222
|
+
// A driver taking over ends the self-demonstrating loop — see animateStick.
|
|
223
|
+
setDeflection = (x, y) => { stop(); placeCap(cap, x, y); };
|
|
224
|
+
disposeInner = stop;
|
|
230
225
|
}
|
|
231
226
|
else if (isShellControl(parsed.name)) {
|
|
232
227
|
// The rider's resistance − / +, i.e. the UPPER shoulders. Same rectangle as a trigger, because
|
|
@@ -242,12 +237,18 @@ export function createInputChip(token, opts = {}) {
|
|
|
242
237
|
else if (parsed.name === "LSTICK_PRESS" || parsed.name === "RSTICK_PRESS") {
|
|
243
238
|
// Clicking a stick is its own gesture, so it gets its own picture rather than a "L3"/"LS" chip.
|
|
244
239
|
// The brand letter still reaches the rider through the tooltip and assistive tech.
|
|
245
|
-
const { el: node } = stickChip("press"
|
|
240
|
+
const { el: node } = stickChip("press");
|
|
246
241
|
el = node;
|
|
247
242
|
const side = parsed.name === "LSTICK_PRESS" ? "Left" : "Right";
|
|
248
243
|
node.title = `${side} stick click (${buttonLabel(set, parsed.name)})`;
|
|
249
244
|
setPressed = (on) => node.classList.toggle("pressed", on);
|
|
250
|
-
|
|
245
|
+
// The click chip is the one whose lesson states must also MOVE. Everywhere else a state is a colour,
|
|
246
|
+
// because the shape already says which control it is; here the shape is a dot in a well and the
|
|
247
|
+
// gesture is the only thing that distinguishes clicking the stick from pushing it. So `active` —
|
|
248
|
+
// "you are holding it right now" — drives the very same `pressed` class a real press drives, which
|
|
249
|
+
// is what makes the chip in the card and the cap on the live drawing perform the same click. `hint`
|
|
250
|
+
// loops that click in white, from CSS (see .rydr-pad-hint .rydr-pad-stickpic-press).
|
|
251
|
+
setState = (s) => { classState(node, s); setPressed(s === "active"); };
|
|
251
252
|
pressName = parsed.name;
|
|
252
253
|
}
|
|
253
254
|
else if (DIAMONDS.includes(parsed.name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-chip.js","sourceRoot":"","sources":["../../../src/ui/controller/input-chip.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-chip.js","sourceRoot":"","sources":["../../../src/ui/controller/input-chip.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,17 @@ export interface LivePressesOptions extends Omit<HeldPartsOptions, "held"> {
|
|
|
52
52
|
* deadzone — the component's own animation gets its cap back on the next frame by simply drawing it.
|
|
53
53
|
*/
|
|
54
54
|
setStick?(side: "l" | "r", x: number, y: number, state: PadPartState): void;
|
|
55
|
+
/**
|
|
56
|
+
* Put a stick back: neither the rider nor the caller's own animation is moving this one.
|
|
57
|
+
*
|
|
58
|
+
* REQUIRED alongside `setStick`, and the reason is the release. `setStick` is called only while a stick
|
|
59
|
+
* is PAST the deadzone, on the understanding that the caller redraws its cap on the next frame — but a
|
|
60
|
+
* caller only ever writes the sticks its OWN animation names, so a deflection on any other side had
|
|
61
|
+
* nobody to undo it and the cap stayed parked where the rider left it, still lit. Called once per pass
|
|
62
|
+
* for every side the rider is not deflecting; the implementation decides whether its own animation owns
|
|
63
|
+
* that side (in which case it leaves it alone) and otherwise recentres it.
|
|
64
|
+
*/
|
|
65
|
+
restStick?(side: "l" | "r"): void;
|
|
55
66
|
/**
|
|
56
67
|
* The rider let go of a part this pass had lit. A component that repaints the part itself every frame
|
|
57
68
|
* (because its animation owns it) should hand it back rather than blank it — blanking flashes one dark
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-presses.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/live-presses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5B,gGAAgG;IAChG,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,CAa9D;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACxE,8EAA8E;IAC9E,KAAK,EAAE,YAAY,CAAC;IACpB,uGAAuG;IACvG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAChD;;;;;;;OAOG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5E;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"live-presses.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/live-presses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5B,gGAAgG;IAChG,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,CAa9D;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACxE,8EAA8E;IAC9E,KAAK,EAAE,YAAY,CAAC;IACpB,uGAAuG;IACvG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAChD;;;;;;;OAOG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5E;;;;;;;;;OASG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IAClC;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,CAiBjG"}
|