@datamoc/mw_games 0.1.1 → 0.2.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 (360) hide show
  1. package/README.md +57 -32
  2. package/dist/actors/Appearances.js +1 -1
  3. package/dist/actors/Aura.d.ts +29 -0
  4. package/dist/actors/Aura.d.ts.map +1 -0
  5. package/dist/actors/Aura.js +69 -0
  6. package/dist/actors/Aura.js.map +1 -0
  7. package/dist/actors/ItemStatusEffect.d.ts +27 -0
  8. package/dist/actors/ItemStatusEffect.d.ts.map +1 -0
  9. package/dist/actors/ItemStatusEffect.js +35 -0
  10. package/dist/actors/ItemStatusEffect.js.map +1 -0
  11. package/dist/actors/Resource.d.ts.map +1 -1
  12. package/dist/actors/Resource.js +13 -5
  13. package/dist/actors/Resource.js.map +1 -1
  14. package/dist/actors/Support.d.ts +32 -0
  15. package/dist/actors/Support.d.ts.map +1 -0
  16. package/dist/actors/Support.js +60 -0
  17. package/dist/actors/Support.js.map +1 -0
  18. package/dist/actors/Traits.d.ts +29 -0
  19. package/dist/actors/Traits.d.ts.map +1 -0
  20. package/dist/actors/Traits.js +21 -0
  21. package/dist/actors/Traits.js.map +1 -0
  22. package/dist/actors/craft.d.ts.map +1 -1
  23. package/dist/actors/craft.js +6 -2
  24. package/dist/actors/craft.js.map +1 -1
  25. package/dist/actors/index.d.ts +8 -0
  26. package/dist/actors/index.d.ts.map +1 -1
  27. package/dist/actors/index.js +4 -0
  28. package/dist/actors/index.js.map +1 -1
  29. package/dist/assets/Streaming.d.ts +40 -0
  30. package/dist/assets/Streaming.d.ts.map +1 -0
  31. package/dist/assets/Streaming.js +79 -0
  32. package/dist/assets/Streaming.js.map +1 -0
  33. package/dist/assets/index.d.ts +14 -1
  34. package/dist/assets/index.d.ts.map +1 -1
  35. package/dist/assets/index.js +19 -0
  36. package/dist/assets/index.js.map +1 -1
  37. package/dist/audio/Captions.d.ts +15 -0
  38. package/dist/audio/Captions.d.ts.map +1 -0
  39. package/dist/audio/Captions.js +4 -0
  40. package/dist/audio/Captions.js.map +1 -0
  41. package/dist/audio/Midi.d.ts +75 -0
  42. package/dist/audio/Midi.d.ts.map +1 -0
  43. package/dist/audio/Midi.js +186 -0
  44. package/dist/audio/Midi.js.map +1 -0
  45. package/dist/audio/Orchestrator.d.ts +40 -0
  46. package/dist/audio/Orchestrator.d.ts.map +1 -0
  47. package/dist/audio/Orchestrator.js +48 -0
  48. package/dist/audio/Orchestrator.js.map +1 -0
  49. package/dist/audio/Sound.d.ts +3 -0
  50. package/dist/audio/Sound.d.ts.map +1 -1
  51. package/dist/audio/Sound.js +4 -0
  52. package/dist/audio/Sound.js.map +1 -1
  53. package/dist/audio/Synth.d.ts +35 -0
  54. package/dist/audio/Synth.d.ts.map +1 -0
  55. package/dist/audio/Synth.js +96 -0
  56. package/dist/audio/Synth.js.map +1 -0
  57. package/dist/audio/index.d.ts +8 -0
  58. package/dist/audio/index.d.ts.map +1 -1
  59. package/dist/audio/index.js +4 -0
  60. package/dist/audio/index.js.map +1 -1
  61. package/dist/battle/Party.d.ts.map +1 -1
  62. package/dist/battle/Party.js +2 -0
  63. package/dist/battle/Party.js.map +1 -1
  64. package/dist/board/Army.d.ts +17 -0
  65. package/dist/board/Army.d.ts.map +1 -0
  66. package/dist/board/Army.js +48 -0
  67. package/dist/board/Army.js.map +1 -0
  68. package/dist/board/Classics.d.ts.map +1 -1
  69. package/dist/board/Classics.js +14 -6
  70. package/dist/board/Classics.js.map +1 -1
  71. package/dist/board/FogOfWar.d.ts +23 -0
  72. package/dist/board/FogOfWar.d.ts.map +1 -0
  73. package/dist/board/FogOfWar.js +40 -0
  74. package/dist/board/FogOfWar.js.map +1 -0
  75. package/dist/board/Tactics.d.ts +2 -0
  76. package/dist/board/Tactics.d.ts.map +1 -1
  77. package/dist/board/Tactics.js +36 -8
  78. package/dist/board/Tactics.js.map +1 -1
  79. package/dist/board/index.d.ts +5 -1
  80. package/dist/board/index.d.ts.map +1 -1
  81. package/dist/board/index.js +3 -1
  82. package/dist/board/index.js.map +1 -1
  83. package/dist/core/Feedback.d.ts +23 -0
  84. package/dist/core/Feedback.d.ts.map +1 -0
  85. package/dist/core/Feedback.js +35 -0
  86. package/dist/core/Feedback.js.map +1 -0
  87. package/dist/core/Game.d.ts +27 -1
  88. package/dist/core/Game.d.ts.map +1 -1
  89. package/dist/core/Game.js +61 -5
  90. package/dist/core/Game.js.map +1 -1
  91. package/dist/core/Input.d.ts +59 -1
  92. package/dist/core/Input.d.ts.map +1 -1
  93. package/dist/core/Input.js +135 -0
  94. package/dist/core/Input.js.map +1 -1
  95. package/dist/core/Loading.d.ts +48 -0
  96. package/dist/core/Loading.d.ts.map +1 -0
  97. package/dist/core/Loading.js +102 -0
  98. package/dist/core/Loading.js.map +1 -0
  99. package/dist/core/News.d.ts +46 -0
  100. package/dist/core/News.d.ts.map +1 -0
  101. package/dist/core/News.js +79 -0
  102. package/dist/core/News.js.map +1 -0
  103. package/dist/core/PlayerInput.d.ts +38 -0
  104. package/dist/core/PlayerInput.d.ts.map +1 -0
  105. package/dist/core/PlayerInput.js +57 -0
  106. package/dist/core/PlayerInput.js.map +1 -0
  107. package/dist/core/Random.d.ts +2 -2
  108. package/dist/core/Random.js +2 -2
  109. package/dist/core/RunHistory.d.ts +43 -0
  110. package/dist/core/RunHistory.d.ts.map +1 -0
  111. package/dist/core/RunHistory.js +41 -0
  112. package/dist/core/RunHistory.js.map +1 -0
  113. package/dist/core/Sanitize.d.ts +56 -0
  114. package/dist/core/Sanitize.d.ts.map +1 -0
  115. package/dist/core/Sanitize.js +87 -0
  116. package/dist/core/Sanitize.js.map +1 -0
  117. package/dist/core/Save.d.ts +31 -7
  118. package/dist/core/Save.d.ts.map +1 -1
  119. package/dist/core/Save.js +56 -0
  120. package/dist/core/Save.js.map +1 -1
  121. package/dist/core/SaveSync.d.ts +26 -0
  122. package/dist/core/SaveSync.d.ts.map +1 -0
  123. package/dist/core/SaveSync.js +52 -0
  124. package/dist/core/SaveSync.js.map +1 -0
  125. package/dist/core/Scramble.d.ts +13 -0
  126. package/dist/core/Scramble.d.ts.map +1 -0
  127. package/dist/core/Scramble.js +44 -0
  128. package/dist/core/Scramble.js.map +1 -0
  129. package/dist/core/Session.d.ts +21 -0
  130. package/dist/core/Session.d.ts.map +1 -0
  131. package/dist/core/Session.js +11 -0
  132. package/dist/core/Session.js.map +1 -0
  133. package/dist/core/Spawner.d.ts +48 -0
  134. package/dist/core/Spawner.d.ts.map +1 -0
  135. package/dist/core/Spawner.js +65 -0
  136. package/dist/core/Spawner.js.map +1 -0
  137. package/dist/core/Tween.d.ts +25 -0
  138. package/dist/core/Tween.d.ts.map +1 -0
  139. package/dist/core/Tween.js +60 -0
  140. package/dist/core/Tween.js.map +1 -0
  141. package/dist/core/UndoHistory.d.ts +37 -0
  142. package/dist/core/UndoHistory.d.ts.map +1 -0
  143. package/dist/core/UndoHistory.js +49 -0
  144. package/dist/core/UndoHistory.js.map +1 -0
  145. package/dist/core/index.d.ts +22 -0
  146. package/dist/core/index.d.ts.map +1 -1
  147. package/dist/core/index.js +12 -0
  148. package/dist/core/index.js.map +1 -1
  149. package/dist/i18n/Fluent.d.ts +7 -0
  150. package/dist/i18n/Fluent.d.ts.map +1 -0
  151. package/dist/i18n/Fluent.js +86 -0
  152. package/dist/i18n/Fluent.js.map +1 -0
  153. package/dist/i18n/index.d.ts +15 -1
  154. package/dist/i18n/index.d.ts.map +1 -1
  155. package/dist/i18n/index.js +17 -2
  156. package/dist/i18n/index.js.map +1 -1
  157. package/dist/index.d.ts +1 -0
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +1 -0
  160. package/dist/index.js.map +1 -1
  161. package/dist/mw_games.global.js +351 -79
  162. package/dist/render/Camera.d.ts +32 -4
  163. package/dist/render/Camera.d.ts.map +1 -1
  164. package/dist/render/Camera.js +58 -23
  165. package/dist/render/Camera.js.map +1 -1
  166. package/dist/render/Capabilities.d.ts +51 -0
  167. package/dist/render/Capabilities.d.ts.map +1 -0
  168. package/dist/render/Capabilities.js +56 -0
  169. package/dist/render/Capabilities.js.map +1 -0
  170. package/dist/render/ColorBlindness.d.ts +16 -0
  171. package/dist/render/ColorBlindness.d.ts.map +1 -0
  172. package/dist/render/ColorBlindness.js +41 -0
  173. package/dist/render/ColorBlindness.js.map +1 -0
  174. package/dist/render/ColorTransformBatcher.d.ts +9 -0
  175. package/dist/render/ColorTransformBatcher.d.ts.map +1 -1
  176. package/dist/render/ColorTransformBatcher.js +131 -19
  177. package/dist/render/ColorTransformBatcher.js.map +1 -1
  178. package/dist/render/Minimap.d.ts +52 -0
  179. package/dist/render/Minimap.d.ts.map +1 -0
  180. package/dist/render/Minimap.js +95 -0
  181. package/dist/render/Minimap.js.map +1 -0
  182. package/dist/render/TileMap.d.ts +2 -2
  183. package/dist/render/TileMap.d.ts.map +1 -1
  184. package/dist/render/TileMap.js +12 -12
  185. package/dist/render/TileMap.js.map +1 -1
  186. package/dist/render/TintedSprite.d.ts +1 -8
  187. package/dist/render/TintedSprite.d.ts.map +1 -1
  188. package/dist/render/TintedSprite.js +3 -111
  189. package/dist/render/TintedSprite.js.map +1 -1
  190. package/dist/render/Viewport.d.ts +46 -0
  191. package/dist/render/Viewport.d.ts.map +1 -0
  192. package/dist/render/Viewport.js +52 -0
  193. package/dist/render/Viewport.js.map +1 -0
  194. package/dist/render/index.d.ts +9 -1
  195. package/dist/render/index.d.ts.map +1 -1
  196. package/dist/render/index.js +5 -1
  197. package/dist/render/index.js.map +1 -1
  198. package/dist/roguelike/FieldOfView.d.ts +1 -1
  199. package/dist/roguelike/Level.d.ts +2 -2
  200. package/dist/roguelike/Level.d.ts.map +1 -1
  201. package/dist/roguelike/Level.js +1 -1
  202. package/dist/roguelike/Level.js.map +1 -1
  203. package/dist/roguelike/Pathfinder.d.ts +3 -3
  204. package/dist/roguelike/Pathfinder.js +2 -2
  205. package/dist/roguelike/Scheduler.d.ts +1 -1
  206. package/dist/roguelike/Scheduler.js +1 -1
  207. package/dist/roguelike/Stealth.d.ts +34 -0
  208. package/dist/roguelike/Stealth.d.ts.map +1 -0
  209. package/dist/roguelike/Stealth.js +35 -0
  210. package/dist/roguelike/Stealth.js.map +1 -0
  211. package/dist/roguelike/generate.d.ts +3 -3
  212. package/dist/roguelike/generate.js +1 -1
  213. package/dist/roguelike/generate.js.map +1 -1
  214. package/dist/roguelike/index.d.ts +2 -0
  215. package/dist/roguelike/index.d.ts.map +1 -1
  216. package/dist/roguelike/index.js +1 -0
  217. package/dist/roguelike/index.js.map +1 -1
  218. package/dist/rpg/Collision.d.ts +42 -0
  219. package/dist/rpg/Collision.d.ts.map +1 -0
  220. package/dist/rpg/Collision.js +77 -0
  221. package/dist/rpg/Collision.js.map +1 -0
  222. package/dist/rpg/FreeMover.d.ts +45 -0
  223. package/dist/rpg/FreeMover.d.ts.map +1 -0
  224. package/dist/rpg/FreeMover.js +68 -0
  225. package/dist/rpg/FreeMover.js.map +1 -0
  226. package/dist/rpg/Marshal.d.ts +65 -0
  227. package/dist/rpg/Marshal.d.ts.map +1 -0
  228. package/dist/rpg/Marshal.js +393 -0
  229. package/dist/rpg/Marshal.js.map +1 -0
  230. package/dist/rpg/Quest.d.ts +41 -0
  231. package/dist/rpg/Quest.d.ts.map +1 -1
  232. package/dist/rpg/Quest.js +39 -6
  233. package/dist/rpg/Quest.js.map +1 -1
  234. package/dist/rpg/index.d.ts +7 -1
  235. package/dist/rpg/index.d.ts.map +1 -1
  236. package/dist/rpg/index.js +3 -0
  237. package/dist/rpg/index.js.map +1 -1
  238. package/dist/stage/DialogueStage.d.ts +2 -3
  239. package/dist/stage/DialogueStage.d.ts.map +1 -1
  240. package/dist/stage/DialogueStage.js +21 -30
  241. package/dist/stage/DialogueStage.js.map +1 -1
  242. package/dist/stage/index.d.ts +1 -1
  243. package/dist/stage/index.d.ts.map +1 -1
  244. package/dist/stage/script.d.ts +32 -3
  245. package/dist/stage/script.d.ts.map +1 -1
  246. package/dist/stage/script.js +0 -0
  247. package/dist/stage/script.js.map +1 -1
  248. package/dist/three-d/Character3D.d.ts +48 -0
  249. package/dist/three-d/Character3D.d.ts.map +1 -0
  250. package/dist/three-d/Character3D.js +96 -0
  251. package/dist/three-d/Character3D.js.map +1 -0
  252. package/dist/three-d/Engine3D.d.ts +23 -0
  253. package/dist/three-d/Engine3D.d.ts.map +1 -0
  254. package/dist/three-d/Engine3D.js +45 -0
  255. package/dist/three-d/Engine3D.js.map +1 -0
  256. package/dist/three-d/Grid.d.ts +14 -0
  257. package/dist/three-d/Grid.d.ts.map +1 -0
  258. package/dist/three-d/Grid.js +13 -0
  259. package/dist/three-d/Grid.js.map +1 -0
  260. package/dist/three-d/Heightmap.d.ts +35 -0
  261. package/dist/three-d/Heightmap.d.ts.map +1 -0
  262. package/dist/three-d/Heightmap.js +29 -0
  263. package/dist/three-d/Heightmap.js.map +1 -0
  264. package/dist/three-d/Models.d.ts +12 -0
  265. package/dist/three-d/Models.d.ts.map +1 -0
  266. package/dist/three-d/Models.js +14 -0
  267. package/dist/three-d/Models.js.map +1 -0
  268. package/dist/three-d/TileGrid3D.d.ts +21 -0
  269. package/dist/three-d/TileGrid3D.d.ts.map +1 -0
  270. package/dist/three-d/TileGrid3D.js +65 -0
  271. package/dist/three-d/TileGrid3D.js.map +1 -0
  272. package/dist/three-d/Vox.d.ts +24 -0
  273. package/dist/three-d/Vox.d.ts.map +1 -0
  274. package/dist/three-d/Vox.js +93 -0
  275. package/dist/three-d/Vox.js.map +1 -0
  276. package/dist/three-d/index.d.ts +13 -0
  277. package/dist/three-d/index.d.ts.map +1 -0
  278. package/dist/three-d/index.js +7 -0
  279. package/dist/three-d/index.js.map +1 -0
  280. package/dist/ui/Bar.d.ts +49 -0
  281. package/dist/ui/Bar.d.ts.map +1 -0
  282. package/dist/ui/Bar.js +70 -0
  283. package/dist/ui/Bar.js.map +1 -0
  284. package/dist/ui/BitmapLabel.d.ts +42 -0
  285. package/dist/ui/BitmapLabel.d.ts.map +1 -0
  286. package/dist/ui/BitmapLabel.js +59 -0
  287. package/dist/ui/BitmapLabel.js.map +1 -0
  288. package/dist/ui/Button.d.ts +52 -0
  289. package/dist/ui/Button.d.ts.map +1 -0
  290. package/dist/ui/Button.js +147 -0
  291. package/dist/ui/Button.js.map +1 -0
  292. package/dist/ui/FloatingText.d.ts +28 -0
  293. package/dist/ui/FloatingText.d.ts.map +1 -0
  294. package/dist/ui/FloatingText.js +39 -0
  295. package/dist/ui/FloatingText.js.map +1 -0
  296. package/dist/ui/HelpScreen.d.ts +29 -0
  297. package/dist/ui/HelpScreen.d.ts.map +1 -0
  298. package/dist/ui/HelpScreen.js +39 -0
  299. package/dist/ui/HelpScreen.js.map +1 -0
  300. package/dist/ui/IconGrid.d.ts +8 -0
  301. package/dist/ui/IconGrid.d.ts.map +1 -1
  302. package/dist/ui/IconGrid.js +27 -1
  303. package/dist/ui/IconGrid.js.map +1 -1
  304. package/dist/ui/Label.d.ts +10 -1
  305. package/dist/ui/Label.d.ts.map +1 -1
  306. package/dist/ui/Label.js +25 -2
  307. package/dist/ui/Label.js.map +1 -1
  308. package/dist/ui/ListView.d.ts +12 -1
  309. package/dist/ui/ListView.d.ts.map +1 -1
  310. package/dist/ui/ListView.js +56 -2
  311. package/dist/ui/ListView.js.map +1 -1
  312. package/dist/ui/LoadingScreen.d.ts +31 -0
  313. package/dist/ui/LoadingScreen.d.ts.map +1 -0
  314. package/dist/ui/LoadingScreen.js +60 -0
  315. package/dist/ui/LoadingScreen.js.map +1 -0
  316. package/dist/ui/MessageBox.d.ts +27 -1
  317. package/dist/ui/MessageBox.d.ts.map +1 -1
  318. package/dist/ui/MessageBox.js +63 -14
  319. package/dist/ui/MessageBox.js.map +1 -1
  320. package/dist/ui/RebindScreen.d.ts +55 -0
  321. package/dist/ui/RebindScreen.d.ts.map +1 -0
  322. package/dist/ui/RebindScreen.js +114 -0
  323. package/dist/ui/RebindScreen.js.map +1 -0
  324. package/dist/ui/Toast.d.ts +44 -0
  325. package/dist/ui/Toast.d.ts.map +1 -0
  326. package/dist/ui/Toast.js +89 -0
  327. package/dist/ui/Toast.js.map +1 -0
  328. package/dist/ui/VerticalLabel.d.ts +5 -0
  329. package/dist/ui/VerticalLabel.d.ts.map +1 -1
  330. package/dist/ui/VerticalLabel.js +18 -7
  331. package/dist/ui/VerticalLabel.js.map +1 -1
  332. package/dist/ui/Window.d.ts +6 -0
  333. package/dist/ui/Window.d.ts.map +1 -1
  334. package/dist/ui/Window.js +16 -1
  335. package/dist/ui/Window.js.map +1 -1
  336. package/dist/ui/WindowStack.d.ts +1 -0
  337. package/dist/ui/WindowStack.d.ts.map +1 -1
  338. package/dist/ui/WindowStack.js +4 -1
  339. package/dist/ui/WindowStack.js.map +1 -1
  340. package/dist/ui/index.d.ts +17 -1
  341. package/dist/ui/index.d.ts.map +1 -1
  342. package/dist/ui/index.js +9 -1
  343. package/dist/ui/index.js.map +1 -1
  344. package/dist/ui/theme.d.ts +21 -0
  345. package/dist/ui/theme.d.ts.map +1 -1
  346. package/dist/ui/theme.js +42 -0
  347. package/dist/ui/theme.js.map +1 -1
  348. package/dist/version.d.ts +13 -0
  349. package/dist/version.d.ts.map +1 -0
  350. package/dist/version.js +13 -0
  351. package/dist/version.js.map +1 -0
  352. package/dist/world/Environment.d.ts +35 -0
  353. package/dist/world/Environment.d.ts.map +1 -0
  354. package/dist/world/Environment.js +55 -0
  355. package/dist/world/Environment.js.map +1 -0
  356. package/dist/world/index.d.ts +2 -0
  357. package/dist/world/index.d.ts.map +1 -1
  358. package/dist/world/index.js +1 -0
  359. package/dist/world/index.js.map +1 -1
  360. package/package.json +40 -4
