@datamoc/mw_games 0.20.0 → 0.22.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 (115) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/audio/Channels.d.ts +19 -0
  3. package/dist/audio/Channels.d.ts.map +1 -1
  4. package/dist/audio/Channels.js +33 -4
  5. package/dist/audio/Channels.js.map +1 -1
  6. package/dist/audio/LoopTags.d.ts +37 -0
  7. package/dist/audio/LoopTags.d.ts.map +1 -0
  8. package/dist/audio/LoopTags.js +116 -0
  9. package/dist/audio/LoopTags.js.map +1 -0
  10. package/dist/audio/Midi.d.ts +5 -0
  11. package/dist/audio/Midi.d.ts.map +1 -1
  12. package/dist/audio/Midi.js +9 -1
  13. package/dist/audio/Midi.js.map +1 -1
  14. package/dist/audio/MidiRender.d.ts +3 -2
  15. package/dist/audio/MidiRender.d.ts.map +1 -1
  16. package/dist/audio/MidiRender.js +2 -2
  17. package/dist/audio/MidiRender.js.map +1 -1
  18. package/dist/audio/index.d.ts +3 -1
  19. package/dist/audio/index.d.ts.map +1 -1
  20. package/dist/audio/index.js +1 -0
  21. package/dist/audio/index.js.map +1 -1
  22. package/dist/board/bitboard.d.ts +132 -0
  23. package/dist/board/bitboard.d.ts.map +1 -0
  24. package/dist/board/bitboard.js +495 -0
  25. package/dist/board/bitboard.js.map +1 -0
  26. package/dist/board/chess.d.ts +16 -0
  27. package/dist/board/chess.d.ts.map +1 -1
  28. package/dist/board/chess.js +43 -0
  29. package/dist/board/chess.js.map +1 -1
  30. package/dist/board/index.d.ts +9 -1
  31. package/dist/board/index.d.ts.map +1 -1
  32. package/dist/board/index.js +5 -1
  33. package/dist/board/index.js.map +1 -1
  34. package/dist/board/openings.d.ts +58 -0
  35. package/dist/board/openings.d.ts.map +1 -0
  36. package/dist/board/openings.js +45 -0
  37. package/dist/board/openings.js.map +1 -0
  38. package/dist/board/tablebase.d.ts +118 -0
  39. package/dist/board/tablebase.d.ts.map +1 -0
  40. package/dist/board/tablebase.js +414 -0
  41. package/dist/board/tablebase.js.map +1 -0
  42. package/dist/board/tourney.d.ts +90 -0
  43. package/dist/board/tourney.d.ts.map +1 -0
  44. package/dist/board/tourney.js +1013 -0
  45. package/dist/board/tourney.js.map +1 -0
  46. package/dist/core/JavaRandom.d.ts +55 -0
  47. package/dist/core/JavaRandom.d.ts.map +1 -0
  48. package/dist/core/JavaRandom.js +81 -0
  49. package/dist/core/JavaRandom.js.map +1 -0
  50. package/dist/core/index.d.ts +2 -0
  51. package/dist/core/index.d.ts.map +1 -1
  52. package/dist/core/index.js +1 -0
  53. package/dist/core/index.js.map +1 -1
  54. package/dist/mw_games.global.js +123 -116
  55. package/dist/rpg/EventRunner.d.ts +7 -0
  56. package/dist/rpg/EventRunner.d.ts.map +1 -1
  57. package/dist/rpg/EventRunner.js +6 -0
  58. package/dist/rpg/EventRunner.js.map +1 -1
  59. package/dist/two-d/render/FogLayer.d.ts +68 -0
  60. package/dist/two-d/render/FogLayer.d.ts.map +1 -0
  61. package/dist/two-d/render/FogLayer.js +83 -0
  62. package/dist/two-d/render/FogLayer.js.map +1 -0
  63. package/dist/two-d/render/LiquidLayer.d.ts +62 -0
  64. package/dist/two-d/render/LiquidLayer.d.ts.map +1 -0
  65. package/dist/two-d/render/LiquidLayer.js +102 -0
  66. package/dist/two-d/render/LiquidLayer.js.map +1 -0
  67. package/dist/two-d/render/RpgmAutotile.d.ts +5 -0
  68. package/dist/two-d/render/RpgmAutotile.d.ts.map +1 -1
  69. package/dist/two-d/render/RpgmAutotile.js +4 -3
  70. package/dist/two-d/render/RpgmAutotile.js.map +1 -1
  71. package/dist/two-d/render/TileMap.d.ts +14 -2
  72. package/dist/two-d/render/TileMap.d.ts.map +1 -1
  73. package/dist/two-d/render/TileMap.js +32 -2
  74. package/dist/two-d/render/TileMap.js.map +1 -1
  75. package/dist/two-d/render/index.d.ts +4 -0
  76. package/dist/two-d/render/index.d.ts.map +1 -1
  77. package/dist/two-d/render/index.js +2 -0
  78. package/dist/two-d/render/index.js.map +1 -1
  79. package/dist/two-d/ui/Label.d.ts.map +1 -1
  80. package/dist/two-d/ui/Label.js +11 -2
  81. package/dist/two-d/ui/Label.js.map +1 -1
  82. package/dist/two-d/ui/ListView.d.ts +24 -0
  83. package/dist/two-d/ui/ListView.d.ts.map +1 -1
  84. package/dist/two-d/ui/ListView.js +97 -4
  85. package/dist/two-d/ui/ListView.js.map +1 -1
  86. package/dist/two-d/ui/MessageLog.d.ts +62 -0
  87. package/dist/two-d/ui/MessageLog.d.ts.map +1 -0
  88. package/dist/two-d/ui/MessageLog.js +114 -0
  89. package/dist/two-d/ui/MessageLog.js.map +1 -0
  90. package/dist/two-d/ui/RadioGroup.d.ts +68 -0
  91. package/dist/two-d/ui/RadioGroup.d.ts.map +1 -0
  92. package/dist/two-d/ui/RadioGroup.js +177 -0
  93. package/dist/two-d/ui/RadioGroup.js.map +1 -0
  94. package/dist/two-d/ui/TextModel.d.ts +26 -1
  95. package/dist/two-d/ui/TextModel.d.ts.map +1 -1
  96. package/dist/two-d/ui/TextModel.js +56 -7
  97. package/dist/two-d/ui/TextModel.js.map +1 -1
  98. package/dist/two-d/ui/TextSharpness.d.ts +33 -0
  99. package/dist/two-d/ui/TextSharpness.d.ts.map +1 -0
  100. package/dist/two-d/ui/TextSharpness.js +56 -0
  101. package/dist/two-d/ui/TextSharpness.js.map +1 -0
  102. package/dist/two-d/ui/index.d.ts +5 -0
  103. package/dist/two-d/ui/index.d.ts.map +1 -1
  104. package/dist/two-d/ui/index.js +3 -0
  105. package/dist/two-d/ui/index.js.map +1 -1
  106. package/dist/version.d.ts +1 -1
  107. package/dist/version.js +1 -1
  108. package/package.json +14 -2
  109. package/sbom.cdx.json +6 -6
  110. package/tools/build-tablebases.d.mts +22 -0
  111. package/tools/build-tablebases.mjs +549 -0
  112. package/tools/compile-openings.d.mts +20 -0
  113. package/tools/compile-openings.mjs +130 -0
  114. package/tools/play-uci.d.mts +26 -0
  115. package/tools/play-uci.mjs +194 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../../src/two-d/ui/ListView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../../src/two-d/ui/ListView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { Container } from 'pixi.js';
