@vforsh/phaser-dev-ui 0.1.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 (54) hide show
  1. package/README.md +198 -0
  2. package/dist/DebugBadge.d.ts +62 -0
  3. package/dist/DebugBadge.d.ts.map +1 -0
  4. package/dist/DebugBadge.js +206 -0
  5. package/dist/DebugBadge.js.map +1 -0
  6. package/dist/DebugButton.d.ts +94 -0
  7. package/dist/DebugButton.d.ts.map +1 -0
  8. package/dist/DebugButton.js +311 -0
  9. package/dist/DebugButton.js.map +1 -0
  10. package/dist/DebugColumnContainer.d.ts +38 -0
  11. package/dist/DebugColumnContainer.d.ts.map +1 -0
  12. package/dist/DebugColumnContainer.js +69 -0
  13. package/dist/DebugColumnContainer.js.map +1 -0
  14. package/dist/DebugGridContainer.d.ts +44 -0
  15. package/dist/DebugGridContainer.d.ts.map +1 -0
  16. package/dist/DebugGridContainer.js +64 -0
  17. package/dist/DebugGridContainer.js.map +1 -0
  18. package/dist/DebugLabel.d.ts +33 -0
  19. package/dist/DebugLabel.d.ts.map +1 -0
  20. package/dist/DebugLabel.js +37 -0
  21. package/dist/DebugLabel.js.map +1 -0
  22. package/dist/DebugPanel.d.ts +67 -0
  23. package/dist/DebugPanel.d.ts.map +1 -0
  24. package/dist/DebugPanel.js +138 -0
  25. package/dist/DebugPanel.js.map +1 -0
  26. package/dist/DebugProgressBar.d.ts +47 -0
  27. package/dist/DebugProgressBar.d.ts.map +1 -0
  28. package/dist/DebugProgressBar.js +129 -0
  29. package/dist/DebugProgressBar.js.map +1 -0
  30. package/dist/DebugRowContainer.d.ts +40 -0
  31. package/dist/DebugRowContainer.d.ts.map +1 -0
  32. package/dist/DebugRowContainer.js +91 -0
  33. package/dist/DebugRowContainer.js.map +1 -0
  34. package/dist/DebugScrollContainer.d.ts +138 -0
  35. package/dist/DebugScrollContainer.d.ts.map +1 -0
  36. package/dist/DebugScrollContainer.js +413 -0
  37. package/dist/DebugScrollContainer.js.map +1 -0
  38. package/dist/DebugSwitchButton.d.ts +111 -0
  39. package/dist/DebugSwitchButton.d.ts.map +1 -0
  40. package/dist/DebugSwitchButton.js +317 -0
  41. package/dist/DebugSwitchButton.js.map +1 -0
  42. package/dist/index.d.ts +23 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +20 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/types.d.ts +37 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +2 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/utils.d.ts +31 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +62 -0
  53. package/dist/utils.js.map +1 -0
  54. package/package.json +44 -0
