@datamoc/mw_games 0.3.1 → 0.4.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 (478) hide show
  1. package/README.md +401 -395
  2. package/dist/actors/Affix.d.ts +26 -0
  3. package/dist/actors/Affix.d.ts.map +1 -1
  4. package/dist/actors/Affix.js +32 -1
  5. package/dist/actors/Affix.js.map +1 -1
  6. package/dist/actors/Barrier.d.ts +47 -0
  7. package/dist/actors/Barrier.d.ts.map +1 -0
  8. package/dist/actors/Barrier.js +70 -0
  9. package/dist/actors/Barrier.js.map +1 -0
  10. package/dist/actors/Charges.d.ts +22 -0
  11. package/dist/actors/Charges.d.ts.map +1 -1
  12. package/dist/actors/Charges.js +26 -0
  13. package/dist/actors/Charges.js.map +1 -1
  14. package/dist/actors/Equipment.d.ts +30 -0
  15. package/dist/actors/Equipment.d.ts.map +1 -1
  16. package/dist/actors/Equipment.js +33 -1
  17. package/dist/actors/Equipment.js.map +1 -1
  18. package/dist/actors/Inventory.d.ts +58 -3
  19. package/dist/actors/Inventory.d.ts.map +1 -1
  20. package/dist/actors/Inventory.js +97 -5
  21. package/dist/actors/Inventory.js.map +1 -1
  22. package/dist/actors/ItemState.d.ts +11 -2
  23. package/dist/actors/ItemState.d.ts.map +1 -1
  24. package/dist/actors/ItemState.js +18 -2
  25. package/dist/actors/ItemState.js.map +1 -1
  26. package/dist/actors/Loot.js +1 -1
  27. package/dist/actors/Loot.js.map +1 -1
  28. package/dist/actors/Progression.d.ts +9 -0
  29. package/dist/actors/Progression.d.ts.map +1 -1
  30. package/dist/actors/Progression.js +7 -0
  31. package/dist/actors/Progression.js.map +1 -1
  32. package/dist/actors/Resource.d.ts +16 -0
  33. package/dist/actors/Resource.d.ts.map +1 -1
  34. package/dist/actors/Resource.js +22 -0
  35. package/dist/actors/Resource.js.map +1 -1
  36. package/dist/actors/SkillPoints.d.ts +14 -0
  37. package/dist/actors/SkillPoints.d.ts.map +1 -1
  38. package/dist/actors/SkillPoints.js +16 -0
  39. package/dist/actors/SkillPoints.js.map +1 -1
  40. package/dist/actors/StatBlock.d.ts +16 -0
  41. package/dist/actors/StatBlock.d.ts.map +1 -1
  42. package/dist/actors/StatBlock.js +21 -0
  43. package/dist/actors/StatBlock.js.map +1 -1
  44. package/dist/actors/Support.d.ts +2 -2
  45. package/dist/actors/Support.d.ts.map +1 -1
  46. package/dist/actors/Support.js +2 -2
  47. package/dist/actors/Support.js.map +1 -1
  48. package/dist/actors/index.d.ts +8 -5
  49. package/dist/actors/index.d.ts.map +1 -1
  50. package/dist/actors/index.js +3 -2
  51. package/dist/actors/index.js.map +1 -1
  52. package/dist/assets/ByteProgress.d.ts +27 -0
  53. package/dist/assets/ByteProgress.d.ts.map +1 -0
  54. package/dist/assets/ByteProgress.js +44 -0
  55. package/dist/assets/ByteProgress.js.map +1 -0
  56. package/dist/assets/Streaming.d.ts +1 -1
  57. package/dist/assets/Streaming.js +1 -1
  58. package/dist/assets/Streaming.js.map +1 -1
  59. package/dist/assets/index.d.ts +11 -52
  60. package/dist/assets/index.d.ts.map +1 -1
  61. package/dist/assets/index.js +9 -80
  62. package/dist/assets/index.js.map +1 -1
  63. package/dist/assets/loader.d.ts +34 -0
  64. package/dist/assets/loader.d.ts.map +1 -0
  65. package/dist/assets/loader.js +61 -0
  66. package/dist/assets/loader.js.map +1 -0
  67. package/dist/assets/paths.d.ts +40 -0
  68. package/dist/assets/paths.d.ts.map +1 -0
  69. package/dist/assets/paths.js +49 -0
  70. package/dist/assets/paths.js.map +1 -0
  71. package/dist/audio/Playable.js +1 -1
  72. package/dist/battle/Field.d.ts +2 -2
  73. package/dist/battle/Field.d.ts.map +1 -1
  74. package/dist/battle/Field.js +3 -3
  75. package/dist/battle/Field.js.map +1 -1
  76. package/dist/battle/Hooks.d.ts +7 -13
  77. package/dist/battle/Hooks.d.ts.map +1 -1
  78. package/dist/battle/Hooks.js +20 -18
  79. package/dist/battle/Hooks.js.map +1 -1
  80. package/dist/core/Hooks.d.ts +34 -0
  81. package/dist/core/Hooks.d.ts.map +1 -0
  82. package/dist/core/Hooks.js +33 -0
  83. package/dist/core/Hooks.js.map +1 -0
  84. package/dist/core/Input.d.ts +41 -0
  85. package/dist/core/Input.d.ts.map +1 -1
  86. package/dist/core/Input.js +126 -21
  87. package/dist/core/Input.js.map +1 -1
  88. package/dist/core/PlayerInput.d.ts +5 -0
  89. package/dist/core/PlayerInput.d.ts.map +1 -1
  90. package/dist/core/PlayerInput.js +11 -0
  91. package/dist/core/PlayerInput.js.map +1 -1
  92. package/dist/core/Random.d.ts +14 -5
  93. package/dist/core/Random.d.ts.map +1 -1
  94. package/dist/core/Random.js +14 -5
  95. package/dist/core/Random.js.map +1 -1
  96. package/dist/core/Scene.d.ts +16 -6
  97. package/dist/core/Scene.d.ts.map +1 -1
  98. package/dist/core/Scene.js +18 -6
  99. package/dist/core/Scene.js.map +1 -1
  100. package/dist/core/SceneStack.d.ts +8 -4
  101. package/dist/core/SceneStack.d.ts.map +1 -1
  102. package/dist/core/SceneStack.js +4 -0
  103. package/dist/core/SceneStack.js.map +1 -1
  104. package/dist/core/index.d.ts +3 -2
  105. package/dist/core/index.d.ts.map +1 -1
  106. package/dist/core/index.js +1 -1
  107. package/dist/core/index.js.map +1 -1
  108. package/dist/index.d.ts +4 -5
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +4 -5
  111. package/dist/index.js.map +1 -1
  112. package/dist/mw_games.global.js +88 -88
  113. package/dist/roguelike/Boss.d.ts +4 -4
  114. package/dist/roguelike/Boss.d.ts.map +1 -1
  115. package/dist/roguelike/Boss.js +6 -6
  116. package/dist/roguelike/Boss.js.map +1 -1
  117. package/dist/roguelike/Combat.d.ts +10 -11
  118. package/dist/roguelike/Combat.d.ts.map +1 -1
  119. package/dist/roguelike/Combat.js +9 -16
  120. package/dist/roguelike/Combat.js.map +1 -1
  121. package/dist/roguelike/ContentRoll.d.ts +43 -0
  122. package/dist/roguelike/ContentRoll.d.ts.map +1 -0
  123. package/dist/roguelike/ContentRoll.js +38 -0
  124. package/dist/roguelike/ContentRoll.js.map +1 -0
  125. package/dist/roguelike/DungeonParity.d.ts +42 -0
  126. package/dist/roguelike/DungeonParity.d.ts.map +1 -0
  127. package/dist/roguelike/DungeonParity.js +63 -0
  128. package/dist/roguelike/DungeonParity.js.map +1 -0
  129. package/dist/roguelike/Features.d.ts +42 -0
  130. package/dist/roguelike/Features.d.ts.map +1 -0
  131. package/dist/roguelike/Features.js +59 -0
  132. package/dist/roguelike/Features.js.map +1 -0
  133. package/dist/roguelike/MonsterAI.js +1 -1
  134. package/dist/roguelike/MonsterAI.js.map +1 -1
  135. package/dist/roguelike/MultiStageAbility.d.ts +43 -0
  136. package/dist/roguelike/MultiStageAbility.d.ts.map +1 -0
  137. package/dist/roguelike/MultiStageAbility.js +60 -0
  138. package/dist/roguelike/MultiStageAbility.js.map +1 -0
  139. package/dist/roguelike/RoomBuilders.d.ts +43 -0
  140. package/dist/roguelike/RoomBuilders.d.ts.map +1 -0
  141. package/dist/roguelike/RoomBuilders.js +40 -0
  142. package/dist/roguelike/RoomBuilders.js.map +1 -0
  143. package/dist/roguelike/Targeting.d.ts +22 -0
  144. package/dist/roguelike/Targeting.d.ts.map +1 -1
  145. package/dist/roguelike/Targeting.js +20 -0
  146. package/dist/roguelike/Targeting.js.map +1 -1
  147. package/dist/roguelike/TriggerTracker.d.ts +36 -0
  148. package/dist/roguelike/TriggerTracker.d.ts.map +1 -0
  149. package/dist/roguelike/TriggerTracker.js +49 -0
  150. package/dist/roguelike/TriggerTracker.js.map +1 -0
  151. package/dist/roguelike/generate.d.ts +49 -0
  152. package/dist/roguelike/generate.d.ts.map +1 -1
  153. package/dist/roguelike/generate.js +38 -10
  154. package/dist/roguelike/generate.js.map +1 -1
  155. package/dist/roguelike/index.d.ts +16 -4
  156. package/dist/roguelike/index.d.ts.map +1 -1
  157. package/dist/roguelike/index.js +8 -2
  158. package/dist/roguelike/index.js.map +1 -1
  159. package/dist/rpg/EventRunner.d.ts +30 -8
  160. package/dist/rpg/EventRunner.d.ts.map +1 -1
  161. package/dist/rpg/EventRunner.js +1 -13
  162. package/dist/rpg/EventRunner.js.map +1 -1
  163. package/dist/rpg/FreeMover.d.ts +2 -2
  164. package/dist/rpg/FreeMover.d.ts.map +1 -1
  165. package/dist/rpg/FreeMover.js +5 -5
  166. package/dist/rpg/FreeMover.js.map +1 -1
  167. package/dist/rpg/GridMover.d.ts +2 -2
  168. package/dist/rpg/GridMover.d.ts.map +1 -1
  169. package/dist/rpg/GridMover.js +5 -5
  170. package/dist/rpg/GridMover.js.map +1 -1
  171. package/dist/rpg/MovableSprite.d.ts +25 -0
  172. package/dist/rpg/MovableSprite.d.ts.map +1 -0
  173. package/dist/rpg/MovableSprite.js +2 -0
  174. package/dist/rpg/MovableSprite.js.map +1 -0
  175. package/dist/rpg/Quest.d.ts +6 -1
  176. package/dist/rpg/Quest.d.ts.map +1 -1
  177. package/dist/rpg/Quest.js +6 -1
  178. package/dist/rpg/Quest.js.map +1 -1
  179. package/dist/rpg/automap.d.ts +24 -2
  180. package/dist/rpg/automap.d.ts.map +1 -1
  181. package/dist/rpg/automap.js +9 -1
  182. package/dist/rpg/automap.js.map +1 -1
  183. package/dist/rpg/index.d.ts +4 -4
  184. package/dist/rpg/index.d.ts.map +1 -1
  185. package/dist/rpg/index.js +1 -1
  186. package/dist/rpg/index.js.map +1 -1
  187. package/dist/three-d/Character3D.d.ts +26 -1
  188. package/dist/three-d/Character3D.d.ts.map +1 -1
  189. package/dist/three-d/Character3D.js +31 -14
  190. package/dist/three-d/Character3D.js.map +1 -1
  191. package/dist/three-d/Collision3D.d.ts +63 -0
  192. package/dist/three-d/Collision3D.d.ts.map +1 -0
  193. package/dist/three-d/Collision3D.js +75 -0
  194. package/dist/three-d/Collision3D.js.map +1 -0
  195. package/dist/three-d/Models.js +1 -1
  196. package/dist/three-d/index.d.ts +3 -1
  197. package/dist/three-d/index.d.ts.map +1 -1
  198. package/dist/three-d/index.js +1 -0
  199. package/dist/three-d/index.js.map +1 -1
  200. package/dist/{core → two-d}/Game.d.ts +7 -6
  201. package/dist/two-d/Game.d.ts.map +1 -0
  202. package/dist/{core → two-d}/Game.js +3 -3
  203. package/dist/two-d/Game.js.map +1 -0
  204. package/dist/two-d/Scene2D.d.ts +19 -0
  205. package/dist/two-d/Scene2D.d.ts.map +1 -0
  206. package/dist/two-d/Scene2D.js +23 -0
  207. package/dist/two-d/Scene2D.js.map +1 -0
  208. package/dist/two-d/index.d.ts +20 -0
  209. package/dist/two-d/index.d.ts.map +1 -0
  210. package/dist/two-d/index.js +18 -0
  211. package/dist/two-d/index.js.map +1 -0
  212. package/dist/two-d/render/ActorAnimator.d.ts.map +1 -0
  213. package/dist/two-d/render/ActorAnimator.js.map +1 -0
  214. package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -0
  215. package/dist/two-d/render/AnimatedSprite.js.map +1 -0
  216. package/dist/two-d/render/Autotile.d.ts.map +1 -0
  217. package/dist/two-d/render/Autotile.js.map +1 -0
  218. package/dist/two-d/render/Camera.d.ts.map +1 -0
  219. package/dist/{render → two-d/render}/Camera.js +2 -2
  220. package/dist/two-d/render/Camera.js.map +1 -0
  221. package/dist/two-d/render/Capabilities.d.ts.map +1 -0
  222. package/dist/two-d/render/Capabilities.js.map +1 -0
  223. package/dist/two-d/render/ColorBlindness.d.ts.map +1 -0
  224. package/dist/two-d/render/ColorBlindness.js.map +1 -0
  225. package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -0
  226. package/dist/{render → two-d/render}/ColorTransformBatcher.js +3 -2
  227. package/dist/two-d/render/ColorTransformBatcher.js.map +1 -0
  228. package/dist/two-d/render/LayeredSprite.d.ts.map +1 -0
  229. package/dist/two-d/render/LayeredSprite.js.map +1 -0
  230. package/dist/two-d/render/Minimap.d.ts.map +1 -0
  231. package/dist/{render → two-d/render}/Minimap.js +1 -1
  232. package/dist/two-d/render/Minimap.js.map +1 -0
  233. package/dist/two-d/render/Particles.d.ts +109 -0
  234. package/dist/two-d/render/Particles.d.ts.map +1 -0
  235. package/dist/two-d/render/Particles.js +178 -0
  236. package/dist/two-d/render/Particles.js.map +1 -0
  237. package/dist/two-d/render/Projectile.d.ts.map +1 -0
  238. package/dist/two-d/render/Projectile.js.map +1 -0
  239. package/dist/two-d/render/ScreenEffects.d.ts +71 -0
  240. package/dist/two-d/render/ScreenEffects.d.ts.map +1 -0
  241. package/dist/two-d/render/ScreenEffects.js +133 -0
  242. package/dist/two-d/render/ScreenEffects.js.map +1 -0
  243. package/dist/two-d/render/SpriteSheet.d.ts.map +1 -0
  244. package/dist/{render → two-d/render}/SpriteSheet.js +1 -1
  245. package/dist/two-d/render/SpriteSheet.js.map +1 -0
  246. package/dist/two-d/render/StatusVisuals.d.ts.map +1 -0
  247. package/dist/two-d/render/StatusVisuals.js.map +1 -0
  248. package/dist/two-d/render/TileMap.d.ts.map +1 -0
  249. package/dist/{render → two-d/render}/TileMap.js +1 -1
  250. package/dist/two-d/render/TileMap.js.map +1 -0
  251. package/dist/{rpg → two-d/render}/TiledMap.d.ts +2 -2
  252. package/dist/two-d/render/TiledMap.d.ts.map +1 -0
  253. package/dist/{rpg → two-d/render}/TiledMap.js +2 -2
  254. package/dist/two-d/render/TiledMap.js.map +1 -0
  255. package/dist/two-d/render/TintedSprite.d.ts.map +1 -0
  256. package/dist/two-d/render/TintedSprite.js.map +1 -0
  257. package/dist/two-d/render/Viewport.d.ts.map +1 -0
  258. package/dist/two-d/render/Viewport.js.map +1 -0
  259. package/dist/{render → two-d/render}/index.d.ts +6 -0
  260. package/dist/two-d/render/index.d.ts.map +1 -0
  261. package/dist/{render → two-d/render}/index.js +3 -0
  262. package/dist/two-d/render/index.js.map +1 -0
  263. package/dist/two-d/stage/DialogueStage.d.ts.map +1 -0
  264. package/dist/{stage → two-d/stage}/DialogueStage.js +1 -1
  265. package/dist/two-d/stage/DialogueStage.js.map +1 -0
  266. package/dist/two-d/stage/index.d.ts.map +1 -0
  267. package/dist/two-d/stage/index.js.map +1 -0
  268. package/dist/two-d/stage/script.d.ts.map +1 -0
  269. package/dist/{stage → two-d/stage}/script.js +0 -0
  270. package/dist/two-d/stage/script.js.map +1 -0
  271. package/dist/two-d/stage/twee.d.ts.map +1 -0
  272. package/dist/two-d/stage/twee.js.map +1 -0
  273. package/dist/two-d/ui/Bar.d.ts.map +1 -0
  274. package/dist/two-d/ui/Bar.js.map +1 -0
  275. package/dist/two-d/ui/BitmapLabel.d.ts.map +1 -0
  276. package/dist/two-d/ui/BitmapLabel.js.map +1 -0
  277. package/dist/{ui → two-d/ui}/Button.d.ts +7 -1
  278. package/dist/two-d/ui/Button.d.ts.map +1 -0
  279. package/dist/{ui → two-d/ui}/Button.js +20 -4
  280. package/dist/two-d/ui/Button.js.map +1 -0
  281. package/dist/two-d/ui/EventDialogue.d.ts +23 -0
  282. package/dist/two-d/ui/EventDialogue.d.ts.map +1 -0
  283. package/dist/two-d/ui/EventDialogue.js +27 -0
  284. package/dist/two-d/ui/EventDialogue.js.map +1 -0
  285. package/dist/two-d/ui/FloatingText.d.ts.map +1 -0
  286. package/dist/two-d/ui/FloatingText.js.map +1 -0
  287. package/dist/{ui → two-d/ui}/HelpScreen.d.ts +1 -1
  288. package/dist/two-d/ui/HelpScreen.d.ts.map +1 -0
  289. package/dist/two-d/ui/HelpScreen.js.map +1 -0
  290. package/dist/{ui → two-d/ui}/IconGrid.d.ts +1 -1
  291. package/dist/two-d/ui/IconGrid.d.ts.map +1 -0
  292. package/dist/two-d/ui/IconGrid.js.map +1 -0
  293. package/dist/two-d/ui/Label.d.ts.map +1 -0
  294. package/dist/two-d/ui/Label.js.map +1 -0
  295. package/dist/{ui → two-d/ui}/ListView.d.ts +1 -1
  296. package/dist/two-d/ui/ListView.d.ts.map +1 -0
  297. package/dist/two-d/ui/ListView.js.map +1 -0
  298. package/dist/{ui → two-d/ui}/LoadingScreen.d.ts +1 -1
  299. package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -0
  300. package/dist/two-d/ui/LoadingScreen.js.map +1 -0
  301. package/dist/{ui → two-d/ui}/MessageBox.d.ts +1 -1
  302. package/dist/two-d/ui/MessageBox.d.ts.map +1 -0
  303. package/dist/two-d/ui/MessageBox.js.map +1 -0
  304. package/dist/two-d/ui/NinePatch.d.ts.map +1 -0
  305. package/dist/two-d/ui/NinePatch.js.map +1 -0
  306. package/dist/{ui → two-d/ui}/RebindScreen.d.ts +1 -1
  307. package/dist/two-d/ui/RebindScreen.d.ts.map +1 -0
  308. package/dist/{ui → two-d/ui}/RebindScreen.js +1 -1
  309. package/dist/two-d/ui/RebindScreen.js.map +1 -0
  310. package/dist/two-d/ui/StatsScreen.d.ts.map +1 -0
  311. package/dist/two-d/ui/StatsScreen.js.map +1 -0
  312. package/dist/two-d/ui/Toast.d.ts.map +1 -0
  313. package/dist/{ui → two-d/ui}/Toast.js +1 -1
  314. package/dist/two-d/ui/Toast.js.map +1 -0
  315. package/dist/two-d/ui/Tooltip.d.ts +94 -0
  316. package/dist/two-d/ui/Tooltip.d.ts.map +1 -0
  317. package/dist/two-d/ui/Tooltip.js +149 -0
  318. package/dist/two-d/ui/Tooltip.js.map +1 -0
  319. package/dist/two-d/ui/VerticalLabel.d.ts.map +1 -0
  320. package/dist/two-d/ui/VerticalLabel.js.map +1 -0
  321. package/dist/{ui → two-d/ui}/Window.d.ts +2 -2
  322. package/dist/two-d/ui/Window.d.ts.map +1 -0
  323. package/dist/{ui → two-d/ui}/Window.js +1 -1
  324. package/dist/two-d/ui/Window.js.map +1 -0
  325. package/dist/two-d/ui/WindowStack.d.ts.map +1 -0
  326. package/dist/{ui → two-d/ui}/WindowStack.js +1 -1
  327. package/dist/two-d/ui/WindowStack.js.map +1 -0
  328. package/dist/{ui → two-d/ui}/index.d.ts +4 -0
  329. package/dist/two-d/ui/index.d.ts.map +1 -0
  330. package/dist/{ui → two-d/ui}/index.js +2 -0
  331. package/dist/two-d/ui/index.js.map +1 -0
  332. package/dist/{ui → two-d/ui}/theme.d.ts +2 -2
  333. package/dist/two-d/ui/theme.d.ts.map +1 -0
  334. package/dist/{ui → two-d/ui}/theme.js +1 -1
  335. package/dist/two-d/ui/theme.js.map +1 -0
  336. package/dist/version.d.ts +1 -1
  337. package/dist/version.js +1 -1
  338. package/dist/world/Encounters.js +1 -1
  339. package/dist/world/Encounters.js.map +1 -1
  340. package/dist/world/Environment.d.ts +12 -3
  341. package/dist/world/Environment.d.ts.map +1 -1
  342. package/dist/world/Environment.js +18 -9
  343. package/dist/world/Environment.js.map +1 -1
  344. package/package.json +227 -147
  345. package/dist/core/Game.d.ts.map +0 -1
  346. package/dist/core/Game.js.map +0 -1
  347. package/dist/render/ActorAnimator.d.ts.map +0 -1
  348. package/dist/render/ActorAnimator.js.map +0 -1
  349. package/dist/render/AnimatedSprite.d.ts.map +0 -1
  350. package/dist/render/AnimatedSprite.js.map +0 -1
  351. package/dist/render/Autotile.d.ts.map +0 -1
  352. package/dist/render/Autotile.js.map +0 -1
  353. package/dist/render/Camera.d.ts.map +0 -1
  354. package/dist/render/Camera.js.map +0 -1
  355. package/dist/render/Capabilities.d.ts.map +0 -1
  356. package/dist/render/Capabilities.js.map +0 -1
  357. package/dist/render/ColorBlindness.d.ts.map +0 -1
  358. package/dist/render/ColorBlindness.js.map +0 -1
  359. package/dist/render/ColorTransformBatcher.d.ts.map +0 -1
  360. package/dist/render/ColorTransformBatcher.js.map +0 -1
  361. package/dist/render/LayeredSprite.d.ts.map +0 -1
  362. package/dist/render/LayeredSprite.js.map +0 -1
  363. package/dist/render/Minimap.d.ts.map +0 -1
  364. package/dist/render/Minimap.js.map +0 -1
  365. package/dist/render/Projectile.d.ts.map +0 -1
  366. package/dist/render/Projectile.js.map +0 -1
  367. package/dist/render/SpriteSheet.d.ts.map +0 -1
  368. package/dist/render/SpriteSheet.js.map +0 -1
  369. package/dist/render/StatusVisuals.d.ts.map +0 -1
  370. package/dist/render/StatusVisuals.js.map +0 -1
  371. package/dist/render/TileMap.d.ts.map +0 -1
  372. package/dist/render/TileMap.js.map +0 -1
  373. package/dist/render/TintedSprite.d.ts.map +0 -1
  374. package/dist/render/TintedSprite.js.map +0 -1
  375. package/dist/render/Viewport.d.ts.map +0 -1
  376. package/dist/render/Viewport.js.map +0 -1
  377. package/dist/render/index.d.ts.map +0 -1
  378. package/dist/render/index.js.map +0 -1
  379. package/dist/rpg/TiledMap.d.ts.map +0 -1
  380. package/dist/rpg/TiledMap.js.map +0 -1
  381. package/dist/stage/DialogueStage.d.ts.map +0 -1
  382. package/dist/stage/DialogueStage.js.map +0 -1
  383. package/dist/stage/index.d.ts.map +0 -1
  384. package/dist/stage/index.js.map +0 -1
  385. package/dist/stage/script.d.ts.map +0 -1
  386. package/dist/stage/script.js.map +0 -1
  387. package/dist/stage/twee.d.ts.map +0 -1
  388. package/dist/stage/twee.js.map +0 -1
  389. package/dist/ui/Bar.d.ts.map +0 -1
  390. package/dist/ui/Bar.js.map +0 -1
  391. package/dist/ui/BitmapLabel.d.ts.map +0 -1
  392. package/dist/ui/BitmapLabel.js.map +0 -1
  393. package/dist/ui/Button.d.ts.map +0 -1
  394. package/dist/ui/Button.js.map +0 -1
  395. package/dist/ui/FloatingText.d.ts.map +0 -1
  396. package/dist/ui/FloatingText.js.map +0 -1
  397. package/dist/ui/HelpScreen.d.ts.map +0 -1
  398. package/dist/ui/HelpScreen.js.map +0 -1
  399. package/dist/ui/IconGrid.d.ts.map +0 -1
  400. package/dist/ui/IconGrid.js.map +0 -1
  401. package/dist/ui/Label.d.ts.map +0 -1
  402. package/dist/ui/Label.js.map +0 -1
  403. package/dist/ui/ListView.d.ts.map +0 -1
  404. package/dist/ui/ListView.js.map +0 -1
  405. package/dist/ui/LoadingScreen.d.ts.map +0 -1
  406. package/dist/ui/LoadingScreen.js.map +0 -1
  407. package/dist/ui/MessageBox.d.ts.map +0 -1
  408. package/dist/ui/MessageBox.js.map +0 -1
  409. package/dist/ui/NinePatch.d.ts.map +0 -1
  410. package/dist/ui/NinePatch.js.map +0 -1
  411. package/dist/ui/RebindScreen.d.ts.map +0 -1
  412. package/dist/ui/RebindScreen.js.map +0 -1
  413. package/dist/ui/StatsScreen.d.ts.map +0 -1
  414. package/dist/ui/StatsScreen.js.map +0 -1
  415. package/dist/ui/Toast.d.ts.map +0 -1
  416. package/dist/ui/Toast.js.map +0 -1
  417. package/dist/ui/VerticalLabel.d.ts.map +0 -1
  418. package/dist/ui/VerticalLabel.js.map +0 -1
  419. package/dist/ui/Window.d.ts.map +0 -1
  420. package/dist/ui/Window.js.map +0 -1
  421. package/dist/ui/WindowStack.d.ts.map +0 -1
  422. package/dist/ui/WindowStack.js.map +0 -1
  423. package/dist/ui/index.d.ts.map +0 -1
  424. package/dist/ui/index.js.map +0 -1
  425. package/dist/ui/theme.d.ts.map +0 -1
  426. package/dist/ui/theme.js.map +0 -1
  427. /package/dist/{render → two-d/render}/ActorAnimator.d.ts +0 -0
  428. /package/dist/{render → two-d/render}/ActorAnimator.js +0 -0
  429. /package/dist/{render → two-d/render}/AnimatedSprite.d.ts +0 -0
  430. /package/dist/{render → two-d/render}/AnimatedSprite.js +0 -0
  431. /package/dist/{render → two-d/render}/Autotile.d.ts +0 -0
  432. /package/dist/{render → two-d/render}/Autotile.js +0 -0
  433. /package/dist/{render → two-d/render}/Camera.d.ts +0 -0
  434. /package/dist/{render → two-d/render}/Capabilities.d.ts +0 -0
  435. /package/dist/{render → two-d/render}/Capabilities.js +0 -0
  436. /package/dist/{render → two-d/render}/ColorBlindness.d.ts +0 -0
  437. /package/dist/{render → two-d/render}/ColorBlindness.js +0 -0
  438. /package/dist/{render → two-d/render}/ColorTransformBatcher.d.ts +0 -0
  439. /package/dist/{render → two-d/render}/LayeredSprite.d.ts +0 -0
  440. /package/dist/{render → two-d/render}/LayeredSprite.js +0 -0
  441. /package/dist/{render → two-d/render}/Minimap.d.ts +0 -0
  442. /package/dist/{render → two-d/render}/Projectile.d.ts +0 -0
  443. /package/dist/{render → two-d/render}/Projectile.js +0 -0
  444. /package/dist/{render → two-d/render}/SpriteSheet.d.ts +0 -0
  445. /package/dist/{render → two-d/render}/StatusVisuals.d.ts +0 -0
  446. /package/dist/{render → two-d/render}/StatusVisuals.js +0 -0
  447. /package/dist/{render → two-d/render}/TileMap.d.ts +0 -0
  448. /package/dist/{render → two-d/render}/TintedSprite.d.ts +0 -0
  449. /package/dist/{render → two-d/render}/TintedSprite.js +0 -0
  450. /package/dist/{render → two-d/render}/Viewport.d.ts +0 -0
  451. /package/dist/{render → two-d/render}/Viewport.js +0 -0
  452. /package/dist/{stage → two-d/stage}/DialogueStage.d.ts +0 -0
  453. /package/dist/{stage → two-d/stage}/index.d.ts +0 -0
  454. /package/dist/{stage → two-d/stage}/index.js +0 -0
  455. /package/dist/{stage → two-d/stage}/script.d.ts +0 -0
  456. /package/dist/{stage → two-d/stage}/twee.d.ts +0 -0
  457. /package/dist/{stage → two-d/stage}/twee.js +0 -0
  458. /package/dist/{ui → two-d/ui}/Bar.d.ts +0 -0
  459. /package/dist/{ui → two-d/ui}/Bar.js +0 -0
  460. /package/dist/{ui → two-d/ui}/BitmapLabel.d.ts +0 -0
  461. /package/dist/{ui → two-d/ui}/BitmapLabel.js +0 -0
  462. /package/dist/{ui → two-d/ui}/FloatingText.d.ts +0 -0
  463. /package/dist/{ui → two-d/ui}/FloatingText.js +0 -0
  464. /package/dist/{ui → two-d/ui}/HelpScreen.js +0 -0
  465. /package/dist/{ui → two-d/ui}/IconGrid.js +0 -0
  466. /package/dist/{ui → two-d/ui}/Label.d.ts +0 -0
  467. /package/dist/{ui → two-d/ui}/Label.js +0 -0
  468. /package/dist/{ui → two-d/ui}/ListView.js +0 -0
  469. /package/dist/{ui → two-d/ui}/LoadingScreen.js +0 -0
  470. /package/dist/{ui → two-d/ui}/MessageBox.js +0 -0
  471. /package/dist/{ui → two-d/ui}/NinePatch.d.ts +0 -0
  472. /package/dist/{ui → two-d/ui}/NinePatch.js +0 -0
  473. /package/dist/{ui → two-d/ui}/StatsScreen.d.ts +0 -0
  474. /package/dist/{ui → two-d/ui}/StatsScreen.js +0 -0
  475. /package/dist/{ui → two-d/ui}/Toast.d.ts +0 -0
  476. /package/dist/{ui → two-d/ui}/VerticalLabel.d.ts +0 -0
  477. /package/dist/{ui → two-d/ui}/VerticalLabel.js +0 -0
  478. /package/dist/{ui → two-d/ui}/WindowStack.d.ts +0 -0