2
+ /** how a message reads at a glance: routine, good news, bad news, a caution, or an emphasis */
3
+ export type MessageLevel = 'info' | 'positive' | 'negative' | 'warning' | 'highlight';
4
+ /**
5
+ * How many of the oldest entries to drop so the rest fit in `maxLines`. The budget is in
6
+ * wrapped lines, not entries, so one long message costs the room of the several short ones
7
+ * it is worth. The newest entry always stays, even when it alone is over budget.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { linesToDrop } from '@datamoc/mw_games/two-d/ui';
12
+ *
13
+ * console.log(linesToDrop([1, 2, 2], 3)); // 2 - the two oldest go, leaving one 2-line entry
14
+ * ```
15
+ */
16
+ export declare function linesToDrop(lineCounts: readonly number[], maxLines: number): number;
17
+ export interface MessageLogOptions {
18
+ /** wrap width of each message, in pixels */
19
+ wrapWidth: number;
20
+ /** wrapped lines of history to keep; default 3 */
21
+ maxLines?: number;
22
+ /** text size; default the theme's */
23
+ size?: number;
24
+ /** overrides for the per-level colours */
25
+ colors?: Partial<Record<MessageLevel, number>>;
26
+ /** rasterisation resolution of every message, for a log drawn inside a zoomed container */
27
+ resolution?: number;
28
+ }
29
+ /**
30
+ * A player-facing message pane: each message is its own block, coloured by its level, and
31
+ * the oldest blocks fall away once the wrapped lines pass `maxLines`. The classic
32
+ * roguelike "you hit the rat" strip; a `Toast` is transient and a `Logger` is for
33
+ * developers, this is neither.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import { MessageLog } from '@datamoc/mw_games/two-d/ui';
38
+ *
39
+ * const log = new MessageLog({ wrapWidth: 200, maxLines: 4 });
40
+ * log.add('You find a dewdrop.', 'positive');
41
+ * log.add('You are starving.', 'negative');
42
+ * console.log(log.entryCount); // 2
43
+ * ```
44
+ */
45
+ export declare class MessageLog extends Container {
46
+ private readonly blocks;
47
+ private readonly options;
48
+ private maxLines;
49
+ constructor(options: MessageLogOptions);
50
+ get entryCount(): number;
51
+ /** the drawn height of every block together, so a caller can sit the log on an edge */
52
+ get contentHeight(): number;
53
+ add(text: string, level?: MessageLevel): void;
54
+ setMaxLines(lines: number): void;
55
+ setWrapWidth(width: number): void;
56
+ clear(): void;
57
+ private colorOf;
58
+ private linesOf;
59
+ private trim;
60
+ private layout;
61
+ }
62
+ //# sourceMappingURL=MessageLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageLog.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/MessageLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,+FAA+F;AAC/F,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAKtF;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMnF;AAED,MAAM,WAAW,iBAAiB;IACjC,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,UAAW,SAAQ,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,OAAO,EAAE,iBAAiB,EAIrC;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,uFAAuF;IACvF,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,YAAqB,GAAG,IAAI,CAYpD;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/B;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKhC;IAED,KAAK,IAAI,IAAI,CAEZ;IAED,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,MAAM;CAOd"}
@@ -0,0 +1,114 @@
1
+ import { Container } from 'pixi.js';
2
+ import { Label } from './Label.js';
3
+ import { theme } from './theme.js';
4
+ /** the default per-level text colours; `info` and `highlight` follow the active theme */
5
+ const LEVEL_COLORS = { positive: 0x55dd77, negative: 0xff5555, warning: 0xffb347 };
6
+ /**
7
+ * How many of the oldest entries to drop so the rest fit in `maxLines`. The budget is in
8
+ * wrapped lines, not entries, so one long message costs the room of the several short ones
9
+ * it is worth. The newest entry always stays, even when it alone is over budget.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { linesToDrop } from '@datamoc/mw_games/two-d/ui';
14
+ *
15
+ * console.log(linesToDrop([1, 2, 2], 3)); // 2 - the two oldest go, leaving one 2-line entry
16
+ * ```
17
+ */
18
+ export function linesToDrop(lineCounts, maxLines) {
19
+ let total = 0;
20
+ for (const lines of lineCounts)
21
+ total += lines;
22
+ let dropped = 0;
23
+ while (total > maxLines && dropped < lineCounts.length - 1)
24
+ total -= lineCounts[dropped++];
25
+ return dropped;
26
+ }
27
+ /**
28
+ * A player-facing message pane: each message is its own block, coloured by its level, and
29
+ * the oldest blocks fall away once the wrapped lines pass `maxLines`. The classic
30
+ * roguelike "you hit the rat" strip; a `Toast` is transient and a `Logger` is for
31
+ * developers, this is neither.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { MessageLog } from '@datamoc/mw_games/two-d/ui';
36
+ *
37
+ * const log = new MessageLog({ wrapWidth: 200, maxLines: 4 });
38
+ * log.add('You find a dewdrop.', 'positive');
39
+ * log.add('You are starving.', 'negative');
40
+ * console.log(log.entryCount); // 2
41
+ * ```
42
+ */
43
+ export class MessageLog extends Container {
44
+ constructor(options) {
45
+ super();
46
+ this.blocks = [];
47
+ this.options = options;
48
+ this.maxLines = options.maxLines ?? 3;
49
+ }
50
+ get entryCount() {
51
+ return this.blocks.length;
52
+ }
53
+ /** the drawn height of every block together, so a caller can sit the log on an edge */
54
+ get contentHeight() {
55
+ return this.blocks.reduce((height, block) => height + block.label.height, 0);
56
+ }
57
+ add(text, level = 'info') {
58
+ const label = new Label({
59
+ text,
60
+ size: this.options.size,
61
+ color: this.colorOf(level),
62
+ wrapWidth: this.options.wrapWidth,
63
+ resolution: this.options.resolution,
64
+ });
65
+ this.addChild(label);
66
+ this.blocks.push({ label, level });
67
+ this.trim();
68
+ this.layout();
69
+ }
70
+ setMaxLines(lines) {
71
+ this.maxLines = Math.max(1, Math.floor(lines));
72
+ this.trim();
73
+ this.layout();
74
+ }
75
+ setWrapWidth(width) {
76
+ this.options.wrapWidth = width;
77
+ for (const block of this.blocks)
78
+ block.label.style.wordWrapWidth = width;
79
+ this.trim();
80
+ this.layout();
81
+ }
82
+ clear() {
83
+ for (const block of this.blocks.splice(0))
84
+ block.label.destroy();
85
+ }
86
+ colorOf(level) {
87
+ const own = this.options.colors?.[level];
88
+ if (own !== undefined)
89
+ return own;
90
+ if (level === 'info')
91
+ return theme().color.text;
92
+ if (level === 'highlight')
93
+ return theme().color.textHighlight;
94
+ return LEVEL_COLORS[level];
95
+ }
96
+ linesOf(label) {
97
+ //Pixi measures the wrapped text; its height over the line height is the line count
98
+ const lineHeight = Number(label.style.lineHeight) || Number(label.style.fontSize) || 1;
99
+ return Math.max(1, Math.round(label.height / lineHeight));
100
+ }
101
+ trim() {
102
+ const drop = linesToDrop(this.blocks.map((block) => this.linesOf(block.label)), this.maxLines);
103
+ for (const block of this.blocks.splice(0, drop))
104
+ block.label.destroy();
105
+ }
106
+ layout() {
107
+ let y = 0;
108
+ for (const block of this.blocks) {
109
+ block.label.position.set(0, y);
110
+ y += block.label.height;
111
+ }
112
+ }
113
+ }
114
+ //# sourceMappingURL=MessageLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageLog.js","sourceRoot":"","sources":["../../../src/two-d/ui/MessageLog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { Container } from 'pixi.js';
2
+ import type { Action } from '../../core/Input.ts';
3
+ import { Signal } from '../../core/Signal.ts';
4
+ export interface RadioOption {
5
+ /** what the row reads */
6
+ text: string;
7
+ /** a greyed-out option can be looked at but not chosen */
8
+ disabled?: boolean;
9
+ /** anything the game wants to get back when the option is chosen */
10
+ value?: unknown;
11
+ }
12
+ export interface RadioGroupOptions {
13
+ options?: RadioOption[];
14
+ /** initially selected index; the first enabled option when omitted */
15
+ selected?: number;
16
+ /** the circle's diameter; the dot is drawn inside it */
17
+ size?: number;
18
+ /** vertical space between rows */
19
+ gap?: number;
20
+ }
21
+ /**
22
+ * One choice among several, where a checkbox would allow many: exactly one option
23
+ * is selected, arrows move the selection (which selects at once, the way native
24
+ * radio groups do), and a tap selects directly. Disabled options are skipped by
25
+ * the keyboard and ignore the pointer, the same contract `ListView` rows keep.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * import { RadioGroup } from '@datamoc/mw_games/two-d/ui';
30
+ *
31
+ * const side = new RadioGroup({ options: [{ text: 'White' }, { text: 'Black' }] });
32
+ * side.onChange.add((index) => console.log('side', index));
33
+ * side.select(1);
34
+ * ```
35
+ */
36
+ export declare class RadioGroup extends Container {
37
+ readonly onChange: Signal<number>;
38
+ private options_;
39
+ private rows;
40
+ private circles;
41
+ private size_;
42
+ private gap_;
43
+ private selected_;
44
+ private readonly themeListener;
45
+ constructor(options?: RadioGroupOptions);
46
+ get selected(): number;
47
+ get selectedOption(): RadioOption | null;
48
+ get length(): number;
49
+ get rowHeight(): number;
50
+ setOptions(options: RadioOption[], selected?: number): void;
51
+ /** picks an option, firing `onChange` only when the choice actually moves */
52
+ select(index: number): void;
53
+ /**
54
+ * Steps the selection by `delta` rows, skipping disabled options and wrapping
55
+ * at both ends, the way a short settings group wants. Returns false when there
56
+ * is nothing selectable to move to, so a caller can beep rather than doing nothing.
57
+ */
58
+ move(delta: number): boolean;
59
+ /** @returns true when the action was used */
60
+ handleAction(action: Action): boolean;
61
+ /** selects row `index` the way a tap does; a disabled row is a no-op */
62
+ tapRow(index: number): void;
63
+ private defaultSelection;
64
+ private buildRows;
65
+ private draw;
66
+ destroy(options?: Parameters<Container['destroy']>[0]): void;
67
+ }
68
+ //# sourceMappingURL=RadioGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/RadioGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,MAAM,WAAW,WAAW;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IAExB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,SAAQ,SAAS;IACxC,QAAQ,CAAC,QAAQ,iBAAwB;IAEzC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,YAAY,OAAO,GAAE,iBAAsB,EAW1C;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,cAAc,IAAI,WAAW,GAAG,IAAI,CAEvC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAI1D;IAED,6EAA6E;IAC7E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAU1B;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAa3B;IAED,6CAA6C;IAC7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAYpC;IAED,wEAAwE;IACxE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE1B;IAED,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,IAAI;IAuCH,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAGpE;CACD"}
@@ -0,0 +1,177 @@
1
+ import { Container, Graphics } from 'pixi.js';
2
+ import { Signal } from '../../core/Signal.js';
3
+ import { Label } from './Label.js';
4
+ import { theme, themeChanged } from './theme.js';
5
+ /**
6
+ * One choice among several, where a checkbox would allow many: exactly one option
7
+ * is selected, arrows move the selection (which selects at once, the way native
8
+ * radio groups do), and a tap selects directly. Disabled options are skipped by
9
+ * the keyboard and ignore the pointer, the same contract `ListView` rows keep.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { RadioGroup } from '@datamoc/mw_games/two-d/ui';
14
+ *
15
+ * const side = new RadioGroup({ options: [{ text: 'White' }, { text: 'Black' }] });
16
+ * side.onChange.add((index) => console.log('side', index));
17
+ * side.select(1);
18
+ * ```
19
+ */
20
+ export class RadioGroup extends Container {
21
+ constructor(options = {}) {
22
+ super();
23
+ this.onChange = new Signal();
24
+ this.options_ = [];
25
+ this.rows = [];
26
+ this.circles = [];
27
+ this.selected_ = -1;
28
+ this.themeListener = () => this.draw();
29
+ this.size_ = options.size ?? 20;
30
+ this.gap_ = options.gap ?? 8;
31
+ this.buildRows(options.options ?? []);
32
+ this.selected_ = this.defaultSelection(options.selected);
33
+ this.draw();
34
+ themeChanged.add(this.themeListener);
35
+ }
36
+ get selected() {
37
+ return this.selected_;
38
+ }
39
+ get selectedOption() {
40
+ return this.options_[this.selected_] ?? null;
41
+ }
42
+ get length() {
43
+ return this.options_.length;
44
+ }
45
+ get rowHeight() {
46
+ return this.size_ + this.gap_;
47
+ }
48
+ setOptions(options, selected) {
49
+ this.buildRows(options);
50
+ this.selected_ = this.defaultSelection(selected);
51
+ this.draw();
52
+ }
53
+ /** picks an option, firing `onChange` only when the choice actually moves */
54
+ select(index) {
55
+ const option = this.options_[index];
56
+ if (!option || option.disabled)
57
+ return;
58
+ if (index === this.selected_) {
59
+ this.draw();
60
+ return;
61
+ }
62
+ this.selected_ = index;
63
+ this.draw();
64
+ this.onChange.dispatch(index);
65
+ }
66
+ /**
67
+ * Steps the selection by `delta` rows, skipping disabled options and wrapping
68
+ * at both ends, the way a short settings group wants. Returns false when there
69
+ * is nothing selectable to move to, so a caller can beep rather than doing nothing.
70
+ */
71
+ move(delta) {
72
+ const count = this.options_.length;
73
+ if (count === 0)
74
+ return false;
75
+ let at = this.selected_;
76
+ for (let tried = 0; tried < count; tried++) {
77
+ at = (at + delta + count) % count;
78
+ const option = this.options_[at];
79
+ if (option && !option.disabled) {
80
+ this.select(at);
81
+ return true;
82
+ }
83
+ }
84
+ return false;
85
+ }
86
+ /** @returns true when the action was used */
87
+ handleAction(action) {
88
+ switch (action) {
89
+ case 'up':
90
+ case 'left':
91
+ return this.move(-1);
92
+ case 'down':
93
+ case 'right':
94
+ return this.move(1);
95
+ default:
96
+ //nothing to confirm: arrows already select, the way native radio groups do
97
+ return false;
98
+ }
99
+ }
100
+ /** selects row `index` the way a tap does; a disabled row is a no-op */
101
+ tapRow(index) {
102
+ this.select(index);
103
+ }
104
+ defaultSelection(wanted) {
105
+ if (wanted !== undefined) {
106
+ const option = this.options_[wanted];
107
+ if (option && !option.disabled)
108
+ return wanted;
109
+ }
110
+ const first = this.options_.findIndex((option) => !option.disabled);
111
+ return first === -1 ? -1 : first;
112
+ }
113
+ buildRows(options) {
114
+ for (const row of this.rows)
115
+ row.destroy({ children: true });
116
+ this.rows = [];
117
+ this.circles = [];
118
+ this.options_ = [...options];
119
+ this.removeChildren();
120
+ options.forEach((option, i) => {
121
+ const row = new Container();
122
+ row.y = i * this.rowHeight;
123
+ row.eventMode = 'static';
124
+ row.cursor = option.disabled ? 'default' : 'pointer';
125
+ row.on('pointertap', () => this.tapRow(i));
126
+ const circle = new Graphics();
127
+ row.addChild(circle);
128
+ this.circles.push(circle);
129
+ const label = new Label({ text: option.text });
130
+ row.addChild(label);
131
+ this.rows.push(row);
132
+ this.addChild(row);
133
+ });
134
+ }
135
+ draw() {
136
+ const t = theme();
137
+ const rtl = t.direction === 'rtl';
138
+ this.rows.forEach((row, i) => {
139
+ const option = this.options_[i];
140
+ const dim = option.disabled;
141
+ const circle = this.circles[i];
142
+ circle
143
+ .clear()
144
+ .circle(this.size_ / 2, this.size_ / 2, this.size_ / 2 - 1)
145
+ .fill({ color: t.color.panelFill })
146
+ .stroke({ color: dim ? t.color.textDim : t.color.panelBorder, width: 2 });
147
+ if (i === this.selected_) {
148
+ circle
149
+ .circle(this.size_ / 2, this.size_ / 2, Math.max(2, this.size_ * 0.28))
150
+ .fill({ color: dim ? t.color.textDim : t.color.textHighlight });
151
+ }
152
+ const textStart = this.size_ + t.spacing;
153
+ const label = row.children.find((child) => child instanceof Label);
154
+ const textWidth = label?.width ?? 0;
155
+ if (label) {
156
+ label.setColor(dim ? t.color.textDim : t.color.text);
157
+ label.y = Math.round((this.size_ - label.height) / 2);
158
+ }
159
+ //mirrored per row, since rows have no shared width to align against
160
+ if (rtl) {
161
+ if (label)
162
+ label.x = 0;
163
+ circle.x = textWidth + t.spacing;
164
+ }
165
+ else {
166
+ circle.x = 0;
167
+ if (label)
168
+ label.x = textStart;
169
+ }
170
+ });
171
+ }
172
+ destroy(options) {
173
+ themeChanged.remove(this.themeListener);
174
+ super.destroy(options);
175
+ }
176
+ }
177
+ //# sourceMappingURL=RadioGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../../../src/two-d/ui/RadioGroup.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ export interface TextModelOptions {
6
6
  mask?: boolean;