@@ -0,0 +1,311 @@
1
+ import { dimHex, getDevicePixelRatio, hexToColorAlpha } from "./utils.js";
2
+ /**
3
+ * An interactive debug button with hover/disabled visual states.
4
+ *
5
+ * Renders background, optional shadow, optional stroke border, and centered text.
6
+ * Supports normal → hover → disabled state transitions with automatic color dimming.
7
+ * Chainable API.
8
+ */
9
+ export class DebugButton extends Phaser.GameObjects.Container {
10
+ _bg;
11
+ _shadow;
12
+ _label;
13
+ _icon = null;
14
+ _hitZone;
15
+ _width;
16
+ _height;
17
+ _cornerRadius;
18
+ _shadowVisible;
19
+ _outlineThickness;
20
+ _normalBgColor = "#000000";
21
+ _hoverBgColor = null;
22
+ _normalOutlineColor = "#a3a3a3";
23
+ _hoverOutlineColor = null;
24
+ _normalTextColor = "#a3a3a3";
25
+ _hoverTextColor = null;
26
+ _disabledBgColor = "#1a1a1a";
27
+ _disabledOutlineColor = "#5a5a5a";
28
+ _disabledTextColor = "#6f6f6f";
29
+ _isHovering = false;
30
+ _isEnabled = true;
31
+ _iconOptions = null;
32
+ constructor(scene, options = {}) {
33
+ const { text = "Button", icon, width = 160, height = 80, cornerRadius = 10, stroke = true, shadow = true, fontSize = 20, fontFamily = "Verdana", isBold = true, onClick, enabled = true, position, } = options;
34
+ super(scene, position?.x ?? 0, position?.y ?? 0);
35
+ this._width = width;
36
+ this._height = height;
37
+ this._cornerRadius = cornerRadius;
38
+ this._shadowVisible = shadow;
39
+ this._outlineThickness = stroke ? 4 : 0;
40
+ this.setSize(width, height);
41
+ this._shadow = scene.add.graphics();
42
+ this._bg = scene.add.graphics();
43
+ const fontStyle = isBold ? "bold" : "normal";
44
+ this._label = scene.add.text(0, 0, text, {
45
+ fontFamily,
46
+ fontSize: `${fontSize}px`,
47
+ fontStyle,
48
+ color: "#a3a3a3",
49
+ align: "center",
50
+ wordWrap: { width: width - 20 },
51
+ resolution: getDevicePixelRatio(),
52
+ });
53
+ this._label.setOrigin(0.5, 0.5);
54
+ if (icon) {
55
+ this._icon = scene.add.image(0, 0, icon.key, icon.frame);
56
+ this._icon.setOrigin(0.5, 0.5);
57
+ this._iconOptions = icon;
58
+ }
59
+ this._hitZone = scene.add.zone(0, 0, width, height);
60
+ this._hitZone.setInteractive({ useHandCursor: true });
61
+ const children = [this._shadow, this._bg];
62
+ if (this._icon)
63
+ children.push(this._icon);
64
+ children.push(this._label, this._hitZone);
65
+ this.add(children);
66
+ // Default hover colors (matches Cocos version)
67
+ this._hoverBgColor = "#2a2a2a";
68
+ this._hoverTextColor = "#ffffff";
69
+ if (stroke) {
70
+ this._hoverOutlineColor = "#d0d0d0";
71
+ }
72
+ this._isEnabled = enabled;
73
+ this.syncDerivedDisabledColors();
74
+ this.setupInteraction();
75
+ this.refreshContentLayout();
76
+ if (onClick) {
77
+ this._hitZone.on("pointerup", () => {
78
+ if (this._isEnabled)
79
+ onClick(this);
80
+ });
81
+ }
82
+ this.applyVisualState();
83
+ scene.add.existing(this);
84
+ }
85
+ // -- Chainable setters --
86
+ setBgColor(color, hoverColor) {
87
+ this._normalBgColor = color;
88
+ this._hoverBgColor = hoverColor ?? null;
89
+ this.syncDerivedDisabledColors();
90
+ this.applyVisualState();
91
+ return this;
92
+ }
93
+ setOutline(color, thickness, hoverColor) {
94
+ this._normalOutlineColor = color;
95
+ this._hoverOutlineColor = hoverColor ?? null;
96
+ this._outlineThickness = thickness;
97
+ this.syncDerivedDisabledColors();
98
+ this.applyVisualState();
99
+ return this;
100
+ }
101
+ setText(text) {
102
+ this._label.setText(text);
103
+ this.refreshContentLayout();
104
+ return this;
105
+ }
106
+ setTextColor(color, hoverColor) {
107
+ this._normalTextColor = color;
108
+ this._hoverTextColor = hoverColor ?? null;
109
+ this.syncDerivedDisabledColors();
110
+ this.applyVisualState();
111
+ return this;
112
+ }
113
+ setIcon(icon) {
114
+ if (!icon) {
115
+ if (this._icon) {
116
+ this.remove(this._icon);
117
+ this._icon.destroy();
118
+ this._icon = null;
119
+ }
120
+ this._iconOptions = null;
121
+ this.refreshContentLayout();
122
+ return this;
123
+ }
124
+ if (!this._icon) {
125
+ this._icon = this.scene.add.image(0, 0, icon.key, icon.frame);
126
+ this._icon.setOrigin(0.5, 0.5);
127
+ // Insert above bg, below label/hitzone.
128
+ this.addAt(this._icon, 2);
129
+ }
130
+ else {
131
+ this._icon.setTexture(icon.key, icon.frame);
132
+ }
133
+ this._iconOptions = icon;
134
+ this.refreshContentLayout();
135
+ this.applyVisualState();
136
+ return this;
137
+ }
138
+ setEnabled(enabled) {
139
+ if (this._isEnabled === enabled)
140
+ return this;
141
+ this._isEnabled = enabled;
142
+ this._isHovering = false;
143
+ this._hitZone.input.cursor = enabled ? "pointer" : "default";
144
+ this.applyVisualState();
145
+ return this;
146
+ }
147
+ isEnabled() {
148
+ return this._isEnabled;
149
+ }
150
+ setShadowEnabled(enabled) {
151
+ this._shadowVisible = enabled;
152
+ this._shadow.setVisible(enabled);
153
+ return this;
154
+ }
155
+ setButtonSize(width, height) {
156
+ this._width = width;
157
+ this._height = height;
158
+ this.setSize(width, height);
159
+ this._hitZone.setSize(width, height);
160
+ this.refreshContentLayout();
161
+ this.applyVisualState();
162
+ return this;
163
+ }
164
+ setStyle(options) {
165
+ if (options.size)
166
+ this.setButtonSize(options.size.width, options.size.height);
167
+ if (options.bgColor)
168
+ this.setBgColor(options.bgColor, options.bgHoverColor);
169
+ if (options.outlineColor && options.outlineThickness !== undefined) {
170
+ this.setOutline(options.outlineColor, options.outlineThickness, options.outlineHoverColor);
171
+ }
172
+ if (options.text !== undefined)
173
+ this.setText(options.text);
174
+ if (options.textColor)
175
+ this.setTextColor(options.textColor, options.textHoverColor);
176
+ if (options.shadowEnabled !== undefined)
177
+ this.setShadowEnabled(options.shadowEnabled);
178
+ return this;
179
+ }
180
+ onClick(handler) {
181
+ this._hitZone.on("pointerup", () => {
182
+ if (this._isEnabled)
183
+ handler(this);
184
+ });
185
+ return this;
186
+ }
187
+ getLabel() {
188
+ return this._label;
189
+ }
190
+ getIcon() {
191
+ return this._icon;
192
+ }
193
+ // -- Internal --
194
+ refreshContentLayout() {
195
+ const hasText = this._label.text.length > 0;
196
+ this._label.setVisible(hasText);
197
+ const icon = this._icon;
198
+ const iconOpt = this._iconOptions;
199
+ const iconW = icon ? icon.displayWidth : 0;
200
+ const gap = iconOpt?.gap ?? 8;
201
+ const contentPadX = 20;
202
+ const wrapW = Math.max(0, this._width - contentPadX - (iconW > 0 ? iconW + (hasText ? gap : 0) : 0));
203
+ this._label.setWordWrapWidth(wrapW);
204
+ const labelW = hasText ? this._label.width : 0;
205
+ const groupW = iconW + labelW + (iconW > 0 && labelW > 0 ? gap : 0);
206
+ if (!iconW && labelW) {
207
+ this._label.setPosition(0, 0);
208
+ return;
209
+ }
210
+ if (iconW && !labelW) {
211
+ icon.setPosition(0, 0);
212
+ return;
213
+ }
214
+ if (!iconW && !labelW)
215
+ return;
216
+ const startX = -groupW / 2;
217
+ const side = iconOpt?.side ?? "left";
218
+ if (side === "left") {
219
+ icon.setPosition(startX + iconW / 2, 0);
220
+ this._label.setPosition(startX + iconW + gap + labelW / 2, 0);
221
+ }
222
+ else {
223
+ this._label.setPosition(startX + labelW / 2, 0);
224
+ icon.setPosition(startX + labelW + gap + iconW / 2, 0);
225
+ }
226
+ }
227
+ setupInteraction() {
228
+ this._hitZone.on("pointerover", () => {
229
+ if (!this._isEnabled)
230
+ return;
231
+ this._isHovering = true;
232
+ this.applyVisualState();
233
+ });
234
+ this._hitZone.on("pointerout", () => {
235
+ if (!this._isEnabled)
236
+ return;
237
+ this._isHovering = false;
238
+ this.applyVisualState();
239
+ });
240
+ }
241
+ resolveVisualState() {
242
+ if (!this._isEnabled)
243
+ return "disabled";
244
+ if (this._isHovering)
245
+ return "hover";
246
+ return "normal";
247
+ }
248
+ getColorForState(state, normal, hover, disabled) {
249
+ switch (state) {
250
+ case "disabled":
251
+ return disabled;
252
+ case "hover":
253
+ return hover ?? normal;
254
+ case "normal":
255
+ return normal;
256
+ }
257
+ }
258
+ syncDerivedDisabledColors() {
259
+ const bgDim = dimHex(this._normalBgColor, 0.45);
260
+ this._disabledBgColor = `#${bgDim.color.toString(16).padStart(6, "0")}`;
261
+ const olDim = dimHex(this._normalOutlineColor, 0.55);
262
+ this._disabledOutlineColor = `#${olDim.color.toString(16).padStart(6, "0")}`;
263
+ const txDim = dimHex(this._normalTextColor, 0.55);
264
+ this._disabledTextColor = `#${txDim.color.toString(16).padStart(6, "0")}`;
265
+ }
266
+ applyVisualState() {
267
+ const state = this.resolveVisualState();
268
+ const bgHex = this.getColorForState(state, this._normalBgColor, this._hoverBgColor, this._disabledBgColor);
269
+ const olHex = this.getColorForState(state, this._normalOutlineColor, this._hoverOutlineColor, this._disabledOutlineColor);
270
+ const txHex = this.getColorForState(state, this._normalTextColor, this._hoverTextColor, this._disabledTextColor);
271
+ this.redraw(bgHex, olHex);
272
+ const tc = hexToColorAlpha(txHex);
273
+ this._label.setColor(`#${tc.color.toString(16).padStart(6, "0")}`);
274
+ this._label.setAlpha(tc.alpha);
275
+ if (this._icon) {
276
+ const iconOpt = this._iconOptions;
277
+ const iconHex = state === "hover"
278
+ ? iconOpt?.hoverTint ?? txHex
279
+ : state === "disabled"
280
+ ? iconOpt?.disabledTint ?? txHex
281
+ : iconOpt?.tint ?? txHex;
282
+ const ic = hexToColorAlpha(iconHex);
283
+ this._icon.setTint(ic.color);
284
+ this._icon.setAlpha(ic.alpha * (iconOpt?.alpha ?? 1));
285
+ }
286
+ }
287
+ redraw(bgHex, outlineHex) {
288
+ const halfW = this._width / 2;
289
+ const halfH = this._height / 2;
290
+ // Shadow
291
+ this._shadow.clear();
292
+ if (this._shadowVisible) {
293
+ this._shadow.fillStyle(0x000000, 0.2);
294
+ this._shadow.fillRoundedRect(-halfW, -halfH + 4, this._width, this._height, this._cornerRadius);
295
+ }
296
+ // Background
297
+ this._bg.clear();
298
+ const fc = hexToColorAlpha(bgHex);
299
+ this._bg.fillStyle(fc.color, fc.alpha);
300
+ this._bg.fillRoundedRect(-halfW, -halfH, this._width, this._height, this._cornerRadius);
301
+ if (this._outlineThickness > 0) {
302
+ const sc = hexToColorAlpha(outlineHex);
303
+ this._bg.lineStyle(this._outlineThickness, sc.color, sc.alpha);
304
+ this._bg.strokeRoundedRect(-halfW, -halfH, this._width, this._height, this._cornerRadius);
305
+ }
306
+ }
307
+ }
308
+ export function createDebugButton(scene, options = {}) {
309
+ return new DebugButton(scene, options);
310
+ }
311
+ //# sourceMappingURL=DebugButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugButton.js","sourceRoot":"","sources":["../src/DebugButton.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Position } from "./types.js";
2
+ export interface CreateColumnContainerOptions {
3
+ /** Vertical spacing between children (default: 0). */
4
+ spacingY?: number;
5
+ /** Padding (default: 0 all sides). */
6
+ paddingLeft?: number;
7
+ paddingRight?: number;
8
+ paddingTop?: number;
9
+ paddingBottom?: number;
10
+ /** Direction (default: "top-to-bottom"). */
11
+ direction?: "top-to-bottom" | "bottom-to-top";
12
+ /** Position (optional). */
13
+ position?: Position;
14
+ }
15
+ /**
16
+ * A vertical layout container that arranges children in a column.
17
+ *
18
+ * After adding children via `addItem()`, call `layout()` to position them.
19
+ * Items are spaced by `spacingY` with configurable padding.
20
+ */
21
+ export declare class DebugColumnContainer extends Phaser.GameObjects.Container {
22
+ private _spacingY;
23
+ private _paddingLeft;
24
+ private _paddingRight;
25
+ private _paddingTop;
26
+ private _paddingBottom;
27
+ private _direction;
28
+ constructor(scene: Phaser.Scene, options?: CreateColumnContainerOptions);
29
+ addItem(child: Phaser.GameObjects.GameObject): this;
30
+ addItems(children: Phaser.GameObjects.GameObject[]): this;
31
+ setSpacingY(spacing: number): this;
32
+ /** Reposition children according to current spacing/padding. */
33
+ layout(): this;
34
+ /** Total height of laid-out children + padding. */
35
+ getContentHeight(): number;
36
+ }
37
+ export declare function createColumnContainer(scene: Phaser.Scene, options?: CreateColumnContainerOptions): DebugColumnContainer;
38
+ //# sourceMappingURL=DebugColumnContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugColumnContainer.d.ts","sourceRoot":"","sources":["../src/DebugColumnContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,4BAA4B;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,eAAe,GAAG,eAAe,CAAA;IAC7C,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,MAAM,CAAC,WAAW,CAAC,SAAS;IACrE,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAmC;gBAEzC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,GAAE,4BAAiC;IAuB3E,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;IAKnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,IAAI;IAKzD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC,gEAAgE;IAChE,MAAM,IAAI,IAAI;IAkBd,mDAAmD;IACnD,gBAAgB,IAAI,MAAM;CAU1B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,GAAE,4BAAiC,GAAG,oBAAoB,CAE3H"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * A vertical layout container that arranges children in a column.
3
+ *
4
+ * After adding children via `addItem()`, call `layout()` to position them.
5
+ * Items are spaced by `spacingY` with configurable padding.
6
+ */
7
+ export class DebugColumnContainer extends Phaser.GameObjects.Container {
8
+ _spacingY;
9
+ _paddingLeft;
10
+ _paddingRight;
11
+ _paddingTop;
12
+ _paddingBottom;
13
+ _direction;
14
+ constructor(scene, options = {}) {
15
+ const { spacingY = 0, paddingLeft = 0, paddingRight = 0, paddingTop = 0, paddingBottom = 0, direction = "top-to-bottom", position, } = options;
16
+ super(scene, position?.x ?? 0, position?.y ?? 0);
17
+ this._spacingY = spacingY;
18
+ this._paddingLeft = paddingLeft;
19
+ this._paddingRight = paddingRight;
20
+ this._paddingTop = paddingTop;
21
+ this._paddingBottom = paddingBottom;
22
+ this._direction = direction;
23
+ scene.add.existing(this);
24
+ }
25
+ addItem(child) {
26
+ this.add(child);
27
+ return this;
28
+ }
29
+ addItems(children) {
30
+ for (const child of children)
31
+ this.add(child);
32
+ return this;
33
+ }
34
+ setSpacingY(spacing) {
35
+ this._spacingY = spacing;
36
+ return this;
37
+ }
38
+ /** Reposition children according to current spacing/padding. */
39
+ layout() {
40
+ const items = this.list;
41
+ let cursor = this._paddingTop;
42
+ const ordered = this._direction === "bottom-to-top" ? [...items].reverse() : items;
43
+ for (const item of ordered) {
44
+ const go = item;
45
+ if (!go.setPosition)
46
+ continue;
47
+ const h = ("displayHeight" in go ? go.displayHeight : 0);
48
+ go.setPosition(this._paddingLeft, cursor + h / 2);
49
+ cursor += h + this._spacingY;
50
+ }
51
+ return this;
52
+ }
53
+ /** Total height of laid-out children + padding. */
54
+ getContentHeight() {
55
+ const items = this.list;
56
+ let total = this._paddingTop + this._paddingBottom;
57
+ for (let i = 0; i < items.length; i++) {
58
+ const go = items[i];
59
+ total += ("displayHeight" in go ? go.displayHeight : 0);
60
+ if (i < items.length - 1)
61
+ total += this._spacingY;
62
+ }
63
+ return total;
64
+ }
65
+ }
66
+ export function createColumnContainer(scene, options = {}) {
67
+ return new DebugColumnContainer(scene, options);
68
+ }
69
+ //# sourceMappingURL=DebugColumnContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugColumnContainer.js","sourceRoot":"","sources":["../src/DebugColumnContainer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { Position } from "./types.js";
2
+ export interface CreateGridContainerOptions {
3
+ /** Number of columns (default: 3). */
4
+ columns?: number;
5
+ /** Cell width (default: 100). */
6
+ cellWidth?: number;
7
+ /** Cell height (default: 100). */
8
+ cellHeight?: number;
9
+ /** Horizontal spacing (default: 0). */
10
+ spacingX?: number;
11
+ /** Vertical spacing (default: 0). */
12
+ spacingY?: number;
13
+ /** Padding (default: 0 all sides). */
14
+ paddingLeft?: number;
15
+ paddingTop?: number;
16
+ /** Position (optional). */
17
+ position?: Position;
18
+ }
19
+ /**
20
+ * A grid layout container that arranges children in rows and columns.
21
+ *
22
+ * Children flow left-to-right, top-to-bottom within a fixed column count.
23
+ * Call `layout()` after adding items to reposition them.
24
+ */
25
+ export declare class DebugGridContainer extends Phaser.GameObjects.Container {
26
+ private _columns;
27
+ private _cellWidth;
28
+ private _cellHeight;
29
+ private _spacingX;
30
+ private _spacingY;
31
+ private _paddingLeft;
32
+ private _paddingTop;
33
+ constructor(scene: Phaser.Scene, options?: CreateGridContainerOptions);
34
+ addItem(child: Phaser.GameObjects.GameObject): this;
35
+ addItems(children: Phaser.GameObjects.GameObject[]): this;
36
+ /** Reposition children in grid cells. */
37
+ layout(): this;
38
+ /** Total grid width. */
39
+ getContentWidth(): number;
40
+ /** Total grid height based on current items. */
41
+ getContentHeight(): number;
42
+ }
43
+ export declare function createGridContainer(scene: Phaser.Scene, options?: CreateGridContainerOptions): DebugGridContainer;
44
+ //# sourceMappingURL=DebugGridContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugGridContainer.d.ts","sourceRoot":"","sources":["../src/DebugGridContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,0BAA0B;IAC1C,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,MAAM,CAAC,WAAW,CAAC,SAAS;IACnE,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAAQ;gBAEf,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,GAAE,0BAA+B;IAyBzE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;IAKnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,IAAI;IAKzD,yCAAyC;IACzC,MAAM,IAAI,IAAI;IAkBd,wBAAwB;IACxB,eAAe,IAAI,MAAM;IAIzB,gDAAgD;IAChD,gBAAgB,IAAI,MAAM;CAI1B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,GAAE,0BAA+B,GAAG,kBAAkB,CAErH"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * A grid layout container that arranges children in rows and columns.
3
+ *
4
+ * Children flow left-to-right, top-to-bottom within a fixed column count.
5
+ * Call `layout()` after adding items to reposition them.
6
+ */
7
+ export class DebugGridContainer extends Phaser.GameObjects.Container {
8
+ _columns;
9
+ _cellWidth;
10
+ _cellHeight;
11
+ _spacingX;
12
+ _spacingY;
13
+ _paddingLeft;
14
+ _paddingTop;
15
+ constructor(scene, options = {}) {
16
+ const { columns = 3, cellWidth = 100, cellHeight = 100, spacingX = 0, spacingY = 0, paddingLeft = 0, paddingTop = 0, position, } = options;
17
+ super(scene, position?.x ?? 0, position?.y ?? 0);
18
+ this._columns = columns;
19
+ this._cellWidth = cellWidth;
20
+ this._cellHeight = cellHeight;
21
+ this._spacingX = spacingX;
22
+ this._spacingY = spacingY;
23
+ this._paddingLeft = paddingLeft;
24
+ this._paddingTop = paddingTop;
25
+ scene.add.existing(this);
26
+ }
27
+ addItem(child) {
28
+ this.add(child);
29
+ return this;
30
+ }
31
+ addItems(children) {
32
+ for (const child of children)
33
+ this.add(child);
34
+ return this;
35
+ }
36
+ /** Reposition children in grid cells. */
37
+ layout() {
38
+ const items = this.list;
39
+ for (let i = 0; i < items.length; i++) {
40
+ const col = i % this._columns;
41
+ const row = Math.floor(i / this._columns);
42
+ const go = items[i];
43
+ if (!go.setPosition)
44
+ continue;
45
+ const x = this._paddingLeft + col * (this._cellWidth + this._spacingX) + this._cellWidth / 2;
46
+ const y = this._paddingTop + row * (this._cellHeight + this._spacingY) + this._cellHeight / 2;
47
+ go.setPosition(x, y);
48
+ }
49
+ return this;
50
+ }
51
+ /** Total grid width. */
52
+ getContentWidth() {
53
+ return this._paddingLeft + this._columns * this._cellWidth + (this._columns - 1) * this._spacingX;
54
+ }
55
+ /** Total grid height based on current items. */
56
+ getContentHeight() {
57
+ const rows = Math.ceil(this.list.length / this._columns);
58
+ return this._paddingTop + rows * this._cellHeight + Math.max(0, rows - 1) * this._spacingY;
59
+ }
60
+ }
61
+ export function createGridContainer(scene, options = {}) {
62
+ return new DebugGridContainer(scene, options);
63
+ }
64
+ //# sourceMappingURL=DebugGridContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugGridContainer.js","sourceRoot":"","sources":["../src/DebugGridContainer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { HexColor, Position } from "./types.js";
2
+ export interface CreateDebugLabelOptions {
3
+ /** Label text (default: "Label") */
4
+ text?: string;
5
+ /** Font size in pixels (default: 20) */
6
+ fontSize?: number;
7
+ /** Text color (default: "#ffffff") */
8
+ color?: HexColor;
9
+ /** Font family (default: "Verdana") */
10
+ fontFamily?: string;
11
+ /** Horizontal alignment (default: "center") */
12
+ align?: "left" | "center" | "right";
13
+ /** Bold text (default: false) */
14
+ isBold?: boolean;
15
+ /** Italic text (default: false) */
16
+ isItalic?: boolean;
17
+ /** Fixed width for word wrap (optional) */
18
+ wordWrapWidth?: number;
19
+ /** Position (optional) */
20
+ position?: Position;
21
+ }
22
+ /**
23
+ * A debug text label rendered with Phaser.GameObjects.Text.
24
+ *
25
+ * Thin wrapper that applies dark-theme defaults (white text, Verdana)
26
+ * and exposes a chainable styling API.
27
+ */
28
+ export declare class DebugLabel extends Phaser.GameObjects.Text {
29
+ constructor(scene: Phaser.Scene, options?: CreateDebugLabelOptions);
30
+ setTextColor(color: HexColor): this;
31
+ }
32
+ export declare function createDebugLabel(scene: Phaser.Scene, options?: CreateDebugLabelOptions): DebugLabel;
33
+ //# sourceMappingURL=DebugLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugLabel.d.ts","sourceRoot":"","sources":["../src/DebugLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGpD,MAAM,WAAW,uBAAuB;IACvC,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,MAAM,CAAC,WAAW,CAAC,IAAI;gBAC1C,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,GAAE,uBAA4B;IAkCtE,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAMnC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,GAAE,uBAA4B,GAAG,UAAU,CAEvG"}
@@ -0,0 +1,37 @@
1
+ import { getDevicePixelRatio, hexToColorAlpha } from "./utils.js";
2
+ /**
3
+ * A debug text label rendered with Phaser.GameObjects.Text.
4
+ *
5
+ * Thin wrapper that applies dark-theme defaults (white text, Verdana)
6
+ * and exposes a chainable styling API.
7
+ */
8
+ export class DebugLabel extends Phaser.GameObjects.Text {
9
+ constructor(scene, options = {}) {
10
+ const { text = "Label", fontSize = 20, color = "#ffffff", fontFamily = "Verdana", align = "center", isBold = false, isItalic = false, wordWrapWidth, position, } = options;
11
+ const fontStyle = [isBold ? "bold" : "", isItalic ? "italic" : ""].filter(Boolean).join(" ").trim() || "normal";
12
+ const c = hexToColorAlpha(color);
13
+ const colorStr = `#${c.color.toString(16).padStart(6, "0")}`;
14
+ super(scene, position?.x ?? 0, position?.y ?? 0, text, {
15
+ fontFamily,
16
+ fontSize: `${fontSize}px`,
17
+ fontStyle,
18
+ color: colorStr,
19
+ align,
20
+ wordWrap: wordWrapWidth ? { width: wordWrapWidth } : undefined,
21
+ resolution: getDevicePixelRatio(),
22
+ });
23
+ this.setOrigin(0.5, 0.5);
24
+ this.setAlpha(c.alpha);
25
+ scene.add.existing(this);
26
+ }
27
+ setTextColor(color) {
28
+ const c = hexToColorAlpha(color);
29
+ this.setColor(`#${c.color.toString(16).padStart(6, "0")}`);
30
+ this.setAlpha(c.alpha);
31
+ return this;
32
+ }
33
+ }
34
+ export function createDebugLabel(scene, options = {}) {
35
+ return new DebugLabel(scene, options);
36
+ }
37
+ //# sourceMappingURL=DebugLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugLabel.js","sourceRoot":"","sources":["../src/DebugLabel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAuBjE;;;;;GAKG;AACH,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,WAAW,CAAC,IAAI;IACtD,YAAY,KAAmB,EAAE,UAAmC,EAAE;QACrE,MAAM,EACL,IAAI,GAAG,OAAO,EACd,QAAQ,GAAG,EAAE,EACb,KAAK,GAAG,SAAS,EACjB,UAAU,GAAG,SAAS,EACtB,KAAK,GAAG,QAAQ,EAChB,MAAM,GAAG,KAAK,EACd,QAAQ,GAAG,KAAK,EAChB,aAAa,EACb,QAAQ,GACR,GAAG,OAAO,CAAA;QAEX,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAA;QAE/G,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;QAE5D,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;YACtD,UAAU;YACV,QAAQ,EAAE,GAAG,QAAQ,IAAI;YACzB,SAAS;YACT,KAAK,EAAE,QAAQ;YACf,KAAK;YACL,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;YAC9D,UAAU,EAAE,mBAAmB,EAAE;SACjC,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEtB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,YAAY,CAAC,KAAe;QAC3B,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,IAAI,CAAA;IACZ,CAAC;CACD;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAmB,EAAE,UAAmC,EAAE;IAC1F,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC"}