@rydr/game-sdk 9.11.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +11 -6
  2. package/dist/client/PlatformClient.d.ts +61 -2
  3. package/dist/client/PlatformClient.d.ts.map +1 -1
  4. package/dist/client/PlatformClient.js +103 -1
  5. package/dist/client/PlatformClient.js.map +1 -1
  6. package/dist/host/PlatformHost.d.ts +47 -3
  7. package/dist/host/PlatformHost.d.ts.map +1 -1
  8. package/dist/host/PlatformHost.js +28 -1
  9. package/dist/host/PlatformHost.js.map +1 -1
  10. package/dist/protocol/buttons.d.ts +51 -7
  11. package/dist/protocol/buttons.d.ts.map +1 -1
  12. package/dist/protocol/buttons.js +72 -0
  13. package/dist/protocol/buttons.js.map +1 -1
  14. package/dist/protocol/gameMenu.d.ts +66 -0
  15. package/dist/protocol/gameMenu.d.ts.map +1 -0
  16. package/dist/protocol/gameMenu.js +58 -0
  17. package/dist/protocol/gameMenu.js.map +1 -0
  18. package/dist/protocol/glyphs.d.ts +2 -2
  19. package/dist/protocol/glyphs.d.ts.map +1 -1
  20. package/dist/protocol/glyphs.js +14 -25
  21. package/dist/protocol/glyphs.js.map +1 -1
  22. package/dist/protocol/guards.d.ts.map +1 -1
  23. package/dist/protocol/guards.js +3 -0
  24. package/dist/protocol/guards.js.map +1 -1
  25. package/dist/protocol/index.d.ts +1 -0
  26. package/dist/protocol/index.d.ts.map +1 -1
  27. package/dist/protocol/index.js +1 -0
  28. package/dist/protocol/index.js.map +1 -1
  29. package/dist/protocol/messages.d.ts +59 -5
  30. package/dist/protocol/messages.d.ts.map +1 -1
  31. package/dist/protocol/rideHud.d.ts +33 -0
  32. package/dist/protocol/rideHud.d.ts.map +1 -1
  33. package/dist/protocol/rideHud.js +37 -0
  34. package/dist/protocol/rideHud.js.map +1 -1
  35. package/dist/protocol/version.d.ts +2 -2
  36. package/dist/protocol/version.d.ts.map +1 -1
  37. package/dist/protocol/version.js +33 -2
  38. package/dist/protocol/version.js.map +1 -1
  39. package/dist/ui/README.md +22 -15
  40. package/dist/ui/controller/combo-demo.js +1 -1
  41. package/dist/ui/controller/combo-demo.js.map +1 -1
  42. package/dist/ui/controller/control-spotlight.d.ts +5 -5
  43. package/dist/ui/controller/control-spotlight.js +6 -6
  44. package/dist/ui/controller/control-trainer.d.ts +5 -5
  45. package/dist/ui/controller/control-trainer.d.ts.map +1 -1
  46. package/dist/ui/controller/control-trainer.js +4 -4
  47. package/dist/ui/controller/control-trainer.js.map +1 -1
  48. package/dist/ui/controller/controller-map.js +2 -2
  49. package/dist/ui/controller/controller-map.js.map +1 -1
  50. package/dist/ui/controller/controller-pad.d.ts +8 -9
  51. package/dist/ui/controller/controller-pad.d.ts.map +1 -1
  52. package/dist/ui/controller/controller-pad.js +6 -31
  53. package/dist/ui/controller/controller-pad.js.map +1 -1
  54. package/dist/ui/controller/input-chip.d.ts +5 -3
  55. package/dist/ui/controller/input-chip.d.ts.map +1 -1
  56. package/dist/ui/controller/input-chip.js +51 -15
  57. package/dist/ui/controller/input-chip.js.map +1 -1
  58. package/dist/ui/controller/layouts/dualsense.js +6 -6
  59. package/dist/ui/controller/layouts/dualsense.js.map +1 -1
  60. package/dist/ui/controller/layouts/joycon.js +6 -6
  61. package/dist/ui/controller/layouts/joycon.js.map +1 -1
  62. package/dist/ui/controller/layouts/switch-pro.js +6 -6
  63. package/dist/ui/controller/layouts/switch-pro.js.map +1 -1
  64. package/dist/ui/controller/layouts/xbox.js +6 -6
  65. package/dist/ui/controller/layouts/xbox.js.map +1 -1
  66. package/dist/ui/controller/live-presses.d.ts +7 -10
  67. package/dist/ui/controller/live-presses.d.ts.map +1 -1
  68. package/dist/ui/controller/live-presses.js +4 -13
  69. package/dist/ui/controller/live-presses.js.map +1 -1
  70. package/dist/ui/controller/pad-svg.d.ts +11 -10
  71. package/dist/ui/controller/pad-svg.d.ts.map +1 -1
  72. package/dist/ui/controller/pad-svg.js +19 -11
  73. package/dist/ui/controller/pad-svg.js.map +1 -1
  74. package/dist/ui/controller/parts-map.d.ts +9 -8
  75. package/dist/ui/controller/parts-map.d.ts.map +1 -1
  76. package/dist/ui/controller/parts-map.js +30 -14
  77. package/dist/ui/controller/parts-map.js.map +1 -1
  78. package/dist/ui/controller/styles.js +1 -1
  79. package/dist/ui/controller/tokens.d.ts +14 -9
  80. package/dist/ui/controller/tokens.d.ts.map +1 -1
  81. package/dist/ui/controller/tokens.js +1 -1
  82. package/dist/ui/controller/tokens.js.map +1 -1
  83. package/dist/ui/keycap.d.ts +1 -1
  84. package/dist/ui/option-menu.d.ts +19 -6
  85. package/dist/ui/option-menu.d.ts.map +1 -1
  86. package/dist/ui/option-menu.js +171 -6
  87. package/dist/ui/option-menu.js.map +1 -1
  88. package/dist/ui/showcase/index.d.ts.map +1 -1
  89. package/dist/ui/showcase/index.js +21 -19
  90. package/dist/ui/showcase/index.js.map +1 -1
  91. package/package.json +1 -1