@@ -11,11 +11,12 @@ export { applyItemStatusEffect } from './ItemStatusEffect.js';
11
11
  export { Charges } from './Charges.js';
12
12
  export { rollLoot } from './Loot.js';
13
13
  export { Advancement } from './Advancement.js';
14
- export { rollAffix, affixOf, applyAffix, removeAffix } from './Affix.js';
14
+ export { rollAffix, affixOf, applyAffix, removeAffix, copyAffix, matchesContext } from './Affix.js';
15
15
  export { scaledModifiers } from './Scaling.js';
16
16
  export { assignAppearances, Appearances } from './Appearances.js';
17
17
  export { buy, sell } from './Shop.js';
18
- export { canAfford, spend } from './Resource.js';
18
+ export { canAfford, spend, refund, convertToCharges } from './Resource.js';
19
+ export { Barrier } from './Barrier.js';
19
20
  export { assignTraits } from './Traits.js';
20
21
  export { AuraField } from './Aura.js';
21
22
  export { SupportLedger } from './Support.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Real transferred-byte progress for a real origin - a server, a dev server, or a desktop
3
+ * host serving through a virtual origin rather than raw `file://` (see `desktop/`'s own
4
+ * `SetVirtualHostNameToFolderMapping` for why that distinction matters). This is deliberately
5
+ * separate from `load`'s own `AssetProgress`: that one reports a fraction of assets finished
6
+ * because, as its own doc comment says, "Pixi's own loaders do not expose bytes transferred
7
+ * across every asset type uniformly" - reporting a number this project cannot actually back
8
+ * would be exactly the kind of silent-fallback dishonesty this project's own conventions rule
9
+ * out elsewhere. `fetch()` itself is blocked from `file://` entirely, so calling this from a
10
+ * compiled data-URI build throws the same way any other `fetch()` there would; it exists for
11
+ * item 137's "a server or standalone WebView2/Chromium host can stream/cache assets
12
+ * incrementally and report byte progress" capability tier, not the `file://` one.
13
+ */
14
+ export interface ByteProgress {
15
+ loaded: number;
16
+ /** null when the server never sent a Content-Length (chunked transfer, some dev servers) - a caller only gets a real fraction when this is known */
17
+ total: number | null;
18
+ }
19
+ export type OnByteProgress = (progress: ByteProgress) => void;
20
+ /**
21
+ * Fetches `url`, reporting real bytes transferred as they arrive, and resolves to the
22
+ * complete body as a `Blob` - handed to `URL.createObjectURL` to become something
23
+ * `assets.load`'s own texture/audio/JSON decoding can take from there, the same as any other
24
+ * resolved asset URL.
25
+ */
26
+ export declare function fetchWithByteProgress(url: string, onProgress?: OnByteProgress, fetchFn?: typeof fetch): Promise<Blob>;
27
+ //# sourceMappingURL=ByteProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ByteProgress.d.ts","sourceRoot":"","sources":["../../src/assets/ByteProgress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,oJAAoJ;IACpJ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;AAE9D;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,cAAc,EAC3B,OAAO,GAAE,OAAO,KAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Real transferred-byte progress for a real origin - a server, a dev server, or a desktop
3
+ * host serving through a virtual origin rather than raw `file://` (see `desktop/`'s own
4
+ * `SetVirtualHostNameToFolderMapping` for why that distinction matters). This is deliberately
5
+ * separate from `load`'s own `AssetProgress`: that one reports a fraction of assets finished
6
+ * because, as its own doc comment says, "Pixi's own loaders do not expose bytes transferred
7
+ * across every asset type uniformly" - reporting a number this project cannot actually back
8
+ * would be exactly the kind of silent-fallback dishonesty this project's own conventions rule
9
+ * out elsewhere. `fetch()` itself is blocked from `file://` entirely, so calling this from a
10
+ * compiled data-URI build throws the same way any other `fetch()` there would; it exists for
11
+ * item 137's "a server or standalone WebView2/Chromium host can stream/cache assets
12
+ * incrementally and report byte progress" capability tier, not the `file://` one.
13
+ */
14
+ /**
15
+ * Fetches `url`, reporting real bytes transferred as they arrive, and resolves to the
16
+ * complete body as a `Blob` - handed to `URL.createObjectURL` to become something
17
+ * `assets.load`'s own texture/audio/JSON decoding can take from there, the same as any other
18
+ * resolved asset URL.
19
+ */
20
+ export async function fetchWithByteProgress(url, onProgress, fetchFn = fetch) {
21
+ const response = await fetchFn(url);
22
+ if (!response.ok)
23
+ throw new Error(`fetchWithByteProgress: ${url} responded ${response.status}`);
24
+ const totalHeader = response.headers.get('content-length');
25
+ const total = totalHeader !== null && totalHeader !== '' ? Number(totalHeader) : null;
26
+ if (!response.body) {
27
+ const blob = await response.blob();
28
+ onProgress?.({ loaded: blob.size, total: total ?? blob.size });
29
+ return blob;
30
+ }
31
+ const reader = response.body.getReader();
32
+ const chunks = [];
33
+ let loaded = 0;
34
+ for (;;) {
35
+ const { done, value } = await reader.read();
36
+ if (done)
37
+ break;
38
+ chunks.push(value);
39
+ loaded += value.byteLength;
40
+ onProgress?.({ loaded, total });
41
+ }
42
+ return new Blob(chunks);
43
+ }
44
+ //# sourceMappingURL=ByteProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ByteProgress.js","sourceRoot":"","sources":["../../src/assets/ByteProgress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,GAAW,EACX,UAA2B,EAC3B,OAAO,GAAiB,KAAK;IAE7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhG,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,SAAS,CAAC;QACT,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;QAC3B,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,MAAoB,CAAC,CAAC;AACvC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AssetProgress } from './index.ts';
1
+ import type { AssetProgress } from './paths.ts';
2
2
  export interface AssetBundle {
3
3
  id: string;
4
4
  paths: readonly string[];
@@ -1,4 +1,4 @@
1
- import { load, release } from './index.js';
1
+ import { load, release } from './loader.js';
2
2
  /**
3
3
  * Game-directed background asset staging with bounded, least-recently-used eviction.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.js","sourceRoot":"","sources":["../../src/assets/Streaming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Streaming.js","sourceRoot":"","sources":["../../src/assets/Streaming.ts"],"names":[],"mappings":"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"}
@@ -1,58 +1,17 @@
1
- import { Texture } from 'pixi.js';
2
1
  /**
3
- * Where a game's assets come from.
2
+ * The `file://` story, in two halves.
4
3
  *
5
- * In a built game, `tools/compile-resources` has already turned every asset into a `data:`
6
- * URI inside a script that runs before the game does. `resolve` then hands Pixi that URI
7
- * instead of a path, which is what lets the page work from `file://`: see the tool for
8
- * why plain files next to the page do not.
9
- *
10
- * During development there is no compiled bundle, so paths are used as they are and the
11
- * dev server serves them. Game code says `load('tiles.png')` either way.
12
- */
13
- declare global {
14
- interface Window {
15
- __MWG_ASSETS__?: Record<string, string>;
16
- }
17
- }
18
- /** points dev-mode lookups at the folder assets are served from */
19
- export declare function setBase(path: string): void;
20
- /** true when running against a compiled bundle rather than a dev server */
21
- export declare function isCompiled(): boolean;
22
- export declare function paths(): string[];
23
- export declare function has(path: string): boolean;
24
- /** an asset path resolved to something the browser can actually load */
25
- export declare function resolve(path: string): string;
26
- /**
27
- * 0 (started) to 1 (complete) - a count of assets finished, not a byte count. Pixi's own
28
- * loaders do not expose bytes transferred across every asset type uniformly, so this reports
29
- * what is actually available rather than a byte figure it cannot back with a real number.
30
- */
31
- export type AssetProgress = (fraction: number) => void;
32
- /**
33
- * Loads assets by path, giving each one an alias equal to its path.
34
- *
35
- * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
36
- * so game code never has to await in the middle of building a scene. `onProgress`, when
37
- * given, is item 135's `LoadQueue`/`LoadingScreen` seam for a task that would otherwise only
38
- * ever report 0 then 1 around one opaque `await`.
39
- */
40
- export declare function load(paths: string[], onProgress?: AssetProgress): Promise<void>;
41
- /** a loaded texture, by the same path it was loaded with */
42
- export declare function texture(path: string): Texture;
43
- /** a loaded asset of any other kind, such as parsed JSON */
44
- export declare function get<T>(path: string): T;
45
- /** true once `load` has resolved for this path and it has not since been `release`d */
46
- export declare function isLoaded(path: string): boolean;
47
- /**
48
- * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
49
- * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
50
- * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
51
- * the assets it pointed at, once a game decides the player has left an area for good. A path
52
- * never loaded (or already released) is silently skipped rather than treated as an error,
53
- * since a game unloading a zone it may or may not have visited shouldn't have to check first.
4
+ * `paths.ts` resolves an asset path against the compiled `data:` URI map (or the dev server)
5
+ * and needs no renderer at all; `loader.ts` fetches and decodes through Pixi. This barrel
6
+ * exposes both, so `import { load, resolve } from '@datamoc/mw_games/assets'` is unchanged -
7
+ * but a game rendering through something else imports `@datamoc/mw_games/assets/paths`
8
+ * instead and pays nothing for Pixi.
54
9
  */
55
- export declare function release(paths: string[]): Promise<void>;
10
+ export { setBase, isCompiled, paths, has, resolve } from './paths.ts';
11
+ export type { AssetProgress } from './paths.ts';
12
+ export { load, texture, get, isLoaded, release } from './loader.ts';
56
13
  export { AssetStream } from './Streaming.ts';
57
14
  export type { AssetBundle, AssetStreamOptions } from './Streaming.ts';
15
+ export { fetchWithByteProgress } from './ByteProgress.ts';
16
+ export type { ByteProgress, OnByteProgress } from './ByteProgress.ts';
58
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;GAUG;AAEH,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;CACD;AAKD,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE1C;AAMD,2EAA2E;AAC3E,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,KAAK,IAAI,MAAM,EAAE,CAEhC;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzC;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5C;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrF;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK7C;AAED,4DAA4D;AAC5D,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAKtC;AAED,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,85 +1,14 @@
1
- import { Assets, Texture } from 'pixi.js';
2
- /** the base for dev-mode paths, when assets are served rather than compiled in */
3
- let base = '';
4
- /** points dev-mode lookups at the folder assets are served from */
5
- export function setBase(path) {
6
- base = path.endsWith('/') || path === '' ? path : path + '/';
7
- }
8
- function compiled() {
9
- return typeof window === 'undefined' ? undefined : window.__MWG_ASSETS__;
10
- }
11
- /** true when running against a compiled bundle rather than a dev server */
12
- export function isCompiled() {
13
- return compiled() !== undefined;
14
- }
15
- export function paths() {
16
- return Object.keys(compiled() ?? {});
17
- }
18
- export function has(path) {
19
- const map = compiled();
20
- return map ? path in map : true;
21
- }
22
- /** an asset path resolved to something the browser can actually load */
23
- export function resolve(path) {
24
- const map = compiled();
25
- if (!map)
26
- return base + path;
27
- const found = map[path];
28
- if (found === undefined) {
29
- throw new Error(`asset "${path}" is not in this build - check it is under the folder passed to compile-resources`);
30
- }
31
- return found;
32
- }
33
1
  /**
34
- * Loads assets by path, giving each one an alias equal to its path.
2
+ * The `file://` story, in two halves.
35
3
  *
36
- * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
37
- * so game code never has to await in the middle of building a scene. `onProgress`, when
38
- * given, is item 135's `LoadQueue`/`LoadingScreen` seam for a task that would otherwise only
39
- * ever report 0 then 1 around one opaque `await`.
4
+ * `paths.ts` resolves an asset path against the compiled `data:` URI map (or the dev server)
5
+ * and needs no renderer at all; `loader.ts` fetches and decodes through Pixi. This barrel
6
+ * exposes both, so `import { load, resolve } from '@datamoc/mw_games/assets'` is unchanged -
7
+ * but a game rendering through something else imports `@datamoc/mw_games/assets/paths`
8
+ * instead and pays nothing for Pixi.
40
9
  */
41
- export async function load(paths, onProgress) {
42
- const pending = paths.filter((path) => !Assets.cache.has(path));
43
- if (pending.length === 0) {
44
- onProgress?.(1);
45
- return;
46
- }
47
- for (const path of pending) {
48
- Assets.add({ alias: path, src: resolve(path) });
49
- }
50
- await Assets.load(pending, onProgress);
51
- }
52
- /** a loaded texture, by the same path it was loaded with */
53
- export function texture(path) {
54
- if (!Assets.cache.has(path)) {
55
- throw new Error(`texture "${path}" has not been loaded - pass it to load() first`);
56
- }
57
- return Assets.get(path);
58
- }
59
- /** a loaded asset of any other kind, such as parsed JSON */
60
- export function get(path) {
61
- if (!Assets.cache.has(path)) {
62
- throw new Error(`asset "${path}" has not been loaded - pass it to load() first`);
63
- }
64
- return Assets.get(path);
65
- }
66
- /** true once `load` has resolved for this path and it has not since been `release`d */
67
- export function isLoaded(path) {
68
- return Assets.cache.has(path);
69
- }
70
- /**
71
- * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
72
- * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
73
- * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
74
- * the assets it pointed at, once a game decides the player has left an area for good. A path
75
- * never loaded (or already released) is silently skipped rather than treated as an error,
76
- * since a game unloading a zone it may or may not have visited shouldn't have to check first.
77
- */
78
- export async function release(paths) {
79
- const loaded = paths.filter((path) => Assets.cache.has(path));
80
- if (loaded.length === 0)
81
- return;
82
- await Assets.unload(loaded);
83
- }
10
+ export { setBase, isCompiled, paths, has, resolve } from './paths.js';
11
+ export { load, texture, get, isLoaded, release } from './loader.js';
84
12
  export { AssetStream } from './Streaming.js';
13
+ export { fetchWithByteProgress } from './ByteProgress.js';
85
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGtE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Texture } from 'pixi.js';
2
+ import { type AssetProgress } from './paths.ts';
3
+ /**
4
+ * Actually fetching and decoding assets, which is the half that needs Pixi.
5
+ *
6
+ * Split from `paths.ts` so path resolution stays renderer-free: a game rendering through
7
+ * something other than Pixi (`mwg/3d` on Babylon) resolves paths through the same compiled
8
+ * asset map and hands the fetch to its own loader, rather than importing this file at all.
9
+ */
10
+ /**
11
+ * Loads assets by path, giving each one an alias equal to its path.
12
+ *
13
+ * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
14
+ * so game code never has to await in the middle of building a scene. `onProgress`, when
15
+ * given, is item 135's `LoadQueue`/`LoadingScreen` seam for a task that would otherwise only
16
+ * ever report 0 then 1 around one opaque `await`.
17
+ */
18
+ export declare function load(paths: string[], onProgress?: AssetProgress): Promise<void>;
19
+ /** a loaded texture, by the same path it was loaded with */
20
+ export declare function texture(path: string): Texture;
21
+ /** a loaded asset of any other kind, such as parsed JSON */
22
+ export declare function get<T>(path: string): T;
23
+ /** true once `load` has resolved for this path and it has not since been `release`d */
24
+ export declare function isLoaded(path: string): boolean;
25
+ /**
26
+ * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
27
+ * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
28
+ * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
29
+ * the assets it pointed at, once a game decides the player has left an area for good. A path
30
+ * never loaded (or already released) is silently skipped rather than treated as an error,
31
+ * since a game unloading a zone it may or may not have visited shouldn't have to check first.
32
+ */
33
+ export declare function release(paths: string[]): Promise<void>;
34
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/assets/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrF;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK7C;AAED,4DAA4D;AAC5D,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAKtC;AAED,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D"}
@@ -0,0 +1,61 @@
1
+ import { Assets, Texture } from 'pixi.js';
2
+ import { resolve } from './paths.js';
3
+ /**
4
+ * Actually fetching and decoding assets, which is the half that needs Pixi.
5
+ *
6
+ * Split from `paths.ts` so path resolution stays renderer-free: a game rendering through
7
+ * something other than Pixi (`mwg/3d` on Babylon) resolves paths through the same compiled
8
+ * asset map and hands the fetch to its own loader, rather than importing this file at all.
9
+ */
10
+ /**
11
+ * Loads assets by path, giving each one an alias equal to its path.
12
+ *
13
+ * Load everything a scene needs before creating it; afterwards `texture()` is synchronous,
14
+ * so game code never has to await in the middle of building a scene. `onProgress`, when
15
+ * given, is item 135's `LoadQueue`/`LoadingScreen` seam for a task that would otherwise only
16
+ * ever report 0 then 1 around one opaque `await`.
17
+ */
18
+ export async function load(paths, onProgress) {
19
+ const pending = paths.filter((path) => !Assets.cache.has(path));
20
+ if (pending.length === 0) {
21
+ onProgress?.(1);
22
+ return;
23
+ }
24
+ for (const path of pending) {
25
+ Assets.add({ alias: path, src: resolve(path) });
26
+ }
27
+ await Assets.load(pending, onProgress);
28
+ }
29
+ /** a loaded texture, by the same path it was loaded with */
30
+ export function texture(path) {
31
+ if (!Assets.cache.has(path)) {
32
+ throw new Error(`texture "${path}" has not been loaded - pass it to load() first`);
33
+ }
34
+ return Assets.get(path);
35
+ }
36
+ /** a loaded asset of any other kind, such as parsed JSON */
37
+ export function get(path) {
38
+ if (!Assets.cache.has(path)) {
39
+ throw new Error(`asset "${path}" has not been loaded - pass it to load() first`);
40
+ }
41
+ return Assets.get(path);
42
+ }
43
+ /** true once `load` has resolved for this path and it has not since been `release`d */
44
+ export function isLoaded(path) {
45
+ return Assets.cache.has(path);
46
+ }
47
+ /**
48
+ * Frees assets `load` brought in, destroying any texture among them so it stops holding GPU
49
+ * memory. For a game with many discrete zones - each with its own tileset or sprite sheet -
50
+ * this is the counterpart to `world.World.unload`: that drops a map's own state, this drops
51
+ * the assets it pointed at, once a game decides the player has left an area for good. A path
52
+ * never loaded (or already released) is silently skipped rather than treated as an error,
53
+ * since a game unloading a zone it may or may not have visited shouldn't have to check first.
54
+ */
55
+ export async function release(paths) {
56
+ const loaded = paths.filter((path) => Assets.cache.has(path));
57
+ if (loaded.length === 0)
58
+ return;
59
+ await Assets.unload(loaded);
60
+ }
61
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/assets/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAsB,MAAM,YAAY,CAAC;AAEzD;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAe,EAAE,UAA0B;IACrE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACR,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,iDAAiD,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAU,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,GAAG,CAAI,IAAY;IAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,iDAAiD,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAI,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAe;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Where a game's assets come from, as pure path arithmetic.
3
+ *
4
+ * In a built game, `tools/compile-resources` has already turned every asset into a `data:`
5
+ * URI inside a script that runs before the game does. `resolve` then hands back that URI
6
+ * instead of a path, which is what lets the page work from `file://`: see the tool for
7
+ * why plain files next to the page do not.
8
+ *
9
+ * During development there is no compiled bundle, so paths are used as they are and the
10
+ * dev server serves them. Game code says `load('tiles.png')` either way.
11
+ *
12
+ * Kept separate from `loader.ts` because none of this needs a renderer. Resolving a path is
13
+ * string-and-map work; only actually fetching and decoding an asset needs Pixi's loader. That
14
+ * split is what lets `mwg/3d` resolve a `.glb` path through the same compiled-asset map every
15
+ * 2D game uses while handing the fetch to Babylon, without a Babylon-only game importing
16
+ * Pixi at all - which it did, transitively, purely because these two halves shared a file.
17
+ */
18
+ declare global {
19
+ interface Window {
20
+ __MWG_ASSETS__?: Record<string, string>;
21
+ }
22
+ }
23
+ /** points dev-mode lookups at the folder assets are served from */
24
+ export declare function setBase(path: string): void;
25
+ /** true when running against a compiled bundle rather than a dev server */
26
+ export declare function isCompiled(): boolean;
27
+ export declare function paths(): string[];
28
+ export declare function has(path: string): boolean;
29
+ /** an asset path resolved to something the browser can actually load */
30
+ export declare function resolve(path: string): string;
31
+ /**
32
+ * 0 (started) to 1 (complete) - a count of assets finished, not a byte count. Pixi's own
33
+ * loaders do not expose bytes transferred across every asset type uniformly, so this reports
34
+ * what is actually available rather than a byte figure it cannot back with a real number.
35
+ *
36
+ * Lives here rather than with the loader so `Streaming.ts` can name it without either file
37
+ * importing the other's module barrel, which is what made these two a cycle before.
38
+ */
39
+ export type AssetProgress = (fraction: number) => void;
40
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/assets/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;CACD;AAKD,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE1C;AAMD,2EAA2E;AAC3E,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,KAAK,IAAI,MAAM,EAAE,CAEhC;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzC;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Where a game's assets come from, as pure path arithmetic.
3
+ *
4
+ * In a built game, `tools/compile-resources` has already turned every asset into a `data:`
5
+ * URI inside a script that runs before the game does. `resolve` then hands back that URI
6
+ * instead of a path, which is what lets the page work from `file://`: see the tool for
7
+ * why plain files next to the page do not.
8
+ *
9
+ * During development there is no compiled bundle, so paths are used as they are and the
10
+ * dev server serves them. Game code says `load('tiles.png')` either way.
11
+ *
12
+ * Kept separate from `loader.ts` because none of this needs a renderer. Resolving a path is
13
+ * string-and-map work; only actually fetching and decoding an asset needs Pixi's loader. That
14
+ * split is what lets `mwg/3d` resolve a `.glb` path through the same compiled-asset map every
15
+ * 2D game uses while handing the fetch to Babylon, without a Babylon-only game importing
16
+ * Pixi at all - which it did, transitively, purely because these two halves shared a file.
17
+ */
18
+ /** the base for dev-mode paths, when assets are served rather than compiled in */
19
+ let base = '';
20
+ /** points dev-mode lookups at the folder assets are served from */
21
+ export function setBase(path) {
22
+ base = path.endsWith('/') || path === '' ? path : path + '/';
23
+ }
24
+ function compiled() {
25
+ return typeof window === 'undefined' ? undefined : window.__MWG_ASSETS__;
26
+ }
27
+ /** true when running against a compiled bundle rather than a dev server */
28
+ export function isCompiled() {
29
+ return compiled() !== undefined;
30
+ }
31
+ export function paths() {
32
+ return Object.keys(compiled() ?? {});
33
+ }
34
+ export function has(path) {
35
+ const map = compiled();
36
+ return map ? path in map : true;
37
+ }
38
+ /** an asset path resolved to something the browser can actually load */
39
+ export function resolve(path) {
40
+ const map = compiled();
41
+ if (!map)
42
+ return base + path;
43
+ const found = map[path];
44
+ if (found === undefined) {
45
+ throw new Error(`asset "${path}" is not in this build - check it is under the folder passed to compile-resources`);
46
+ }
47
+ return found;
48
+ }
49
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/assets/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,kFAAkF;AAClF,IAAI,IAAI,GAAG,EAAE,CAAC;AAEd,mEAAmE;AACnE,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ;IAChB,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;AAC1E,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,UAAU;IACzB,OAAO,QAAQ,EAAE,KAAK,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,KAAK;IACpB,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,GAAG,IAAI,CAAC;IAE7B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACd,UAAU,IAAI,mFAAmF,CACjG,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -1,4 +1,4 @@
1
- import * as Resources from '../assets/index.js';
1
+ import * as Resources from '../assets/paths.js';
2
2
  /** the real thing: an `HTMLAudioElement` pointed at a resolved asset path */
