@datamoc/mw_games 0.7.2 → 0.7.4

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 (116) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +1 -1
  3. package/dist/board/FogOfWar.d.ts +6 -0
  4. package/dist/board/FogOfWar.d.ts.map +1 -1
  5. package/dist/board/FogOfWar.js +15 -0
  6. package/dist/board/FogOfWar.js.map +1 -1
  7. package/dist/core/ActionJournal.d.ts +36 -0
  8. package/dist/core/ActionJournal.d.ts.map +1 -0
  9. package/dist/core/ActionJournal.js +60 -0
  10. package/dist/core/ActionJournal.js.map +1 -0
  11. package/dist/core/Pathfinding.d.ts +41 -0
  12. package/dist/core/Pathfinding.d.ts.map +1 -0
  13. package/dist/core/Pathfinding.js +86 -0
  14. package/dist/core/Pathfinding.js.map +1 -0
  15. package/dist/core/State.d.ts +59 -0
  16. package/dist/core/State.d.ts.map +1 -0
  17. package/dist/core/State.js +100 -0
  18. package/dist/core/State.js.map +1 -0
  19. package/dist/core/index.d.ts +6 -0
  20. package/dist/core/index.d.ts.map +1 -1
  21. package/dist/core/index.js +3 -0
  22. package/dist/core/index.js.map +1 -1
  23. package/dist/mw_games.global.js +97 -97
  24. package/dist/mwl/hooks.d.ts +3 -2
  25. package/dist/mwl/hooks.d.ts.map +1 -1
  26. package/dist/mwl/hooks.js.map +1 -1
  27. package/dist/mwl/index.d.ts +3 -3
  28. package/dist/mwl/index.d.ts.map +1 -1
  29. package/dist/mwl/index.js +1 -1
  30. package/dist/mwl/index.js.map +1 -1
  31. package/dist/mwl/report.d.ts +17 -1
  32. package/dist/mwl/report.d.ts.map +1 -1
  33. package/dist/mwl/report.js +33 -0
  34. package/dist/mwl/report.js.map +1 -1
  35. package/dist/mwl/runtime.d.ts +46 -1
  36. package/dist/mwl/runtime.d.ts.map +1 -1
  37. package/dist/mwl/runtime.js +237 -19
  38. package/dist/mwl/runtime.js.map +1 -1
  39. package/dist/mwl/schema.d.ts.map +1 -1
  40. package/dist/mwl/schema.js +136 -1
  41. package/dist/mwl/schema.js.map +1 -1
  42. package/dist/roguelike/FieldOfView.d.ts +3 -2
  43. package/dist/roguelike/FieldOfView.d.ts.map +1 -1
  44. package/dist/roguelike/FieldOfView.js +3 -2
  45. package/dist/roguelike/FieldOfView.js.map +1 -1
  46. package/dist/roguelike/Level.d.ts +9 -1
  47. package/dist/roguelike/Level.d.ts.map +1 -1
  48. package/dist/roguelike/Level.js +6 -2
  49. package/dist/roguelike/Level.js.map +1 -1
  50. package/dist/roguelike/MultiTurnBeam.d.ts +70 -0
  51. package/dist/roguelike/MultiTurnBeam.d.ts.map +1 -0
  52. package/dist/roguelike/MultiTurnBeam.js +117 -0
  53. package/dist/roguelike/MultiTurnBeam.js.map +1 -0
  54. package/dist/roguelike/Scheduler.d.ts +5 -1
  55. package/dist/roguelike/Scheduler.d.ts.map +1 -1
  56. package/dist/roguelike/Scheduler.js +10 -3
  57. package/dist/roguelike/Scheduler.js.map +1 -1
  58. package/dist/roguelike/Targeting.d.ts +51 -0
  59. package/dist/roguelike/Targeting.d.ts.map +1 -1
  60. package/dist/roguelike/Targeting.js +87 -2
  61. package/dist/roguelike/Targeting.js.map +1 -1
  62. package/dist/roguelike/index.d.ts +4 -2
  63. package/dist/roguelike/index.d.ts.map +1 -1
  64. package/dist/roguelike/index.js +2 -1
  65. package/dist/roguelike/index.js.map +1 -1
  66. package/dist/rpg/automap.d.ts +4 -0
  67. package/dist/rpg/automap.d.ts.map +1 -1
  68. package/dist/rpg/automap.js +5 -2
  69. package/dist/rpg/automap.js.map +1 -1
  70. package/dist/simulation/Campaign.d.ts +60 -0
  71. package/dist/simulation/Campaign.d.ts.map +1 -0
  72. package/dist/simulation/Campaign.js +85 -0
  73. package/dist/simulation/Campaign.js.map +1 -0
  74. package/dist/simulation/Harness.d.ts +26 -0
  75. package/dist/simulation/Harness.d.ts.map +1 -0
  76. package/dist/simulation/Harness.js +25 -0
  77. package/dist/simulation/Harness.js.map +1 -0
  78. package/dist/simulation/index.d.ts +4 -0
  79. package/dist/simulation/index.d.ts.map +1 -1
  80. package/dist/simulation/index.js +2 -0
  81. package/dist/simulation/index.js.map +1 -1
  82. package/dist/two-d/render/ImageModifiers.d.ts +58 -0
  83. package/dist/two-d/render/ImageModifiers.d.ts.map +1 -0
  84. package/dist/two-d/render/ImageModifiers.js +145 -0
  85. package/dist/two-d/render/ImageModifiers.js.map +1 -0
  86. package/dist/two-d/render/Minimap.d.ts +24 -0
  87. package/dist/two-d/render/Minimap.d.ts.map +1 -1
  88. package/dist/two-d/render/Minimap.js +52 -14
  89. package/dist/two-d/render/Minimap.js.map +1 -1
  90. package/dist/two-d/render/Particles.d.ts +16 -0
  91. package/dist/two-d/render/Particles.d.ts.map +1 -1
  92. package/dist/two-d/render/Particles.js +15 -2
  93. package/dist/two-d/render/Particles.js.map +1 -1
  94. package/dist/two-d/render/index.d.ts +4 -2
  95. package/dist/two-d/render/index.d.ts.map +1 -1
  96. package/dist/two-d/render/index.js +2 -1
  97. package/dist/two-d/render/index.js.map +1 -1
  98. package/dist/two-d/ui/Bar.d.ts +21 -2
  99. package/dist/two-d/ui/Bar.d.ts.map +1 -1
  100. package/dist/two-d/ui/Bar.js +27 -5
  101. package/dist/two-d/ui/Bar.js.map +1 -1
  102. package/dist/two-d/ui/FloatingText.d.ts +42 -1
  103. package/dist/two-d/ui/FloatingText.d.ts.map +1 -1
  104. package/dist/two-d/ui/FloatingText.js +52 -4
  105. package/dist/two-d/ui/FloatingText.js.map +1 -1
  106. package/dist/two-d/ui/FloatingTextStack.d.ts +77 -0
  107. package/dist/two-d/ui/FloatingTextStack.d.ts.map +1 -0
  108. package/dist/two-d/ui/FloatingTextStack.js +99 -0
  109. package/dist/two-d/ui/FloatingTextStack.js.map +1 -0
  110. package/dist/two-d/ui/index.d.ts +3 -1
  111. package/dist/two-d/ui/index.d.ts.map +1 -1
  112. package/dist/two-d/ui/index.js +2 -1
  113. package/dist/two-d/ui/index.js.map +1 -1
  114. package/dist/version.d.ts +1 -1
  115. package/dist/version.js +1 -1
  116. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../../src/two-d/render/Minimap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../../src/two-d/render/Minimap.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,13 @@ export interface Particle {
21
21
  /** current interpolated values, recomputed every step from the emitter's ranges */
22
22
  scale: number;
23
23
  alpha: number;
24
+ /**
25
+ * Index into the emitter's `frames` for this particle's own age, or 0 without a frame
26
+ * sequence. Readable here for the same reason the rest of this interface is: a frame
27
+ * sequence is simulation state (which frame a flame is on), so a test asserts it without a
28
+ * renderer.
29
+ */
30
+ frame: number;
24
31
  /** false for a pooled particle waiting to be reused */
25
32
  active: boolean;
26
33
  }