@@ -18,26 +18,27 @@ import { type PadLayout, type PadPart } from "./types.js";
18
18
  /**
19
19
  * Parts a game can never bind, so the drawing must never light them.
20
20
  *
21
- * The bumpers are the rider's resistance − / + and `select`/`home` are the shell's own menu and guide —
22
- * all four are handled by the shell and are never delivered to a game (see `protocol/buttons.ts` on
23
- * the shell-owned keys).
21
+ * The d-pad is the rider's trainer control (up/down resistance, left/right the mode, protocol 44) and
22
+ * `select`/`home` are the shell's own menu and guide: all six are handled by the shell and are never
23
+ * delivered to a game (see `ShellControl` in `tokens.ts`). The bumpers were here until protocol 44,
24
+ * when they became game input (`LB`/`RB`).
24
25
  *
25
26
  * `setPart` refuses them outright rather than trusting callers: today no `ButtonName` maps here, and
26
27
  * enforcing it in the driver keeps that true if someone later adds one by mistake.
27
28
  *
28
29
  * ⚠️ This set is about BINDING, not about how a part is drawn — see {@link FAINT_PARTS}. The two used
29
- * to be the same set, which is what drew the shoulders at 40% on every pad in the kit.
30
+ * to be the same set, which is what drew the resistance control at 40% on every pad in the kit.
30
31
  */
31
32
  export declare const SHELL_OWNED_PARTS: ReadonlySet<PadPart>;