7
7
  /** the character `maskedValue` repeats; a bullet when omitted */
8
8
  maskCharacter?: string;
9
+ /**
10
+ * a multiline field: Enter inserts a real newline and the line helpers below
11
+ * navigate rows. Off by default, in which case newlines never survive an edit -
12
+ * a single-line name entry cannot grow a second row no matter what is pasted.
13
+ */
14
+ multiline?: boolean;
9
15
  }
10
16
  /**
11
17
  * The editing state behind a text field, with no renderer attached - the counterpart to
@@ -33,9 +39,14 @@ export declare class TextModel {
33
39
  private readonly maxLength?;
34
40
  private readonly mask;
35
41
  private readonly maskCharacter;
42
+ private readonly multiline;
43
+ private goalColumn;
36
44
  constructor(options?: TextModelOptions);
37
45
  get value(): string;
38
- /** what to draw for a password field: every character replaced by the mask */
46
+ /**
47
+ * what to draw for a password field: every character replaced by the mask, except
48
+ * newlines, which stay newlines so a masked multiline value keeps its rows
49
+ */
39
50
  get maskedValue(): string;
40
51
  get length(): number;
41
52
  get caret(): number;
@@ -60,6 +71,20 @@ export declare class TextModel {
60
71
  clearSelection(): void;
61
72
  /** replaces the selection (or inserts at the caret) and leaves the caret after the new text */
62
73
  replaceSelection(text: string): void;
74
+ /** newlines as the field keeps them: rows in a multiline field, stripped away otherwise */
75
+ private shape;
76
+ /** rows in a multiline field; always 1 for a single-line one, even when empty */
77
+ get lineCount(): number;
78
+ /** the 0-based row the caret sits on */
79
+ get caretLine(): number;
80
+ /** [start, end) of a row, the end stopping before its newline; out-of-range rows clamp */
81
+ lineRange(line: number): readonly [number, number];
82
+ /**
83
+ * Up/down between rows, holding the column: the caret lands as far along the new
84
+ * row as it goes, the way a `<textarea>` moves. Rows here are newline-delimited,
85
+ * since only the renderer knows where a long row wraps on screen.
86
+ */
87
+ moveCaretLine(delta: number, extend?: boolean): void;
63
88
  private limit;
64
89
  }