@@ -29,6 +36,13 @@ export type ParticleRange = number | readonly [number, number];
29
36
  export interface ParticleEmitterOptions {
30
37
  /** drawn per particle; omit for a pure simulation that renders nothing (tests, headless) */
31
38
  texture?: Texture2D;
39
+ /**
40
+ * A texture sequence each particle walks across its own life - the four frames of a flame,
41
+ * the puff of smoke - taken in preference to `texture`, whose place it takes. Chosen by the
42
+ * particle's age rather than the emitter's, so a burst does not flick through the frames in
43
+ * lockstep.
44
+ */
45
+ frames?: readonly Texture2D[];
32
46
  /** how many particles can live at once. The pool is allocated once at this size and never grows */
33
47
  max?: number;
34
48
  /** particles emitted per second while `start()`ed; 0 makes the emitter burst-only */
@@ -102,6 +116,8 @@ export declare class ParticleEmitter extends Container {
102
116
  private readonly scaleRange;
103
117
  private readonly alphaRange;
104
118
  private readonly spin;
119
+ /** the frame sequence to walk, if one was given - `texture` is ignored in its favour */
120
+ private readonly frames?;
105
121
  private emitting;
106
122
  /** where the next pool search starts, so reuse stays O(1) amortised rather than O(pool) */
107
123
  private poolCursor;
@@ -1 +1 @@
1
- {"version":3,"file":"Particles.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/Particles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Particles.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/Particles.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,7 @@ export class ParticleEmitter extends Container {
61
61
  this.scaleRange = options.scale ?? [1, 1];
62
62
  this.alphaRange = options.alpha ?? [1, 0];
63
63
  this.spin = options.spin ?? 0;
64
+ this.frames = options.frames;
64
65
  for (let i = 0; i < max; i++) {
65
66
  this.pool.push({
66
67
  x: 0,
@@ -73,10 +74,12 @@ export class ParticleEmitter extends Container {
73
74
  spin: 0,
74
75
  scale: 1,
75
76
  alpha: 1,
77
+ frame: 0,
76
78
  active: false,
77
79
  });
78
- if (options.texture) {
79
- const sprite = new Sprite(options.texture);
80
+ const base = this.frames?.[0] ?? options.texture;
81
+ if (base) {
82
+ const sprite = new Sprite(base);
80
83
  sprite.anchor.set(0.5);
81
84
  sprite.visible = false;
82
85
  if (options.tint !== undefined)
@@ -152,6 +155,7 @@ export class ParticleEmitter extends Container {
152
155
  particle.spin = pick(this.spin) * motion;
153
156
  particle.scale = this.scaleRange[0];
154
157
  particle.alpha = this.alphaRange[0];
158
+ particle.frame = 0;
155
159
  particle.active = true;
156
160
  return true;
157
161
  }
@@ -194,6 +198,12 @@ export class ParticleEmitter extends Container {
194
198
  const t = particle.age / particle.life;
195
199
  particle.scale = this.scaleRange[0] + (this.scaleRange[1] - this.scaleRange[0]) * t;
196
200
  particle.alpha = this.alphaRange[0] + (this.alphaRange[1] - this.alphaRange[0]) * t;
201
+ //a frame sequence plays across the particle's own life, so `t` picks the frame the
202
+ //same way it interpolates scale and alpha; the last frame holds until it dies rather
203
+ //than falling off the end of the array
204
+ if (this.frames) {
205
+ particle.frame = Math.min(this.frames.length - 1, Math.floor(t * this.frames.length));
206
+ }
197
207
  }
198
208
  this.draw();
199
209
  }
@@ -214,6 +224,9 @@ export class ParticleEmitter extends Container {
214
224
  sprite.rotation = particle.rotation;
215
225
  sprite.alpha = particle.alpha;
216
226
  sprite.scale.set(particle.scale);
227
+ //a frame sequence swaps the sprite's texture; a single-texture emitter leaves it
228
+ if (this.frames)
229
+ sprite.texture = this.frames[particle.frame] ?? sprite.texture;
217
230
  }
218
231
  }
219
232
  /** kills every live particle at once, without emitting anything further */
@@ -1 +1 @@
1
- {"version":3,"file":"Particles.js","sourceRoot":"","sources":["../../../src/two-d/render/Particles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Particles.js","sourceRoot":"","sources":["../../../src/two-d/render/Particles.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export { ColorTransformBatcher, packColorAdd, packTintAdd, NO_COLOR_ADD } from './ColorTransformBatcher.ts';
2
2
  export type { HasColorAdd } from './ColorTransformBatcher.ts';
3
3
  export { TintedSprite, registerColorTransform } from './TintedSprite.ts';
4
+ export { applyImageModifiers, colorShiftMatrix, croppedTexture, imageModifier, parseImagePath, } from './ImageModifiers.ts';
5
+ export type { ImageModifier, ParsedImagePath } from './ImageModifiers.ts';
4
6
  export { AnimatedSprite, Animation } from './AnimatedSprite.ts';
5
7
  export type { AnimationOptions } from './AnimatedSprite.ts';
6
8
  export { SpriteSheet } from './SpriteSheet.ts';
@@ -10,8 +12,8 @@ export { Viewport, splitScreenHalves } from './Viewport.ts';
10
12
  export type { ViewportOptions } from './Viewport.ts';
11
13
  export { createColorBlindnessFilter, COLOR_BLINDNESS_MATRICES } from './ColorBlindness.ts';
12
14
  export type { ColorBlindnessType } from './ColorBlindness.ts';
13
- export { Minimap, newlyRevealed } from './Minimap.ts';
14
- export type { MinimapOptions } from './Minimap.ts';
15
+ export { Minimap, newlyRevealed, minimapCellCenter } from './Minimap.ts';
16
+ export type { MinimapMarker, MinimapOptions } from './Minimap.ts';
15
17
  export { TileMap, EMPTY, tileFrame, tileFrameSheet, tileFrameIndex } from './TileMap.ts';
16
18
  export type { TileMapOptions } from './TileMap.ts';
17
19
  export { LayeredSprite } from './LayeredSprite.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC5G,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACzF,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnG,YAAY,EACX,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EACX,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,UAAU,GACV,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  export { ColorTransformBatcher, packColorAdd, packTintAdd, NO_COLOR_ADD } from './ColorTransformBatcher.js';
2
2
  export { TintedSprite, registerColorTransform } from './TintedSprite.js';
3
+ export { applyImageModifiers, colorShiftMatrix, croppedTexture, imageModifier, parseImagePath, } from './ImageModifiers.js';
3
4
  export { AnimatedSprite, Animation } from './AnimatedSprite.js';
4
5
  export { SpriteSheet } from './SpriteSheet.js';
5
6
  export { Camera, createCamera, snapZoom } from './Camera.js';
6
7
  export { Viewport, splitScreenHalves } from './Viewport.js';
7
8
  export { createColorBlindnessFilter, COLOR_BLINDNESS_MATRICES } from './ColorBlindness.js';
8
- export { Minimap, newlyRevealed } from './Minimap.js';
9
+ export { Minimap, newlyRevealed, minimapCellCenter } from './Minimap.js';
9
10
  export { TileMap, EMPTY, tileFrame, tileFrameSheet, tileFrameIndex } from './TileMap.js';
10
11
  export { LayeredSprite } from './LayeredSprite.js';
11
12
  export { Projectile } from './Projectile.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG5G,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AASnG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG5G,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AASnG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -10,6 +10,11 @@ export interface BarOptions {
10
10
  max?: number;
11
11
  /** the fill's own art, stretched to the filled width; a plain colour rect (the default) when omitted */
12
12
  fillTexture?: Texture2D;
13
+ /**
14
+ * The track's own colour; the theme's panel fill when omitted. Ignored when
15
+ * `backgroundTexture` is given, which owns the track's appearance instead.
16
+ */
17
+ background?: number;
13
18
  /** the track's own art; a plain colour rect (the theme's panel fill) when omitted */
14
19
  backgroundTexture?: Texture2D;
15
20
  /**
@@ -35,6 +40,7 @@ export interface BarOptions {
35
40
  *
36
41
  * hp.setValue(18, 30); // took damage
37
42
  * console.log(hp.value); // 0.6
43
+ * hp.setColor(0xff0000); // and it is bleeding
38
44
  *
39
45
  * hp.resize(160, 8); // the window around it grew
40
46
  * ```
@@ -44,17 +50,30 @@ export declare class Bar extends Container {
44
50
  private fill;
45
51
  private width_;
46
52
  private height_;
47
- private readonly explicitColor;
48
- private color;
53
+ private explicitColor;
54
+ private fillColor;
49
55
  private fraction;
50
56
  private readonly fillTexture?;
51
57
  private readonly backgroundTexture?;
58
+ private readonly background_?;
52
59
  private readonly roundUpToPixel;
53
60
  private readonly themeListener;
54
61
  constructor(options: BarOptions);
55
62
  /** the current fill, 0 to 1 */
56
63
  get value(): number;
57
64
  setValue(value: number, max?: number): void;
65
+ /** the resolved fill colour: the explicit one, or the theme's highlight */
66
+ get color(): number;
67
+ /**
68
+ * Recolours the fill at runtime - the other half of what a bar does on screen, beside
69
+ * `setValue`: a health bar going red as it empties, a boss bar while it bleeds.
70
+ *
71
+ * Counts as explicit, exactly as passing `color` to the constructor does, so a later theme
72
+ * change cannot throw the game's own colour away.
73
+ */
74
+ setColor(color: number): void;
75
+ /** the resolved track colour: `background`, or the theme's panel fill */
76
+ get background(): number;
58
77
  resize(width: number, height: number): void;
59
78
  private draw;
60
79
  destroy(options?: Parameters<Container['destroy']>[0]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Bar.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/Bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,gHAAgH;IAChH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,wGAAwG;IACxG,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAE9B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,GAAI,SAAQ,SAAS;IACjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,IAAI,CAAkB;IAE9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,YAAY,OAAO,EAAE,UAAU,EAiB9B;IAED,+BAA+B;IAC/B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,IAAI,CAGrC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1C;IAED,OAAO,CAAC,IAAI;IA2BH,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAGpE;CACD"}
1
+ {"version":3,"file":"Bar.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/Bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,gHAAgH;IAChH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,wGAAwG;IACxG,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAE9B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,GAAI,SAAQ,SAAS;IACjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,IAAI,CAAkB;IAE9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,YAAY,OAAO,EAAE,UAAU,EAkB9B;IAED,+BAA+B;IAC/B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,IAAI,CAGrC;IAED,2EAA2E;IAC3E,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5B;IAED,yEAAyE;IACzE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1C;IAED,OAAO,CAAC,IAAI;IA2BH,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAGpE;CACD"}
@@ -15,6 +15,7 @@ import { theme, themeChanged } from './theme.js';
15
15
  *
16
16
  * hp.setValue(18, 30); // took damage
17
17
  * console.log(hp.value); // 0.6
18
+ * hp.setColor(0xff0000); // and it is bleeding
18
19
  *
19
20
  * hp.resize(160, 8); // the window around it grew
20
21
  * ```
@@ -28,10 +29,11 @@ export class Bar extends Container {
28
29
  this.width_ = options.width;
29
30
  this.height_ = options.height;
30
31
  this.explicitColor = options.color !== undefined;
31
- this.color = options.color ?? theme().color.textHighlight;
32
+ this.fillColor = options.color ?? theme().color.textHighlight;
32
33
  this.fraction = clamp((options.value ?? 1) / (options.max ?? 1));
33
34
  this.fillTexture = options.fillTexture;
34
35
  this.backgroundTexture = options.backgroundTexture;
36
+ this.background_ = options.background;
35
37
  this.roundUpToPixel = options.roundUpToPixel ?? false;
36
38
  this.addChild(this.track);
37
39
  this.addChild(this.fill);
@@ -46,6 +48,26 @@ export class Bar extends Container {
46
48
  this.fraction = clamp(max > 0 ? value / max : 0);
47
49
  this.draw();
48
50
  }
51
+ /** the resolved fill colour: the explicit one, or the theme's highlight */
52
+ get color() {
53
+ return this.fillColor;
54
+ }
55
+ /**
56
+ * Recolours the fill at runtime - the other half of what a bar does on screen, beside
57
+ * `setValue`: a health bar going red as it empties, a boss bar while it bleeds.
58
+ *
59
+ * Counts as explicit, exactly as passing `color` to the constructor does, so a later theme
60
+ * change cannot throw the game's own colour away.
61
+ */
62
+ setColor(color) {
63
+ this.explicitColor = true;
64
+ this.fillColor = color;
65
+ this.draw();
66
+ }
67
+ /** the resolved track colour: `background`, or the theme's panel fill */
68
+ get background() {
69
+ return this.background_ ?? theme().color.panelFill;
70
+ }
49
71
  resize(width, height) {
50
72
  this.width_ = width;
51
73
  this.height_ = height;
@@ -54,9 +76,9 @@ export class Bar extends Container {
54
76
  draw() {
55
77
  const t = theme();
56
78
  if (!this.explicitColor)
57
- this.color = t.color.textHighlight;
79
+ this.fillColor = t.color.textHighlight;
58
80
  this.track.clear().rect(0, 0, this.width_, this.height_);
59
- this.track.fill(this.backgroundTexture ? { texture: this.backgroundTexture } : { color: t.color.panelFill });
81
+ this.track.fill(this.backgroundTexture ? { texture: this.backgroundTexture } : { color: this.background });
60
82
  this.fill.clear();
61
83
  if (this.fraction > 0) {
62
84
  const rawWidth = this.width_ * this.fraction;
@@ -69,9 +91,9 @@ export class Bar extends Container {
69
91
  //untinted texture is left to its own colours when none was given
70
92
  this.fill.fill(this.fillTexture
71
93
  ? this.explicitColor
72
- ? { texture: this.fillTexture, color: this.color }
94
+ ? { texture: this.fillTexture, color: this.fillColor }
73
95
  : { texture: this.fillTexture }
74
- : { color: this.color });
96
+ : { color: this.fillColor });
75
97
  }
76
98
  }
77
99
  destroy(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"Bar.js","sourceRoot":"","sources":["../../../src/two-d/ui/Bar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Bar.js","sourceRoot":"","sources":["../../../src/two-d/ui/Bar.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,46 @@ export interface FloatingTextOptions {
7
7
  duration?: number;
8
8
  /** total pixels it rises over its lifetime; defaults to 24 */
9
9
  rise?: number;
10
+ /**
11
+ * The fraction of the lifetime the text stays fully opaque before it starts fading, 0 to 1.
12
+ * Defaults to 0 - a straight fade across the whole life, the pre-existing behaviour. `0.5` is
13
+ * the classic damage-number curve: readable for half its time, then gone.
14
+ */
15
+ hold?: number;
10
16
  }
17
+ /**
18
+ * Opacity at normalised progress `t` (0 to 1), with `hold` of that life spent at full opacity.
19
+ *
20
+ * Pulled out of the container and exported so the curve is checked as arithmetic rather than
21
+ * through a rendered label - `Label` needs a DOM to measure text, and the split between what a
22
+ * thing *is* and how it is drawn is the same one `Level`/`TileMap` and `ParticleEmitter`'s
23
+ * textureless mode already draw.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * import { floatingTextAlpha } from '@datamoc/mw_games/two-d/ui';
28
+ * console.log(floatingTextAlpha(0.75, 0.5)); // 0.5
29
+ * ```
30
+ */
31
+ export declare function floatingTextAlpha(t: number, hold: number): number;
32
+ /**
33
+ * The rise at progress `t`, in pixels. Negative: pop-ups travel up the screen.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import { floatingTextRise } from '@datamoc/mw_games/two-d/ui';
38
+ * console.log(floatingTextRise(0.5, 24)); // -12
39
+ * ```
40
+ */
41
+ export declare function floatingTextRise(t: number, rise: number, reduce?: boolean): number;
11
42
  /**
12
43
  * A damage number or a "+1 gold": text that rises and fades over its own lifetime, unlike
13
44
  * `Label`'s job of a static, positioned string. This is animation over a label, timed rather
14
45
  * than laid out - a game positions one instance per pop-up at the world point it should
15
46
  * appear over, then drives it with `update(dt)` the same way `core.Spawner` is `dt`-driven.
16
47
  *
48
+ * Several pop-ups over one world point at once are `FloatingTextStack`'s job, not this class's.
49
+ *
17
50
  * @example
18
51
  * ```ts
19
52
  * import { FloatingText } from '@datamoc/mw_games/two-d/ui';
@@ -21,7 +54,7 @@ export interface FloatingTextOptions {
21
54
  *
22
55
  * declare const worldLayer: Container2D;
23
56
  *
24
- * const popup = new FloatingText({ text: '-12', color: 0xff4444 });
57
+ * const popup = new FloatingText({ text: '-12', color: 0xff4444, hold: 0.5 });
25
58
  * popup.position.set(64, 96);
26
59
  * worldLayer.addChild(popup);
27
60
  *
@@ -32,8 +65,16 @@ export interface FloatingTextOptions {
32
65
  export declare class FloatingText extends Container {
33
66
  private readonly duration;
34
67
  private readonly rise;
68
+ private readonly hold;
69
+ /**
70
+ * The label's own layer: the rise moves this rather than the container itself, so
71
+ * `position` stays exactly where the caller put it. Writing `this.y` in `update` instead
72
+ * would overwrite the world point the pop-up is meant to sit over on its first frame.
73
+ */
74
+ private readonly rising;
35
75
  private elapsed;
36
76
  private done;
77
+ private baseY;
37
78
  constructor(options: FloatingTextOptions);
38
79
  /** true once the animation has finished and this container has removed and destroyed itself */
39
80
  get finished(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingText.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/FloatingText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,IAAI,CAAS;IAErB,YAAY,OAAO,EAAE,mBAAmB,EASvC;IAED,+FAA+F;IAC/F,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,gGAAgG;IAChG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAevB;CACD"}
1
+ {"version":3,"file":"FloatingText.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/FloatingText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM,CAKhF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAE1C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAqB;IAElC,YAAY,OAAO,EAAE,mBAAmB,EAWvC;IAED,+FAA+F;IAC/F,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,gGAAgG;IAChG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAgBvB;CACD"}
@@ -1,12 +1,51 @@
1
1
  import { Container } from 'pixi.js';
2
2
  import { Label } from './Label.js';
3
3
  import { reducedMotion } from '../../core/Motion.js';
4
+ /**
5
+ * Opacity at normalised progress `t` (0 to 1), with `hold` of that life spent at full opacity.
6
+ *
7
+ * Pulled out of the container and exported so the curve is checked as arithmetic rather than
8
+ * through a rendered label - `Label` needs a DOM to measure text, and the split between what a
9
+ * thing *is* and how it is drawn is the same one `Level`/`TileMap` and `ParticleEmitter`'s
10
+ * textureless mode already draw.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { floatingTextAlpha } from '@datamoc/mw_games/two-d/ui';
15
+ * console.log(floatingTextAlpha(0.75, 0.5)); // 0.5
16
+ * ```
17
+ */
18
+ export function floatingTextAlpha(t, hold) {
19
+ if (hold <= 0)
20
+ return 1 - t;
21
+ if (hold >= 1 || t <= hold)
22
+ return 1;
23
+ return 1 - (t - hold) / (1 - hold);
24
+ }
25
+ /**
26
+ * The rise at progress `t`, in pixels. Negative: pop-ups travel up the screen.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { floatingTextRise } from '@datamoc/mw_games/two-d/ui';
31
+ * console.log(floatingTextRise(0.5, 24)); // -12
32
+ * ```
33
+ */
34
+ export function floatingTextRise(t, rise, reduce = false) {
35
+ //`t <= 0` rather than a plain multiply: `-rise * 0` is `-0`, a silly thing to hand a caller
36
+ //or a test that asserts a position of zero
37
+ if (reduce || t <= 0)
38
+ return 0;
39
+ return -rise * t;
40
+ }
4
41
  /**
5
42
  * A damage number or a "+1 gold": text that rises and fades over its own lifetime, unlike
6
43
  * `Label`'s job of a static, positioned string. This is animation over a label, timed rather
7
44
  * than laid out - a game positions one instance per pop-up at the world point it should
8
45
  * appear over, then drives it with `update(dt)` the same way `core.Spawner` is `dt`-driven.
9
46
  *
47
+ * Several pop-ups over one world point at once are `FloatingTextStack`'s job, not this class's.
48
+ *
10
49
  * @example
11
50
  * ```ts
12
51
  * import { FloatingText } from '@datamoc/mw_games/two-d/ui';
@@ -14,7 +53,7 @@ import { reducedMotion } from '../../core/Motion.js';
14
53
  *
15
54
  * declare const worldLayer: Container2D;
16
55
  *
17
- * const popup = new FloatingText({ text: '-12', color: 0xff4444 });
56
+ * const popup = new FloatingText({ text: '-12', color: 0xff4444, hold: 0.5 });
18
57
  * popup.position.set(64, 96);
19
58
  * worldLayer.addChild(popup);
20
59
  *
@@ -25,13 +64,21 @@ import { reducedMotion } from '../../core/Motion.js';
25
64
  export class FloatingText extends Container {
26
65
  constructor(options) {
27
66
  super();
67
+ /**
68
+ * The label's own layer: the rise moves this rather than the container itself, so
69
+ * `position` stays exactly where the caller put it. Writing `this.y` in `update` instead
70
+ * would overwrite the world point the pop-up is meant to sit over on its first frame.
71
+ */
72
+ this.rising = new Container();
28
73
  this.elapsed = 0;
29
74
  this.done = false;
30
75
  this.duration = options.duration ?? 0.8;
31
76
  this.rise = options.rise ?? 24;
77
+ this.hold = Math.min(1, Math.max(0, options.hold ?? 0));
32
78
  const label = new Label({ text: options.text, color: options.color, size: options.size });
33
79
  label.anchor.set(0.5);
34
- this.addChild(label);
80
+ this.rising.addChild(label);
81
+ this.addChild(this.rising);
35
82
  }
36
83
  /** true once the animation has finished and this container has removed and destroyed itself */
37
84
  get finished() {
@@ -45,8 +92,9 @@ export class FloatingText extends Container {
45
92
  const t = this.duration > 0 ? this.elapsed / this.duration : 1;
46
93
  //the rise is peripheral movement beside whatever the player is reading; reduced
47
94
  //motion keeps the fade and drops the travel, so the number still appears and goes
48
- this.y = (reducedMotion() ? 0 : -this.rise) * t;
49
- this.alpha = 1 - t;
95
+ this.baseY ??= this.y;
96
+ this.y = this.baseY + floatingTextRise(t, this.rise, reducedMotion());
97
+ this.alpha = floatingTextAlpha(t, this.hold);
50
98
  if (t >= 1) {
51
99
  this.done = true;
52
100
  this.parent?.removeChild(this);
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingText.js","sourceRoot":"","sources":["../../../src/two-d/ui/FloatingText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAcrD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IAM1C,YAAY,OAA4B;QACvC,KAAK,EAAE,CAAC;QAJD,YAAO,GAAG,CAAC,CAAC;QACZ,SAAI,GAAG,KAAK,CAAC;QAKpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAE/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1F,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,+FAA+F;IAC/F,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,gGAAgG;IAChG,MAAM,CAAC,EAAU;QAChB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QAEtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,gFAAgF;QAChF,kFAAkF;QAClF,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"FloatingText.js","sourceRoot":"","sources":["../../../src/two-d/ui/FloatingText.ts"],"names":[],"mappings":"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"}