32
33
  /**
33
34
  * Parts drawn FAINT — the ones a rider should read as "not this screen's business".
34
35
  *
35
36
  * Deliberately NOT the whole of {@link SHELL_OWNED_PARTS}. Faintness answers "is this control part of
36
- * what you're looking at", and for the **shoulders** the answer is always yes: they are the rider's
37
- * resistance − / +, the one control on the pad that works identically in the chrome and inside every
38
- * game, on every screen, all the time. Drawing them at 40% said "not yours to use" when the truth is
39
- * the opposite — the rider can always reach for them — and it read as *disabled*, which is why every
40
- * caller that put them on screen ended up overriding the opacity by hand.
37
+ * what you're looking at", and for the **d-pad** the answer is always yes: it is the rider's
38
+ * resistance and trainer mode, the one control on the pad that works identically in the chrome and
39
+ * inside every game, on every screen, all the time. Drawing it at 40% said "not yours to use" when the
40
+ * truth is the opposite (the rider can always reach for it) and it read as *disabled*, which is why
41
+ * every caller that put the resistance control on screen ended up overriding the opacity by hand.
41
42
  *
42
43
  * `select`/`home` stay faint because for them the original argument holds: the shell's menu and guide
43
44
  * are genuinely someone else's business, and drawing them bright beside the buttons a game *does* bind
@@ -127,7 +128,7 @@ export interface PadDriver {
127
128
  }
128
129
  export interface PadDriverOptions {
129
130
  /**
130
- * Let the driver light the shell-owned parts (the resistance bumpers, View, Guide).
131
+ * Let the driver light the shell-owned parts (the trainer d-pad, View, Guide).
131
132
  *
132
133
  * Off by default, deliberately: a game can never receive those controls, so lighting them would be
133
134
  * telling the rider something untrue. The one legitimate caller is a **lesson that teaches the rider
@@ -1 +1 @@
1
- {"version":3,"file":"pad-svg.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/pad-svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,OAAO,EAAkD,MAAM,YAAY,CAAC;AAItH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,OAAO,CAAoD,CAAC;AAExG;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,OAAO,CAAwC,CAAC;AAItF,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,oGAAoG;IACpG,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjC,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAChD,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;CACpD;AA8BD;;;GAGG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAoErC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAsFtF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,yEAAyE;IACzE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACvD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IACrG,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,iFAAiF;IACjF,YAAY,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACrD,wFAAwF;IACxF,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,gBAAqB,GAAG,SAAS,CAyFtG"}
1
+ {"version":3,"file":"pad-svg.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/pad-svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,OAAO,EAAkD,MAAM,YAAY,CAAC;AAItH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,OAAO,CAOjD,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,OAAO,CAAwC,CAAC;AAItF,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,oGAAoG;IACpG,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjC,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAChD,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;CACpD;AA8BD;;;GAGG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAoErC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAsFtF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,yEAAyE;IACzE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACvD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IACrG,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,iFAAiF;IACjF,YAAY,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACrD,wFAAwF;IACxF,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,gBAAqB,GAAG,SAAS,CAyFtG"}
@@ -19,26 +19,34 @@ const NS = "http://www.w3.org/2000/svg";
19
19
  /**
20
20
  * Parts a game can never bind, so the drawing must never light them.
21
21
  *
22
- * The bumpers are the rider's resistance − / + and `select`/`home` are the shell's own menu and guide —
23
- * all four are handled by the shell and are never delivered to a game (see `protocol/buttons.ts` on
24
- * the shell-owned keys).
22
+ * The d-pad is the rider's trainer control (up/down resistance, left/right the mode, protocol 44) and
23
+ * `select`/`home` are the shell's own menu and guide: all six are handled by the shell and are never
24
+ * delivered to a game (see `ShellControl` in `tokens.ts`). The bumpers were here until protocol 44,
25
+ * when they became game input (`LB`/`RB`).
25
26
  *
26
27
  * `setPart` refuses them outright rather than trusting callers: today no `ButtonName` maps here, and
27
28
  * enforcing it in the driver keeps that true if someone later adds one by mistake.
28
29
  *
29
30
  * ⚠️ This set is about BINDING, not about how a part is drawn — see {@link FAINT_PARTS}. The two used
30
- * to be the same set, which is what drew the shoulders at 40% on every pad in the kit.
31
+ * to be the same set, which is what drew the resistance control at 40% on every pad in the kit.
31
32
  */
32
- export const SHELL_OWNED_PARTS = new Set(["lb", "rb", "select", "home"]);
33
+ export const SHELL_OWNED_PARTS = new Set([
34
+ "dpadUp",
35
+ "dpadDown",
36
+ "dpadLeft",
37
+ "dpadRight",
38
+ "select",
39
+ "home",
40
+ ]);
33
41
  /**
34
42
  * Parts drawn FAINT — the ones a rider should read as "not this screen's business".
35
43
  *
36
44
  * Deliberately NOT the whole of {@link SHELL_OWNED_PARTS}. Faintness answers "is this control part of
37
- * what you're looking at", and for the **shoulders** the answer is always yes: they are the rider's
38
- * resistance − / +, the one control on the pad that works identically in the chrome and inside every
39
- * game, on every screen, all the time. Drawing them at 40% said "not yours to use" when the truth is
40
- * the opposite — the rider can always reach for them — and it read as *disabled*, which is why every
41
- * caller that put them on screen ended up overriding the opacity by hand.
45
+ * what you're looking at", and for the **d-pad** the answer is always yes: it is the rider's
46
+ * resistance and trainer mode, the one control on the pad that works identically in the chrome and
47
+ * inside every game, on every screen, all the time. Drawing it at 40% said "not yours to use" when the
48
+ * truth is the opposite (the rider can always reach for it) and it read as *disabled*, which is why
49
+ * every caller that put the resistance control on screen ended up overriding the opacity by hand.
42
50
  *
43
51
  * `select`/`home` stay faint because for them the original argument holds: the shell's menu and guide
44
52
  * are genuinely someone else's business, and drawing them bright beside the buttons a game *does* bind
@@ -107,7 +115,7 @@ export const STICK_PRESS_SCALE = 0.9;
107
115
  function buildPart(name, spec, showGlyph, smallGlyph = false) {
108
116
  // Two independent classes: `shell-owned` is the semantic marker (a game can't bind this), `faint` is
109
117
  // the visual one. Keeping `shell-owned` stamped on all four preserves the hook consumers already
110
- // target, while only `faint` carries an opacity — see FAINT_PARTS for why the shoulders lost theirs.
118
+ // target, while only `faint` carries an opacity — see FAINT_PARTS for why the d-pad has none.
111
119
  const classes = "rydr-pad-part" +
112
120
  (SHELL_OWNED_PARTS.has(name) ? " shell-owned" : "") +
113
121
  (FAINT_PARTS.has(name) ? " faint" : "");
@@ -1 +1 @@
1
- {"version":3,"file":"pad-svg.js","sourceRoot":"","sources":["../../../src/ui/controller/pad-svg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pad-svg.js","sourceRoot":"","sources":["../../../src/ui/controller/pad-svg.ts"],"names":[],"mappings":"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"}
@@ -32,15 +32,15 @@ import { type PadLayout, type PadPart, type PartGeom } from "./types.js";
32
32
  export declare const LIT_PART_OF_BUTTON: Readonly<Partial<Record<ButtonName, PadPart>>>;
33
33
  /**
34
34
  * The shell-owned controls, which have no {@link ButtonName} but do have a place on the drawing: the
35
- * upper shoulders ARE the rider's resistance − / +, and `select` IS the platform menu — the way out of
36
- * a running game.
35
+ * d-pad IS the rider's trainer control (up/down resistance, left/right the mode, protocol 44), and
36
+ * `select` IS the platform menu — the way out of a running game.
37
37
  *
38
38
  * Kept separate from {@link LIT_PART_OF_BUTTON} so that nothing which walks the game vocabulary can
39
39
  * accidentally light them — a game never receives these. Only an explicit opt-in lets them light, which
40
40
  * is exactly what a lesson teaching the rider where they are needs.
41
41
  *
42
42
  * The two are drawn differently until lit, and correctly so (see `FAINT_PARTS` in `pad-svg.ts`): the
43
- * shoulders are at FULL opacity always, because the rider can reach for their gear on every screen in
43
+ * d-pad is at FULL opacity always, because the rider can reach for their resistance on every screen in
44
44
  * the product; `select` is FAINT, because on all but this one lesson the platform menu really isn't the
45
45
  * screen's business. Lighting it un-faints it — `.faint.on` is opacity 1 — so a lesson that teaches it
46
46
  * reads at full strength without anything having to special-case the drawing.
@@ -58,20 +58,21 @@ export declare function litPartOfButton(name: ButtonName): PadPart | undefined;
58
58
  export declare function triggerSideOfPart(part: PadPart): "l" | "r" | undefined;
59
59
  /** The part to light for any control — game button or shell-owned. */