65
90
  //# sourceMappingURL=TextModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextModel.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/TextModel.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,YAAY,OAAO,GAAE,gBAAqB,EAOzC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,8EAA8E;IAC9E,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5B;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAG5C;IAED,uFAAuF;IACvF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGzB;IAED,kFAAkF;IAClF,SAAS,IAAI,IAAI,CAQhB;IAED,8EAA8E;IAC9E,aAAa,IAAI,IAAI,CAQpB;IAED,sFAAsF;IACtF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAE7C;IAED,WAAW,CAAC,MAAM,UAAQ,GAAG,IAAI,CAEhC;IAED,SAAS,CAAC,MAAM,UAAQ,GAAG,IAAI,CAE9B;IAED,SAAS,IAAI,IAAI,CAGhB;IAED,cAAc,IAAI,IAAI,CAErB;IAED,+FAA+F;IAC/F,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAWnC;IAED,OAAO,CAAC,KAAK;CAGb"}
1
+ {"version":3,"file":"TextModel.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/TextModel.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,UAAU,CAAuB;IAEzC,YAAY,OAAO,GAAE,gBAAqB,EAQzC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK5B;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAI5C;IAED,uFAAuF;IACvF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGzB;IAED,kFAAkF;IAClF,SAAS,IAAI,IAAI,CAQhB;IAED,8EAA8E;IAC9E,aAAa,IAAI,IAAI,CAQpB;IAED,sFAAsF;IACtF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAE7C;IAED,WAAW,CAAC,MAAM,UAAQ,GAAG,IAAI,CAEhC;IAED,SAAS,CAAC,MAAM,UAAQ,GAAG,IAAI,CAE9B;IAED,SAAS,IAAI,IAAI,CAIhB;IAED,cAAc,IAAI,IAAI,CAErB;IAED,+FAA+F;IAC/F,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYnC;IAED,2FAA2F;IAC3F,OAAO,CAAC,KAAK;IAIb,iFAAiF;IACjF,IAAI,SAAS,IAAI,MAAM,CAGtB;IAED,wCAAwC;IACxC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0FAA0F;IAC1F,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjD;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAMjD;IAED,OAAO,CAAC,KAAK;CAGb"}