@@ -0,0 +1,52 @@
1
+ import { Container } from 'pixi.js';
2
+ import { Signal } from '../core/Signal.ts';
3
+ export interface ButtonOptions {
4
+ width: number;
5
+ height: number;
6
+ /** the button's caption; omit for an icon-only button, the shape a title screen's
7
+ * rankings/badges/settings buttons usually take */
8
+ text?: string;
9
+ /** drawn to one side of the text, or centred alone if `text` is omitted */
10
+ icon?: Container;
11
+ disabled?: boolean;
12
+ onClick?: () => void;
13
+ }
14
+ /**
15
+ * A clickable region with idle/hover/pressed/disabled states, a label, an icon, or both.
16
+ *
17
+ * Draws over the same `NinePatch`/theme machinery `Window` already draws its chrome from -
18
+ * a panel texture if the theme has one, a flat rounded rectangle otherwise - so a button
19
+ * looks like it belongs to the same interface without a game supplying separate art for it.
20
+ *
21
+ * `icon` alone (no `text`) is the icon-only button a title screen commonly reaches for -
22
+ * rankings, badges, settings - where a caption would only repeat what the icon already says.
23
+ */
24
+ export declare class Button extends Container {
25
+ readonly onClick: Signal<void>;
26
+ private background;
27
+ private labelText;
28
+ private icon;
29
+ private width_;
30
+ private height_;
31
+ private state;
32
+ private disabled_;
33
+ private readonly themeListener;
34
+ constructor(options: ButtonOptions);
35
+ /** live-resize the button, for a caller whose own layout reflows on window resize rather
36
+ * than rebuilding buttons from scratch (`Window`'s own constructor-only sizing is fine
37
+ * for a fixed dialog; a title screen's responsive row of buttons is not) */
38
+ resize(width: number, height: number): void;
39
+ setText(text: string | undefined): void;
40
+ get disabled(): boolean;
41
+ setDisabled(disabled: boolean): void;
42
+ private setState;
43
+ /**
44
+ * Icon-only centres the icon; icon-plus-text sits the icon to the reading-start side
45
+ * (left in ltr, right in rtl) with the label following it, both vertically centred -
46
+ * the same icon-then-text arrangement `ListView`'s own rows already use.
47
+ */
48
+ private layoutContent;
49
+ private draw;
50
+ destroy(options?: Parameters<Container['destroy']>[0]): void;
51
+ }
52
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/ui/Button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAK3C,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf;uDACmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAID;;;;;;;;;GASG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACpC,QAAQ,CAAC,OAAO,eAAsB;IAEtC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,IAAI,CAAmB;IAE/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,YAAY,OAAO,EAAE,aAAa,EAgCjC;IAED;;gFAE4E;IAC5E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1C;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAWtC;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAGnC;IAED,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,IAAI;IA+BH,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAGpE;CACD"}
@@ -0,0 +1,147 @@
1
+ import { Container, Graphics } from 'pixi.js';
2
+ import { Signal } from '../core/Signal.js';
3
+ import { NinePatch } from './NinePatch.js';
4
+ import { Label } from './Label.js';
5
+ import { theme, themeChanged } from './theme.js';
6
+ /**
7
+ * A clickable region with idle/hover/pressed/disabled states, a label, an icon, or both.
8
+ *
9
+ * Draws over the same `NinePatch`/theme machinery `Window` already draws its chrome from -
10
+ * a panel texture if the theme has one, a flat rounded rectangle otherwise - so a button
11
+ * looks like it belongs to the same interface without a game supplying separate art for it.
12
+ *
13
+ * `icon` alone (no `text`) is the icon-only button a title screen commonly reaches for -
14
+ * rankings, badges, settings - where a caption would only repeat what the icon already says.
15
+ */
16
+ export class Button extends Container {
17
+ constructor(options) {
18
+ super();
19
+ this.onClick = new Signal();
20
+ this.state = 'idle';
21
+ this.themeListener = () => this.draw();
22
+ this.width_ = options.width;
23
+ this.height_ = options.height;
24
+ this.disabled_ = options.disabled ?? false;
25
+ const t = theme();
26
+ this.background = t.panel ? new NinePatch(t.panel, { border: t.panelBorder }) : new Graphics();
27
+ this.addChild(this.background);
28
+ this.icon = options.icon ?? null;
29
+ if (this.icon)
30
+ this.addChild(this.icon);
31
+ this.labelText = options.text !== undefined ? new Label({ text: options.text, align: 'center' }) : null;
32
+ if (this.labelText)
33
+ this.addChild(this.labelText);
34
+ if (options.onClick)
35
+ this.onClick.add(options.onClick);
36
+ this.eventMode = 'static';
37
+ this.on('pointerover', () => this.setState('hover'));
38
+ this.on('pointerout', () => this.setState('idle'));
39
+ this.on('pointerdown', () => this.setState('pressed'));
40
+ this.on('pointerup', () => {
41
+ const wasPressed = this.state === 'pressed';
42
+ this.setState('hover');
43
+ if (wasPressed)
44
+ this.onClick.dispatch();
45
+ });
46
+ this.on('pointerupoutside', () => this.setState('idle'));
47
+ this.setState(this.disabled_ ? 'disabled' : 'idle');
48
+ themeChanged.add(this.themeListener);
49
+ }
50
+ /** live-resize the button, for a caller whose own layout reflows on window resize rather
51
+ * than rebuilding buttons from scratch (`Window`'s own constructor-only sizing is fine
52
+ * for a fixed dialog; a title screen's responsive row of buttons is not) */
53
+ resize(width, height) {
54
+ this.width_ = width;
55
+ this.height_ = height;
56
+ this.draw();
57
+ }
58
+ setText(text) {
59
+ if (text === undefined) {
60
+ this.labelText?.destroy();
61
+ this.labelText = null;
62
+ }
63
+ else if (this.labelText) {
64
+ this.labelText.setText(text);
65
+ }
66
+ else {
67
+ this.labelText = new Label({ text, align: 'center' });
68
+ this.addChild(this.labelText);
69
+ }
70
+ this.layoutContent();
71
+ }
72
+ get disabled() {
73
+ return this.disabled_;
74
+ }
75
+ setDisabled(disabled) {
76
+ this.disabled_ = disabled;
77
+ this.setState(disabled ? 'disabled' : 'idle');
78
+ }
79
+ setState(state) {
80
+ if (this.disabled_ && state !== 'disabled')
81
+ return;
82
+ this.state = state;
83
+ this.cursor = this.disabled_ ? 'default' : 'pointer';
84
+ this.eventMode = this.disabled_ ? 'none' : 'static';
85
+ this.draw();
86
+ }
87
+ /**
88
+ * Icon-only centres the icon; icon-plus-text sits the icon to the reading-start side
89
+ * (left in ltr, right in rtl) with the label following it, both vertically centred -
90
+ * the same icon-then-text arrangement `ListView`'s own rows already use.
91
+ */
92
+ layoutContent() {
93
+ const rtl = theme().direction === 'rtl';
94
+ if (this.icon && !this.labelText) {
95
+ this.icon.x = Math.round((this.width_ - this.icon.width) / 2);
96
+ this.icon.y = Math.round((this.height_ - this.icon.height) / 2);
97
+ return;
98
+ }
99
+ if (this.icon && this.labelText) {
100
+ const spacing = theme().spacing;
101
+ const contentWidth = this.icon.width + spacing + this.labelText.width;
102
+ const start = Math.round((this.width_ - contentWidth) / 2);
103
+ this.icon.x = rtl ? start + this.labelText.width + spacing : start;
104
+ this.icon.y = Math.round((this.height_ - this.icon.height) / 2);
105
+ this.labelText.x = rtl ? start : start + this.icon.width + spacing;
106
+ this.labelText.y = Math.round((this.height_ - this.labelText.height) / 2);
107
+ return;
108
+ }
109
+ if (this.labelText) {
110
+ this.labelText.x = Math.round((this.width_ - this.labelText.width) / 2);
111
+ this.labelText.y = Math.round((this.height_ - this.labelText.height) / 2);
112
+ }
113
+ }
114
+ draw() {
115
+ const t = theme();
116
+ //idle/hover/pressed read as three brightness steps of the same panel rather than three
117
+ //separate textures, which a game without dedicated button art still gets for free
118
+ const tint = this.state === 'pressed'
119
+ ? 0x999999
120
+ : this.state === 'hover'
121
+ ? 0xdddddd
122
+ : this.state === 'disabled'
123
+ ? 0x777777
124
+ : 0xffffff;
125
+ if (this.background instanceof NinePatch) {
126
+ this.background.resize(this.width_, this.height_);
127
+ this.background.tint = tint;
128
+ }
129
+ else {
130
+ const fill = this.state === 'pressed' ? t.color.selection : t.color.panelFill;
131
+ this.background
132
+ .clear()
133
+ .roundRect(0, 0, this.width_, this.height_, 4)
134
+ .fill({ color: fill, alpha: this.state === 'disabled' ? 0.5 : 1 })
135
+ .stroke({ color: t.color.panelBorder, width: 1 });
136
+ }
137
+ this.labelText?.setColor(this.disabled_ ? t.color.textDim : t.color.text);
138
+ if (this.icon)
139
+ this.icon.alpha = this.disabled_ ? 0.4 : 1;
140
+ this.layoutContent();
141
+ }
142
+ destroy(options) {
143
+ themeChanged.remove(this.themeListener);
144
+ super.destroy(options);
145
+ }
146
+ }
147
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/ui/Button.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Container } from 'pixi.js';
2
+ export interface FloatingTextOptions {
3
+ text: string;
4
+ color?: number;
5
+ size?: number;
6
+ /** seconds it takes to fully rise and fade; defaults to 0.8 */
7
+ duration?: number;
8
+ /** total pixels it rises over its lifetime; defaults to 24 */
9
+ rise?: number;
10
+ }
11
+ /**
12
+ * A damage number or a "+1 gold": text that rises and fades over its own lifetime, unlike
13
+ * `Label`'s job of a static, positioned string. This is animation over a label, timed rather
14
+ * than laid out - a game positions one instance per pop-up at the world point it should
15
+ * appear over, then drives it with `update(dt)` the same way `core.Spawner` is `dt`-driven.
16
+ */
17
+ export declare class FloatingText extends Container {
18
+ private readonly duration;
19
+ private readonly rise;
20
+ private elapsed;
21
+ private done;
22
+ constructor(options: FloatingTextOptions);
23
+ /** true once the animation has finished and this container has removed and destroyed itself */
24
+ get finished(): boolean;
25
+ /** advances the rise/fade; once complete, removes itself from its parent and destroys itself */
26
+ update(dt: number): void;
27
+ }
28
+ //# sourceMappingURL=FloatingText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingText.d.ts","sourceRoot":"","sources":["../../src/ui/FloatingText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,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;;;;;GAKG;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,CAavB;CACD"}
@@ -0,0 +1,39 @@
1
+ import { Container } from 'pixi.js';
2
+ import { Label } from './Label.js';
3
+ /**
4
+ * A damage number or a "+1 gold": text that rises and fades over its own lifetime, unlike
5
+ * `Label`'s job of a static, positioned string. This is animation over a label, timed rather
6
+ * than laid out - a game positions one instance per pop-up at the world point it should
7
+ * appear over, then drives it with `update(dt)` the same way `core.Spawner` is `dt`-driven.
8
+ */
9
+ export class FloatingText extends Container {
10
+ constructor(options) {
11
+ super();
12
+ this.elapsed = 0;
13
+ this.done = false;
14
+ this.duration = options.duration ?? 0.8;
15
+ this.rise = options.rise ?? 24;
16
+ const label = new Label({ text: options.text, color: options.color, size: options.size });
17
+ label.anchor.set(0.5);
18
+ this.addChild(label);
19
+ }
20
+ /** true once the animation has finished and this container has removed and destroyed itself */
21
+ get finished() {
22
+ return this.done;
23
+ }
24
+ /** advances the rise/fade; once complete, removes itself from its parent and destroys itself */
25
+ update(dt) {
26
+ if (this.done)
27
+ return;
28
+ this.elapsed = Math.min(this.duration, this.elapsed + dt);
29
+ const t = this.duration > 0 ? this.elapsed / this.duration : 1;
30
+ this.y = -this.rise * t;
31
+ this.alpha = 1 - t;
32
+ if (t >= 1) {
33
+ this.done = true;
34
+ this.parent?.removeChild(this);
35
+ this.destroy({ children: true });
36
+ }
37
+ }
38
+ }
39
+ //# sourceMappingURL=FloatingText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingText.js","sourceRoot":"","sources":["../../src/ui/FloatingText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAcnC;;;;;GAKG;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,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACxB,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"}
@@ -0,0 +1,29 @@
1
+ import { Container } from 'pixi.js';
2
+ import type { Action } from '../core/Input.ts';
3
+ export interface HelpTopic {
4
+ title: string;
5
+ body: string;
6
+ }
7
+ export interface HelpScreenOptions {
8
+ width: number;
9
+ height: number;
10
+ topics: readonly HelpTopic[];
11
+ /** how much of `width` the topic list takes; the body fills the rest. Defaults to a third */
12
+ listWidth?: number;
13
+ }
14
+ /**
15
+ * A controls-reference or FAQ screen: a list of topics and the body of whichever one is
16
+ * highlighted, over the same `ListView`/`Label` a game already builds every other menu
17
+ * from - a recipe, not a new primitive, the way `RebindScreen` composes `ListView` rather
18
+ * than inventing its own row widget.
19
+ */
20
+ export declare class HelpScreen extends Container {
21
+ private list;
22
+ private body;
23
+ private topics;
24
+ constructor(options: HelpScreenOptions);
25
+ private showBody;
26
+ /** @returns true when the action was used */
27
+ handleAction(action: Action): boolean;
28
+ }
29
+ //# sourceMappingURL=HelpScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelpScreen.d.ts","sourceRoot":"","sources":["../../src/ui/HelpScreen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK/C,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IAE7B,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,SAAS;IACxC,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,MAAM,CAAuB;IAErC,YAAY,OAAO,EAAE,iBAAiB,EAqBrC;IAED,OAAO,CAAC,QAAQ;IAIhB,6CAA6C;IAC7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpC;CACD"}
@@ -0,0 +1,39 @@
1
+ import { Container } from 'pixi.js';
2
+ import { ListView } from './ListView.js';
3
+ import { Label } from './Label.js';
4
+ import { theme } from './theme.js';
5
+ /**
6
+ * A controls-reference or FAQ screen: a list of topics and the body of whichever one is
7
+ * highlighted, over the same `ListView`/`Label` a game already builds every other menu
8
+ * from - a recipe, not a new primitive, the way `RebindScreen` composes `ListView` rather
9
+ * than inventing its own row widget.
10
+ */
11
+ export class HelpScreen extends Container {
12
+ constructor(options) {
13
+ super();
14
+ this.topics = options.topics;
15
+ const listWidth = options.listWidth ?? Math.floor(options.width / 3);
16
+ const bodyLeft = listWidth + theme().spacing;
17
+ this.list = new ListView({
18
+ width: listWidth,
19
+ height: options.height,
20
+ items: this.topics.map((topic) => ({ text: topic.title })),
21
+ onHighlight: (_item, index) => this.showBody(index),
22
+ onSelect: (_item, index) => this.showBody(index),
23
+ });
24
+ this.addChild(this.list);
25
+ this.body = new Label({ wrapWidth: options.width - bodyLeft });
26
+ this.body.x = bodyLeft;
27
+ this.addChild(this.body);
28
+ if (this.topics.length > 0)
29
+ this.showBody(this.list.selectedIndex);
30
+ }
31
+ showBody(index) {
32
+ this.body.setText(this.topics[index]?.body ?? '');
33
+ }
34
+ /** @returns true when the action was used */
35
+ handleAction(action) {
36
+ return this.list.handleAction(action);
37
+ }
38
+ }
39
+ //# sourceMappingURL=HelpScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelpScreen.js","sourceRoot":"","sources":["../../src/ui/HelpScreen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAgBnC;;;;;GAKG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IAKxC,YAAY,OAA0B;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC;QAE7C,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC;YACxB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1D,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpE,CAAC;IAEO,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,6CAA6C;IAC7C,YAAY,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CACD"}
@@ -62,7 +62,15 @@ export declare class IconGrid extends Container {
62
62
  onHighlight: ((item: IconGridItem, index: number) => void) | null;
63
63
  onQuickslot: ((item: IconGridItem, index: number) => void) | null;
64
64
  onReorder: ((fromIndex: number, toIndex: number) => void) | null;
65
+ /**
66
+ * Recolours quantity badges in place rather than through `setItems`: an item's `icon` is
67
+ * a `Container` the caller owns, and `setItems`'s teardown destroys a cell's children on
68
+ * the way out (see `swapCells`'s own doc comment) - routing a restyle through it would
69
+ * destroy the very icons still referenced by `this.items`.
70
+ */
71
+ private readonly themeListener;
65
72
  constructor(options: IconGridOptions);
73
+ destroy(options?: Parameters<Container['destroy']>[0]): void;
66
74
  private drawMask;
67
75
  get visibleRows(): number;
68
76
  get rows(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"IconGrid.d.ts","sourceRoot":"","sources":["../../src/ui/IconGrid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IconGrid.d.ts","sourceRoot":"","sources":["../../src/ui/IconGrid.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Container, Graphics } from 'pixi.js';
2
2
  import { Label } from './Label.js';
3
- import { theme } from './theme.js';
3
+ import { theme, themeChanged } from './theme.js';
4
4
  /**
5
5
  * A grid of icons, driven by the keyboard or the pointer.
6
6
  *
@@ -29,6 +29,22 @@ export class IconGrid extends Container {
29
29
  this.pickedUp = null;
30
30
  this.pressedIndex = null;
31
31
  this.pressTimer = 0;
32
+ /**
33
+ * Recolours quantity badges in place rather than through `setItems`: an item's `icon` is
34
+ * a `Container` the caller owns, and `setItems`'s teardown destroys a cell's children on
35
+ * the way out (see `swapCells`'s own doc comment) - routing a restyle through it would
36
+ * destroy the very icons still referenced by `this.items`.
37
+ */
38
+ this.themeListener = () => {
39
+ const t = theme();
40
+ this.items.forEach((item, i) => {
41
+ if ((item.quantity ?? 1) <= 1)
42
+ return;
43
+ const badge = this.cells[i]?.children.find((child) => child instanceof Label);
44
+ badge?.setColor(t.color.textHighlight);
45
+ });
46
+ this.refresh();
47
+ };
32
48
  this.viewWidth = options.width;
33
49
  this.viewHeight = options.height;
34
50
  this.columns = Math.max(1, options.columns);
@@ -45,7 +61,17 @@ export class IconGrid extends Container {
45
61
  this.addChild(this.mask_);
46
62
  this.cellsLayer.mask = this.mask_;
47
63
  this.drawMask();
64
+ //a masked grid with no click support (before this session) or wheel support was
65
+ //otherwise unreachable past the visible rows without the keyboard - the same gap
66
+ //`ListView`'s own wheel handling closed there, one row per notch here too
67
+ this.eventMode = 'static';
68
+ this.on('wheel', (event) => this.move(0, event.deltaY > 0 ? 1 : -1));
48
69
  this.setItems(options.items ?? []);
70
+ themeChanged.add(this.themeListener);
71
+ }
72
+ destroy(options) {
73
+ themeChanged.remove(this.themeListener);
74
+ super.destroy(options);
49
75
  }
50
76
  drawMask() {
51
77
  this.mask_.clear().rect(0, 0, this.viewWidth, this.viewHeight).fill({ color: 0xffffff });
@@ -1 +1 @@
1
- {"version":3,"file":"IconGrid.js","sourceRoot":"","sources":["../../src/ui/IconGrid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IconGrid.js","sourceRoot":"","sources":["../../src/ui/IconGrid.ts"],"names":[],"mappings":"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"}
@@ -13,14 +13,23 @@ export interface LabelOptions {
13
13
  *
14
14
  * This is a thin wrapper over Pixi's `Text`, and its job is to stop every call site from
15
15
  * repeating a style object. Pixi renders text to its own texture, so changing the string
16
- * costs a re-render — cheap enough for a label, wasteful for something updated every
16
+ * costs a re-render: cheap enough for a label, wasteful for something updated every
17
17
  * frame, where a value that only changes on whole numbers should be guarded.
18
18
  */
19
19
  export declare class Label extends Text {
20
+ private readonly opts;
21
+ private readonly themeListener;
20
22
  constructor(options?: LabelOptions | string);
21
23
  /** changes the colour without rebuilding the style object */
22
24
  setColor(color: number): void;
23
25
  /** avoids the re-render when the text has not actually changed */
24
26
  setText(value: string): void;
27
+ /**
28
+ * Reapplies whichever style fields were never given an explicit option, so an
29
+ * explicit `color`/`size` a game passed in survives a theme change untouched while
30
+ * anything left to the theme's own defaults picks up the new one.
31
+ */
32
+ private restyle;
33
+ destroy(options?: Parameters<Text['destroy']>[0]): void;
25
34
  }
26
35
  //# sourceMappingURL=Label.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../src/ui/Label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAa,MAAM,SAAS,CAAC;AAG1C,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;GAOG;AACH,qBAAa,KAAM,SAAQ,IAAI;IAC9B,YAAY,OAAO,GAAE,YAAY,GAAG,MAAW,EAmB9C;IAED,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,kEAAkE;IAClE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE3B;CACD"}
1
+ {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../src/ui/Label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAa,MAAM,SAAS,CAAC;AAG1C,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;GAOG;AACH,qBAAa,KAAM,SAAQ,IAAI;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAE/D,YAAY,OAAO,GAAE,YAAY,GAAG,MAAW,EAsB9C;IAED,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,kEAAkE;IAClE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE3B;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAUN,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAG/D;CACD"}
package/dist/ui/Label.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { Text, TextStyle } from 'pixi.js';
2
- import { theme } from './theme.js';
2
+ import { theme, themeChanged } from './theme.js';
3
3
  /**
4
4
  * A piece of text, styled from the theme.
5
5
  *
6
6
  * This is a thin wrapper over Pixi's `Text`, and its job is to stop every call site from
7
7
  * repeating a style object. Pixi renders text to its own texture, so changing the string
8
- * costs a re-render — cheap enough for a label, wasteful for something updated every
8
+ * costs a re-render: cheap enough for a label, wasteful for something updated every
9
9
  * frame, where a value that only changes on whole numbers should be guarded.
10
10
  */
11
11
  export class Label extends Text {
@@ -27,6 +27,9 @@ export class Label extends Text {
27
27
  breakWords: true,
28
28
  }),
29
29
  });
30
+ this.themeListener = (t) => this.restyle(t);
31
+ this.opts = opts;
32
+ themeChanged.add(this.themeListener);
30
33
  }
31
34
  /** changes the colour without rebuilding the style object */
32
35
  setColor(color) {
@@ -37,5 +40,25 @@ export class Label extends Text {
37
40
  if (this.text !== value)
38
41
  this.text = value;
39
42
  }
43
+ /**
44
+ * Reapplies whichever style fields were never given an explicit option, so an
45
+ * explicit `color`/`size` a game passed in survives a theme change untouched while
46
+ * anything left to the theme's own defaults picks up the new one.
47
+ */
48
+ restyle(t) {
49
+ this.style.fontFamily = t.font.family;
50
+ if (this.opts.color === undefined)
51
+ this.style.fill = t.color.text;
52
+ if (this.opts.size === undefined) {
53
+ this.style.fontSize = t.font.size;
54
+ this.style.lineHeight = t.font.size * t.font.lineHeight;
55
+ }
56
+ if (this.opts.align === undefined)
57
+ this.style.align = t.direction === 'rtl' ? 'right' : 'left';
58
+ }
59
+ destroy(options) {
60
+ themeChanged.remove(this.themeListener);
61
+ super.destroy(options);
62
+ }
40
63
  }
41
64
  //# sourceMappingURL=Label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Label.js","sourceRoot":"","sources":["../../src/ui/Label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAYnC;;;;;;;GAOG;AACH,MAAM,OAAO,KAAM,SAAQ,IAAI;IAC9B,YAAY,OAAO,GAA0B,EAAE;QAC9C,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;QAElB,KAAK,CAAC;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,IAAI,SAAS,CAAC;gBACpB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;gBACzB,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;gBAClC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBACzC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI;gBAChC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU;gBAC1D,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/D,QAAQ,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS;gBACtC,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;gBAClC,4EAA4E;gBAC5E,UAAU,EAAE,IAAI;aAChB,CAAC;SACF,CAAC,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,QAAQ,CAAC,KAAa;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,kEAAkE;IAClE,OAAO,CAAC,KAAa;QACpB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IAC5C,CAAC;CACD"}
1
+ {"version":3,"file":"Label.js","sourceRoot":"","sources":["../../src/ui/Label.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export interface ListViewOptions {
24
24
  *
25
25
  * This is the workhorse of an inventory-heavy game: bags, spell lists, shop stock,
26
26
  * dialogue choices, save slots. It scrolls by keeping the highlight in view rather than by
27
- * pixel offset, which is what makes it feel right with a keyboard — the list moves only
27
+ * pixel offset, which is what makes it feel right with a keyboard: the list moves only
28
28
  * when the selection would otherwise leave the window.
29
29
  *
30
30
  * Rows that are `disabled` are skipped when moving, so holding a direction never lands on
@@ -39,11 +39,22 @@ export declare class ListView extends Container {
39
39
  private viewWidth;
40
40
  private viewHeight;
41
41
  private rowHeight;
42
+ private readonly explicitRowHeight;
42
43
  private index;
43
44
  private scroll;
45
+ private readonly themeListener;
44
46
  onSelect: ((item: ListItem, index: number) => void) | null;
45
47
  onHighlight: ((item: ListItem, index: number) => void) | null;
46
48
  constructor(options: ListViewOptions);
49
+ /**
50
+ * Recolours rows and the default row height from the new theme in place, rather than
51
+ * through `setItems`: a row's optional `icon` is a `Container` the caller owns, and
52
+ * `setItems`'s teardown destroys a row's children on the way out - routing a restyle
53
+ * through it would destroy the very icons still referenced by `this.items`, the same
54
+ * trap `IconGrid.swapCells`'s own doc comment describes for its cells.
55
+ */
56
+ private restyle;
57
+ destroy(options?: Parameters<Container['destroy']>[0]): void;
47
58
  private drawMask;
48
59
  get visibleRows(): number;
49
60
  get selectedIndex(): number;