60
60
  export declare function litPartOfControl(name: ControlName): PadPart | undefined;
61
- /** The four canonical directions the LEFT stick shares with the d-pad, and their axis signs. */
61
+ /** The four canonical directions the LEFT stick produces, and their axis signs. */
62
62
  export declare const DPAD_DIRECTIONS: Readonly<Record<"UP" | "DOWN" | "LEFT" | "RIGHT", readonly [number, number]>>;
63
63
  /**
64
64
  * Which part a callout LINE should point at.
65
65
  *
66
- * Differs from {@link litPartOfButton} in exactly one way: a right-stick direction (or a bare stick
67
- * token) resolves to that stick, because "this action uses the right stick" is precisely what the line
68
- * should be saying — even though a *direction* shouldn't light the stick's click.
66
+ * Differs from {@link litPartOfButton} in two ways. A direction (or a bare stick token) resolves to its
67
+ * stick, because "this action uses the stick" is precisely what the line should be saying, even though a
68
+ * *direction* shouldn't light the stick's click. And a grouped shoulder (`LEFTANY`/`RIGHTANY`) points at
69
+ * its trigger, the larger of the two parts it stands for.
69
70
  */
70
71
  export declare function anchorPartOfToken(token: ComboToken): PadPart | undefined;
71
72
  /**
72
73
  * The movement controls that many actions share, so a callout line to one of them says nothing useful.
73
74
  *
74
- * Both sticks (whole or directional), both stick clicks, the d-pad, and the right-stick directions. In a
75
+ * Both sticks (whole or directional), both stick clicks, and the four directions of each stick. In a
75
76
  * game where the left stick steers, half the actions mention it; anchoring all their lines there makes a
76
77
  * hairball around one part, while the distinctive button in each combination is what actually identifies
77
78
  * the action.
@@ -1 +1 @@
1
- {"version":3,"file":"parts-map.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/parts-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parts-map.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/parts-map.ts"],"names":[],"mappings":"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"}
@@ -29,38 +29,44 @@ import { partCentre } from "./types.js";
29
29
  * "☰ Menu" is this one, the GAME's, and the platform's own menu is the one printed "View".
30
30
  */