3
3
  export function createAudio(path) {
4
4
  return new Audio(Resources.resolve(path));
@@ -19,7 +19,7 @@ export declare class Field {
19
19
  get(id: string): FieldCondition | undefined;
20
20
  clear(id: string): void;
21
21
  get active(): readonly FieldCondition[];
22
- /** ticks every timed condition down by one round, clearing any that just ran out */
23
- advance(): void;
22
+ /** ticks every timed condition down by `rounds`, clearing any that just ran out */
23
+ advance(rounds?: number): void;
24
24
  }
25
25
  //# sourceMappingURL=Field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/battle/Field.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,KAAK;IACjB,OAAO,CAAC,UAAU,CAAqC;IAEvD,GAAG,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAEnC;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvB;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1C;IAED,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEtB;IAED,IAAI,MAAM,IAAI,SAAS,cAAc,EAAE,CAEtC;IAED,oFAAoF;IACpF,OAAO,IAAI,IAAI,CAOd;CACD"}
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/battle/Field.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,KAAK;IACjB,OAAO,CAAC,UAAU,CAAqC;IAEvD,GAAG,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAEnC;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvB;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1C;IAED,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEtB;IAED,IAAI,MAAM,IAAI,SAAS,cAAc,EAAE,CAEtC;IAED,mFAAmF;IACnF,OAAO,CAAC,MAAM,SAAI,GAAG,IAAI,CAOxB;CACD"}
@@ -17,12 +17,12 @@ export class Field {
17
17
  get active() {
18
18
  return [...this.conditions.values()];
19
19
  }
20
- /** ticks every timed condition down by one round, clearing any that just ran out */
21
- advance() {
20
+ /** ticks every timed condition down by `rounds`, clearing any that just ran out */
21
+ advance(rounds = 1) {
22
22
  for (const [id, condition] of this.conditions) {
23
23
  if (condition.duration === undefined)
24
24
  continue;
25
- condition.duration -= 1;
25
+ condition.duration -= rounds;
26
26
  if (condition.duration <= 0)
27
27
  this.conditions.delete(id);
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/battle/Field.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,KAAK;IAAlB;QACS,eAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;IA+BxD,CAAC;IA7BA,GAAG,CAAC,SAAyB;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,EAAU;QACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,oFAAoF;IACpF,OAAO;QACN,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS;gBAAE,SAAS;YAE/C,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC;YACxB,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/battle/Field.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,KAAK;IAAlB;QACS,eAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;IA+BxD,CAAC;IA7BA,GAAG,CAAC,SAAyB;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,EAAU;QACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,mFAAmF;IACnF,OAAO,CAAC,MAAM,GAAG,CAAC;QACjB,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS;gBAAE,SAAS;YAE/C,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC;YAC7B,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;CACD"}
@@ -1,3 +1,4 @@
1
+ import { HookRegistry } from '../core/Hooks.ts';
1
2
  /**
2
3
  * A battle-scoped place for passive effects to run code, not just push a number - the seam
3
4
  * `mwg/actors`' `StatBlock` modifiers and `applyStatusEffect` do not cover, since both are
@@ -11,19 +12,12 @@
11
12
  * check is a plain convention on top of this, not special-cased: a handler mutates a shared
12
13
  * `context` object (`{ skip: false }`, say) the same way any other side effect would, and
13
14
  * the battle loop reads it back after `emit` returns.
15
+ *
16
+ * The registry itself is `core.HookRegistry`, shared with `roguelike.CombatHooks`. What is
17
+ * battle-specific is only the shape of what a handler receives: the creature the event is
18
+ * about, plus that optional shared context.
14
19
  */
15
- export interface BattleHook<C> {
16
- event: string;
17
- handler: (creature: C, context?: unknown) => void;
18
- /** whatever registered this hook - an ability, a held item - for bulk removal via `offSource` */
19
- source?: unknown;
20
- }
21
- export declare class BattleHooks<C> {
22
- private hooks;
23
- on(event: string, handler: (creature: C, context?: unknown) => void, source?: unknown): void;
24
- /** removes every hook registered with this `source` - a fainted creature's ability leaving */
25
- offSource(source: unknown): void;
26
- /** runs every handler registered for `event`, in registration order */
27
- emit(event: string, creature: C, context?: unknown): void;
20
+ export declare class BattleHooks<C> extends HookRegistry<[creature: C, context?: unknown]> {
28
21
  }
22
+ export type { Hook as BattleHook } from '../core/Hooks.ts';
29
23
  //# sourceMappingURL=Hooks.d.ts.map