31
31
  export const LIT_PART_OF_BUTTON = {
32
- UP: "dpadUp",
33
- DOWN: "dpadDown",
34
- LEFT: "dpadLeft",
35
- RIGHT: "dpadRight",
32
+ // No UP/DOWN/LEFT/RIGHT (protocol 44): a game receives those from the LEFT STICK (or the arrow keys),
33
+ // never from the physical d-pad, which is the shell's trainer control. Lighting the d-pad for them
34
+ // would teach the rider to press the one thing that does not steer. The stick's cap moves instead,
35
+ // driven by the `LX`/`LY` axes, exactly like the right-stick directions above.
36
36
  DIAMOND_UP: "faceTop",
37
37
  DIAMOND_RIGHT: "faceRight",
38
38
  DIAMOND_DOWN: "faceBottom",
39
39
  DIAMOND_LEFT: "faceLeft",
40
40
  LT: "lt",
41
41
  RT: "rt",
42
+ LB: "lb",
43
+ RB: "rb",
44
+ // LEFTANY / RIGHTANY light nothing of their own: they are derived from LB|LT and RB|RT, whose own
45
+ // edges already light the shoulder the rider actually pulled.
42
46
  LSTICK_PRESS: "lstickPress",
43
47
  RSTICK_PRESS: "rstickPress",
44
48
  OPTIONS: "start",
45
49
  };
46
50
  /**
47
51
  * The shell-owned controls, which have no {@link ButtonName} but do have a place on the drawing: the
48
- * upper shoulders ARE the rider's resistance − / +, and `select` IS the platform menu — the way out of
49
- * a running game.
52
+ * d-pad IS the rider's trainer control (up/down resistance, left/right the mode, protocol 44), and
53
+ * `select` IS the platform menu — the way out of a running game.
50
54
  *
51
55
  * Kept separate from {@link LIT_PART_OF_BUTTON} so that nothing which walks the game vocabulary can
52
56
  * accidentally light them — a game never receives these. Only an explicit opt-in lets them light, which
53
57
  * is exactly what a lesson teaching the rider where they are needs.
54
58
  *
55
59
  * The two are drawn differently until lit, and correctly so (see `FAINT_PARTS` in `pad-svg.ts`): the
56
- * shoulders are at FULL opacity always, because the rider can reach for their gear on every screen in
60
+ * d-pad is at FULL opacity always, because the rider can reach for their resistance on every screen in
57
61
  * the product; `select` is FAINT, because on all but this one lesson the platform menu really isn't the
58
62
  * screen's business. Lighting it un-faints it — `.faint.on` is opacity 1 — so a lesson that teaches it
59
63
  * reads at full strength without anything having to special-case the drawing.
60
64
  */
61
65
  export const PART_OF_SHELL_CONTROL = {
62
- LB: "lb",
63
- RB: "rb",
66
+ DPAD_UP: "dpadUp",
67
+ DPAD_DOWN: "dpadDown",
68
+ DPAD_LEFT: "dpadLeft",
69
+ DPAD_RIGHT: "dpadRight",
64
70
  MENU: "select",
65
71
  };
66
72
  export function litPartOfButton(name) {
@@ -81,7 +87,7 @@ export function triggerSideOfPart(part) {
81
87
  export function litPartOfControl(name) {
82
88
  return isShellControl(name) ? PART_OF_SHELL_CONTROL[name] : LIT_PART_OF_BUTTON[name];
83
89
  }
84
- /** The four canonical directions the LEFT stick shares with the d-pad, and their axis signs. */
90
+ /** The four canonical directions the LEFT stick produces, and their axis signs. */
85
91
  export const DPAD_DIRECTIONS = {
86
92
  UP: [0, 1],
87
93
  DOWN: [0, -1],
@@ -91,20 +97,30 @@ export const DPAD_DIRECTIONS = {
91
97
  /**
92
98
  * Which part a callout LINE should point at.
93
99
  *
94
- * Differs from {@link litPartOfButton} in exactly one way: a right-stick direction (or a bare stick
95
- * token) resolves to that stick, because "this action uses the right stick" is precisely what the line
96
- * should be saying — even though a *direction* shouldn't light the stick's click.
100
+ * Differs from {@link litPartOfButton} in two ways. A direction (or a bare stick token) resolves to its
101
+ * stick, because "this action uses the stick" is precisely what the line should be saying, even though a
102
+ * *direction* shouldn't light the stick's click. And a grouped shoulder (`LEFTANY`/`RIGHTANY`) points at
103
+ * its trigger, the larger of the two parts it stands for.
97
104
  */
98
105
  export function anchorPartOfToken(token) {
99
106
  const t = parseToken(token);
100
107
  if (t.kind === "stick")
101
108
  return t.stick === "LSTICK" ? "lstickPress" : "rstickPress";
102
109
  switch (t.name) {
110
+ case "UP":
111
+ case "DOWN":
112
+ case "LEFT":
113
+ case "RIGHT":
114
+ return "lstickPress";
103
115
  case "RUP":
104
116
  case "RDOWN":
105
117
  case "RLEFT":
106
118
  case "RRIGHT":
107
119
  return "rstickPress";
120
+ case "LEFTANY":
121
+ return "lt";
122
+ case "RIGHTANY":
123
+ return "rt";
108
124
  default:
109
125
  return litPartOfControl(t.name);
110
126
  }
@@ -112,7 +128,7 @@ export function anchorPartOfToken(token) {
112
128
  /**
113
129
  * The movement controls that many actions share, so a callout line to one of them says nothing useful.
114
130
  *
115
- * Both sticks (whole or directional), both stick clicks, the d-pad, and the right-stick directions. In a
131
+ * Both sticks (whole or directional), both stick clicks, and the four directions of each stick. In a
116
132
  * game where the left stick steers, half the actions mention it; anchoring all their lines there makes a
117
133
  * hairball around one part, while the distinctive button in each combination is what actually identifies
118
134
  * the action.
@@ -1 +1 @@
1
- {"version":3,"file":"parts-map.js","sourceRoot":"","sources":["../../../src/ui/controller/parts-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parts-map.js","sourceRoot":"","sources":["../../../src/ui/controller/parts-map.ts"],"names":[],"mappings":"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"}
@@ -176,7 +176,7 @@ const CSS = `
176
176
  .rydr-pad-part.on .rydr-pad-glyph-vec { stroke: #06121a; }
177
177
 
178
178
  /* Faint: View and Guide only — the shell's own menu and guide, genuinely not this screen's business.
179
- The resistance bumpers are shell-owned too but are NOT faint: the rider can always reach for them,
179
+ The trainer d-pad is shell-owned too but is NOT faint: the rider can always reach for it,
180
180
  on every screen, so dimming them read as "disabled". See FAINT_PARTS in pad-svg.ts. */
181
181
  .rydr-pad-part.faint { opacity: 0.4; }
182
182
  /* Two exceptions, both cases where the control IS the subject rather than someone else's business:
@@ -18,9 +18,13 @@ export type StickDir = "up" | "down" | "left" | "right";
18
18
  * A control the SHELL owns, which is therefore not a {@link ButtonName} and never arrives on a game's
19
19
  * `onButton`.
20
20
  *
21
- * `LB`/`RB` are the UPPER shoulders. Named by position, not by function, for the same reason every other
22
- * control here is: the position is the fixed fact, while what it *does* belongs on the label. On this
23
- * platform they drive the rider's trainer resistance − / +.
21
+ * `DPAD_UP`/`DPAD_DOWN`/`DPAD_LEFT`/`DPAD_RIGHT` are the four arms of a gamepad's PHYSICAL d-pad, which
22
+ * on this platform is the rider's trainer control and nothing else (protocol 44): up/down move the
23
+ * resistance + / −, left/right step the trainer mode back / forward. Named by position, not by function,
24
+ * for the same reason every other control here is: the position is the fixed fact, while what it *does*
25
+ * belongs on the label. They are NOT `UP`/`DOWN`/`LEFT`/`RIGHT`, which a game does receive (from the left
26
+ * stick, the arrow keys and the phone). Before protocol 44 the shell owned the upper shoulders instead,
27
+ * named `LB`/`RB` here; those are ordinary {@link ButtonName}s now.
24
28
  *
25
29
  * `MENU` is the LEFT of the two small system buttons (`b8`), which summons the platform's own overlay —
26
30
  * the rider's way back out of a running game. It is emphatically **not** `OPTIONS`: that one is a real
@@ -31,18 +35,18 @@ export type StickDir = "up" | "down" | "left" | "right";
31
35
  * on a drawing of the rider's actual pad is the only honest way to teach it.
32
36
  *
33
37
  * They exist here for one reason: **teaching a rider where they are.** A rider who doesn't know the
34
- * upper shoulders change resistance can't use them, and a rider who can't find `MENU` cannot leave the
38
+ * d-pad changes resistance can't use it, and a rider who can't find `MENU` cannot leave the
35
39
  * game they are in — so the shell needs to draw them and build a guided lesson around them, which
36
40
  * means naming them in the same vocabulary as everything else.
37
41
  *
38
- * ⚠️ **A game cannot observe these.** `protocol/buttons.ts` lists the shell-owned keys (`W`/`X` for
39
- * resistance among them) and the SDK client forwards them as intents rather than button edges, so
40
- * `session.onButton` will never fire for `LB`/`RB`. `MENU` is consumed by the shell even earlier — it
42
+ * ⚠️ **A game cannot observe these.** The shell consumes the physical d-pad before anything is
43
+ * forwarded, so `session.onButton` will never fire for the `DPAD_*` names (the keyboard's `W`/`X`
44
+ * resistance keys likewise reach the shell as intents). `MENU` is consumed by the shell even earlier — it
41
45
  * is what opens the overlay, so it is never forwarded at all. A control-legend built by a game may
42
46
  * *mention* them, and `mountControllerMap` will happily point a callout at them; only the interactive
43
47
  * `mountControlTrainer` needs a source that actually sees them, and today that source is the shell.
44
48
  */
45
- export type ShellControl = "LB" | "RB" | "MENU";
49
+ export type ShellControl = "DPAD_UP" | "DPAD_DOWN" | "DPAD_LEFT" | "DPAD_RIGHT" | "MENU";
46
50
  /** Anything nameable in a combination: a game button or a shell-owned control. */
47
51
  export type ControlName = ButtonName | ShellControl;
48
52
  /** Is this a control the shell owns (and a game therefore can't receive)? */
@@ -55,7 +59,8 @@ export declare function isShellControl(name: string): name is ShellControl;
55
59
  * - a stick pushed one way — `"LSTICK:left"`
56
60
  *
57
61
  * `"LEFT"` and `"LSTICK:left"` are both legitimate and mean different things: `"LEFT"` is the canonical
58
- * direction (a d-pad press, or the left stick past its deadzone — the platform emits it for both),
62
+ * direction (the left stick past its deadzone, an arrow key or the phone's d-pad; never a gamepad's
63
+ * physical d-pad, which is the shell's `DPAD_*`),
59
64
  * while `"LSTICK:left"` says specifically "push the stick left", which is what you want when the action
60
65
  * needs analog travel or when you're pairing it with another button.
61
66
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEvE,2FAA2F;AAC3F,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAEhD,kFAAkF;AAClF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;AAIpD,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEjE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;AAE9E,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,4BAA4B;AAC5B,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC;AAIxD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CASzD;AAED,4GAA4G;AAC5G,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKlF,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEvD"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEvE,2FAA2F;AAC3F,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;AAEzF,kFAAkF;AAClF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;AAIpD,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEjE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;AAE9E,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,4BAA4B;AAC5B,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC;AAIxD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CASzD;AAED,4GAA4G;AAC5G,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKlF,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEvD"}
@@ -11,7 +11,7 @@
11
11
  * way". So a game never maintains a second, parallel naming scheme for its help screen: whatever it
12
12
  * passed to `session.isDown(...)` is what it passes here.
13
13
  */
14
- const SHELL_CONTROLS = ["LB", "RB", "MENU"];
14
+ const SHELL_CONTROLS = ["DPAD_UP", "DPAD_DOWN", "DPAD_LEFT", "DPAD_RIGHT", "MENU"];
15
15
  /** Is this a control the shell owns (and a game therefore can't receive)? */
16
16
  export function isShellControl(name) {
17
17
  return SHELL_CONTROLS.includes(name);
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/ui/controller/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAwCH,MAAM,cAAc,GAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAE/D,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAsDD,MAAM,MAAM,GAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAkB,EAAE,GAAG,EAAE,GAAe,EAAE,CAAC;IACxG,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAkB,EAAE,CAAC;IAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAoB,EAAE,CAAC;AACxD,CAAC;AAED,4GAA4G;AAC5G,MAAM,CAAC,MAAM,gBAAgB,GAA0D;IACrF,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACb,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACd,CAAC;AAEF,2EAA2E;AAC3E,MAAM,UAAU,SAAS,CAAC,MAAqB;IAC7C,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/ui/controller/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4CH,MAAM,cAAc,GAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAEtG,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAuDD,MAAM,MAAM,GAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAkB,EAAE,GAAG,EAAE,GAAe,EAAE,CAAC;IACxG,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAkB,EAAE,CAAC;IAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAoB,EAAE,CAAC;AACxD,CAAC;AAED,4GAA4G;AAC5G,MAAM,CAAC,MAAM,gBAAgB,GAA0D;IACrF,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACb,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACd,CAAC;AAEF,2EAA2E;AAC3E,MAAM,UAAU,SAAS,CAAC,MAAqB;IAC7C,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AACnC,CAAC"}
@@ -40,7 +40,7 @@ export type DiamondVariant = KeycapVariant;
40
40
  *
41
41
  * The event name is {@link ControlName}, not `ButtonName`: a `PlatformSession` only ever emits the
42
42
  * `ButtonName` subset and still satisfies this, while a SHELL-side source that also sees the shell-owned
43
- * shoulders (`LB`/`RB`, the rider's resistance) can feed the same object to a keycap, a pad and a lesson
43
+ * d-pad (`DPAD_*`, the rider's trainer control) can feed the same object to a keycap, a pad and a lesson
44
44
  * instead of needing one shape per consumer. A keycap simply never matches those names.
45
45
  */
46
46
  export interface ButtonSource {
@@ -21,6 +21,12 @@
21
21
  * ],
22
22
  * });
23
23
  *
24
+ * **On RYDR there is one menu (PLAT-1795).** A shell that says so in its handshake draws these rows
25
+ * INSIDE its own platform menu, under Resume, and this function then draws nothing: the rows travel as
26
+ * data, OPTIONS opens the platform menu on them, and the platform menu opening and closing runs your
27
+ * `canOpen` / `onOpen` / `onClose`. Your code does not change, and an older shell gets the overlay
28
+ * below exactly as before. `shortcut`, `hint`, `font` and `captureInput` only apply to the overlay.
29
+ *
24
30
  * Rows are ONE LINE: a label, and for a stepper its value. `hint` exists for the rare consequence a
25
31
  * rider cannot infer, and is not recommended — see {@link OptionMenuItem.hint}.
26
32
  *
@@ -44,11 +50,11 @@
44
50
  * **It also does NOT touch the trainer.** Opening this menu leaves the activity state exactly as the
45
51
  * game left it — a rider who opens it mid-run keeps the resistance they were riding. That is
46
52
  * deliberate: this menu is a transient overlay over LIVE gameplay, not a screen the rider navigated
47
- * to, and they are still on the bike with their legs turning. Dropping to the eased menu resistance
48
- * and snapping back on `Resume` would change the intensity of the very run they are deciding
49
- * whether to restart. (Contrast the PLATFORM overlay, which is the shell's own and does ease.)
50
- * A game that genuinely wants easing here can still do it itself in `onOpen`/`onClose` —
51
- * `session.setActivity("menu")` / `("playing")` — which is more flexible than an option anyway.
53
+ * to, and they are still on the bike with their legs turning. Swapping the game's demand for the
54
+ * rider's base ERG target and back on `Resume` would change the intensity of the very run they are
55
+ * deciding whether to restart. (No menu eases resistance any more — the shell removed menu easing,
56
+ * PLAT-1623.) A game that wants the menu's time counted as in-menu, and its demand dropped, can
57
+ * still declare it in `onOpen`/`onClose` — `session.setActivity("menu")` / `("playing")`.
52
58
  *
53
59
  * A row may advertise a `shortcut` — the button the rider can press *in-game* to do the same thing
54
60
  * (`Restart · Shortcut [Y]`). Binding that shortcut during play stays the game's own job; the menu
@@ -57,6 +63,7 @@
57
63
  import type { ButtonEdge, ButtonName, GlyphSet } from "../protocol/index.js";
58
64
  import { type NavCue } from "../nav/spatial-nav.js";
59
65
  import { type ControlName } from "./controller/tokens.js";
66
+ import type { PlatformMenuBridge } from "../client/PlatformClient.js";
60
67
  /**
61
68
  * The slice of a `PlatformSession` the menu uses — input, and nothing else. A real session satisfies
62
69
  * it structurally, and `grabInput` is optional so a stand-in (a showcase double, a test) works too:
@@ -74,6 +81,12 @@ export interface OptionMenuSession {
74
81
  name: ControlName;
75
82
  edge: ButtonEdge;
76
83
  }) => void): () => void;
84
+ /**
85
+ * The platform menu's wire (PLAT-1795). A real `PlatformSession` has it; when its `supported` is
86
+ * true the menu draws nothing itself and its rows appear inside the platform menu instead. Optional,
87
+ * so a stand-in without it gets the menu's own overlay, as before.
88
+ */
89
+ platformMenu?: PlatformMenuBridge;
77
90
  }
78
91
  /** One row of the menu. */
79
92
  export interface OptionMenuItem {
@@ -136,7 +149,7 @@ export interface OptionMenuItem {
136
149
  canStepUp?: boolean;
137
150
  }
138
151
  export interface OptionMenuOptions {
139
- /** The platform session — for input, the trainer-easing hint, and the rider's controller lettering. */
152
+ /** The platform session — for input and the rider's controller lettering. */
140
153
  session?: OptionMenuSession;
141
154
  /** The game's name, printed big at the top in the game's own font. */
142
155
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"option-menu.d.ts","sourceRoot":"","sources":["../../src/ui/option-menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAoB,KAAK,MAAM,EAAmB,MAAM,uBAAuB,CAAC;AAWvF,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAGhC,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,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACvF;AAcD,2BAA2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,kGAAkG;IAClG,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;kGAC8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACjC,0GAA0G;IAC1G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,uGAAuG;IACvG,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,kGAAkG;IAClG,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IACxB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;6EACyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B;mDAC+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,uFAAuF;IACvF,IAAI,IAAI,OAAO,CAAC;IAChB,4CAA4C;IAC5C,KAAK,IAAI,IAAI,CAAC;IACd,uEAAuE;IACvE,MAAM,IAAI,OAAO,CAAC;IAClB,MAAM,IAAI,OAAO,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IACxC,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IACxC,OAAO,IAAI,IAAI,CAAC;CACjB;AA6CD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,UAAU,CA0btF"}
1
+ {"version":3,"file":"option-menu.d.ts","sourceRoot":"","sources":["../../src/ui/option-menu.ts"],"names":[],"mappings":"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"}