@oidoid/void 0.1.0-8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/dist/public/index.js +19 -15
  2. package/dist/public/index.js.map +4 -4
  3. package/dist/public/preload-atlas.webp +0 -0
  4. package/dist/public/void-v0.1.0+20251227.1060661.html +115 -0
  5. package/dist/schema/config-file.v0.json +86 -15
  6. package/dist/schema/level-file.v0.json +423 -0
  7. package/dist/src/audio.d.ts +1 -0
  8. package/dist/src/audio.d.ts.map +1 -0
  9. package/dist/src/demo/assets/manifest.json +2 -2
  10. package/dist/src/demo/assets/void.game.json +202 -0
  11. package/dist/src/demo/ents/cam.d.ts +6 -0
  12. package/dist/src/demo/ents/cam.d.ts.map +1 -0
  13. package/dist/src/demo/ents/cam.js +21 -0
  14. package/dist/src/demo/ents/cam.js.map +1 -0
  15. package/dist/src/demo/ents/clock.d.ts +10 -0
  16. package/dist/src/demo/ents/clock.d.ts.map +1 -0
  17. package/dist/src/demo/ents/clock.js +16 -0
  18. package/dist/src/demo/ents/clock.js.map +1 -0
  19. package/dist/src/demo/ents/draw.d.ts +6 -0
  20. package/dist/src/demo/ents/draw.d.ts.map +1 -0
  21. package/dist/src/demo/ents/draw.js +14 -0
  22. package/dist/src/demo/ents/draw.js.map +1 -0
  23. package/dist/src/demo/ents/ent.d.ts +6 -0
  24. package/dist/src/demo/ents/ent.d.ts.map +1 -0
  25. package/dist/src/demo/ents/ent.js +2 -0
  26. package/dist/src/demo/ents/ent.js.map +1 -0
  27. package/dist/src/demo/ents/loader.d.ts +6 -0
  28. package/dist/src/demo/ents/loader.d.ts.map +1 -0
  29. package/dist/src/demo/ents/loader.js +45 -0
  30. package/dist/src/demo/ents/loader.js.map +1 -0
  31. package/dist/src/demo/ents/render-toggle.d.ts +7 -0
  32. package/dist/src/demo/ents/render-toggle.d.ts.map +1 -0
  33. package/dist/src/demo/ents/render-toggle.js +8 -0
  34. package/dist/src/demo/ents/render-toggle.js.map +1 -0
  35. package/dist/src/demo/ents/tally.d.ts +8 -0
  36. package/dist/src/demo/ents/tally.d.ts.map +1 -0
  37. package/dist/src/demo/ents/tally.js +14 -0
  38. package/dist/src/demo/ents/tally.js.map +1 -0
  39. package/dist/src/demo/index.d.ts +1 -0
  40. package/dist/src/demo/index.d.ts.map +1 -0
  41. package/dist/src/demo/index.js +12 -3
  42. package/dist/src/demo/index.js.map +1 -1
  43. package/dist/src/demo/level/level-file.json +50 -0
  44. package/dist/src/demo/level/level-parser.d.ts +5 -0
  45. package/dist/src/demo/level/level-parser.d.ts.map +1 -0
  46. package/dist/src/demo/level/level-parser.js +21 -0
  47. package/dist/src/demo/level/level-parser.js.map +1 -0
  48. package/dist/src/demo/level/level-schema.d.ts +4 -0
  49. package/dist/src/demo/level/level-schema.d.ts.map +1 -0
  50. package/dist/src/demo/level/level-schema.js +2 -0
  51. package/dist/src/demo/level/level-schema.js.map +1 -0
  52. package/dist/src/demo/types/decl.d.ts +30 -0
  53. package/dist/src/demo/types/decl.d.ts.map +1 -0
  54. package/dist/src/demo/types/decl.js +2 -0
  55. package/dist/src/demo/types/decl.js.map +1 -0
  56. package/dist/src/demo/void.json +8 -4
  57. package/dist/src/ents/button.d.ts +14 -0
  58. package/dist/src/ents/button.d.ts.map +1 -0
  59. package/dist/src/ents/button.js +59 -0
  60. package/dist/src/ents/button.js.map +1 -0
  61. package/dist/src/ents/cam.d.ts +3 -0
  62. package/dist/src/ents/cam.d.ts.map +1 -0
  63. package/dist/src/ents/cam.js +2 -0
  64. package/dist/src/ents/cam.js.map +1 -0
  65. package/dist/src/ents/cursor.d.ts +20 -0
  66. package/dist/src/ents/cursor.d.ts.map +1 -0
  67. package/dist/src/ents/cursor.js +49 -0
  68. package/dist/src/ents/cursor.js.map +1 -0
  69. package/dist/src/ents/debug-input.d.ts +8 -0
  70. package/dist/src/ents/debug-input.d.ts.map +1 -0
  71. package/dist/src/ents/debug-input.js +25 -0
  72. package/dist/src/ents/debug-input.js.map +1 -0
  73. package/dist/src/ents/draw.d.ts +3 -0
  74. package/dist/src/ents/draw.d.ts.map +1 -0
  75. package/dist/src/ents/draw.js +2 -0
  76. package/dist/src/ents/draw.js.map +1 -0
  77. package/dist/src/ents/ent-query.d.ts +26 -0
  78. package/dist/src/ents/ent-query.d.ts.map +1 -0
  79. package/dist/src/ents/ent-query.js +10 -0
  80. package/dist/src/ents/ent-query.js.map +1 -0
  81. package/dist/src/ents/ent.d.ts +92 -6
  82. package/dist/src/ents/ent.d.ts.map +1 -0
  83. package/dist/src/ents/fps.d.ts +7 -0
  84. package/dist/src/ents/fps.d.ts.map +1 -0
  85. package/dist/src/ents/fps.js +14 -0
  86. package/dist/src/ents/fps.js.map +1 -0
  87. package/dist/src/ents/hud.d.ts +14 -0
  88. package/dist/src/ents/hud.d.ts.map +1 -0
  89. package/dist/src/ents/hud.js +38 -0
  90. package/dist/src/ents/hud.js.map +1 -0
  91. package/dist/src/ents/loader.d.ts +3 -0
  92. package/dist/src/ents/loader.d.ts.map +1 -0
  93. package/dist/src/ents/loader.js +2 -0
  94. package/dist/src/ents/loader.js.map +1 -0
  95. package/dist/src/ents/nine-patch.d.ts +17 -0
  96. package/dist/src/ents/nine-patch.d.ts.map +1 -0
  97. package/dist/src/ents/nine-patch.js +99 -0
  98. package/dist/src/ents/nine-patch.js.map +1 -0
  99. package/dist/src/ents/override.d.ts +8 -0
  100. package/dist/src/ents/override.d.ts.map +1 -0
  101. package/dist/src/ents/override.js +8 -0
  102. package/dist/src/ents/override.js.map +1 -0
  103. package/dist/src/ents/sprite.d.ts +8 -0
  104. package/dist/src/ents/sprite.d.ts.map +1 -0
  105. package/dist/src/ents/sprite.js +10 -0
  106. package/dist/src/ents/sprite.js.map +1 -0
  107. package/dist/src/ents/sys.d.ts +14 -0
  108. package/dist/src/ents/sys.d.ts.map +1 -0
  109. package/dist/src/ents/sys.js +2 -0
  110. package/dist/src/ents/sys.js.map +1 -0
  111. package/dist/src/ents/text.d.ts +21 -0
  112. package/dist/src/ents/text.d.ts.map +1 -0
  113. package/dist/src/ents/text.js +118 -0
  114. package/dist/src/ents/text.js.map +1 -0
  115. package/dist/src/ents/zoo.d.ts +18 -11
  116. package/dist/src/ents/zoo.d.ts.map +1 -0
  117. package/dist/src/ents/zoo.js +75 -15
  118. package/dist/src/ents/zoo.js.map +1 -1
  119. package/dist/src/graphics/atlas-parser.d.ts +3 -1
  120. package/dist/src/graphics/atlas-parser.d.ts.map +1 -0
  121. package/dist/src/graphics/atlas-parser.js.map +1 -1
  122. package/dist/src/graphics/atlas.d.ts +9 -15
  123. package/dist/src/graphics/atlas.d.ts.map +1 -0
  124. package/dist/src/graphics/cam.d.ts +13 -10
  125. package/dist/src/graphics/cam.d.ts.map +1 -0
  126. package/dist/src/graphics/cam.js +23 -17
  127. package/dist/src/graphics/cam.js.map +1 -1
  128. package/dist/src/graphics/gl.d.ts +1 -8
  129. package/dist/src/graphics/gl.d.ts.map +1 -0
  130. package/dist/src/graphics/gl.js +0 -1
  131. package/dist/src/graphics/gl.js.map +1 -1
  132. package/dist/src/graphics/layer.d.ts +21 -17
  133. package/dist/src/graphics/layer.d.ts.map +1 -0
  134. package/dist/src/graphics/layer.js +23 -18
  135. package/dist/src/graphics/layer.js.map +1 -1
  136. package/dist/src/graphics/pixel-ratio-observer.d.ts +8 -0
  137. package/dist/src/graphics/pixel-ratio-observer.d.ts.map +1 -0
  138. package/dist/src/graphics/pixel-ratio-observer.js +23 -0
  139. package/dist/src/graphics/pixel-ratio-observer.js.map +1 -0
  140. package/dist/src/graphics/render-mode.d.ts +2 -0
  141. package/dist/src/graphics/render-mode.d.ts.map +1 -0
  142. package/dist/src/graphics/render-mode.js +2 -0
  143. package/dist/src/graphics/render-mode.js.map +1 -0
  144. package/dist/src/graphics/renderer.d.ts +9 -4
  145. package/dist/src/graphics/renderer.d.ts.map +1 -0
  146. package/dist/src/graphics/renderer.js +30 -13
  147. package/dist/src/graphics/renderer.js.map +1 -1
  148. package/dist/src/graphics/sprite-frag.glsl.d.ts +1 -0
  149. package/dist/src/graphics/sprite-frag.glsl.d.ts.map +1 -0
  150. package/dist/src/graphics/sprite-frag.glsl.js +3 -4
  151. package/dist/src/graphics/sprite-frag.glsl.js.map +1 -1
  152. package/dist/src/graphics/sprite-vert.glsl.d.ts +1 -0
  153. package/dist/src/graphics/sprite-vert.glsl.d.ts.map +1 -0
  154. package/dist/src/graphics/sprite-vert.glsl.js +9 -7
  155. package/dist/src/graphics/sprite-vert.glsl.js.map +1 -1
  156. package/dist/src/graphics/sprite.d.ts +54 -16
  157. package/dist/src/graphics/sprite.d.ts.map +1 -0
  158. package/dist/src/graphics/sprite.js +109 -32
  159. package/dist/src/graphics/sprite.js.map +1 -1
  160. package/dist/src/index.d.ts +31 -6
  161. package/dist/src/index.d.ts.map +1 -0
  162. package/dist/src/index.js +33 -9
  163. package/dist/src/index.js.map +1 -1
  164. package/dist/src/input/context-menu.d.ts +1 -1
  165. package/dist/src/input/context-menu.d.ts.map +1 -0
  166. package/dist/src/input/context-menu.js +0 -1
  167. package/dist/src/input/context-menu.js.map +1 -1
  168. package/dist/src/input/gamepad.d.ts +1 -1
  169. package/dist/src/input/gamepad.d.ts.map +1 -0
  170. package/dist/src/input/gamepad.js +0 -1
  171. package/dist/src/input/gamepad.js.map +1 -1
  172. package/dist/src/input/input.d.ts +30 -23
  173. package/dist/src/input/input.d.ts.map +1 -0
  174. package/dist/src/input/input.js +53 -31
  175. package/dist/src/input/input.js.map +1 -1
  176. package/dist/src/input/keyboard.d.ts +1 -0
  177. package/dist/src/input/keyboard.d.ts.map +1 -0
  178. package/dist/src/input/pointer.d.ts +1 -0
  179. package/dist/src/input/pointer.d.ts.map +1 -0
  180. package/dist/src/input/pointer.js +11 -8
  181. package/dist/src/input/pointer.js.map +1 -1
  182. package/dist/src/input/wheel.d.ts +6 -1
  183. package/dist/src/input/wheel.d.ts.map +1 -0
  184. package/dist/src/input/wheel.js +5 -1
  185. package/dist/src/input/wheel.js.map +1 -1
  186. package/dist/src/level/level-parser.d.ts +26 -0
  187. package/dist/src/level/level-parser.d.ts.map +1 -0
  188. package/dist/src/level/level-parser.js +258 -0
  189. package/dist/src/level/level-parser.js.map +1 -0
  190. package/dist/src/level/level-schema-json.d.ts +5 -0
  191. package/dist/src/level/level-schema-json.d.ts.map +1 -0
  192. package/dist/src/level/level-schema-json.js +2 -0
  193. package/dist/src/level/level-schema-json.js.map +1 -0
  194. package/dist/src/level/level-schema.d.ts +87 -0
  195. package/dist/src/level/level-schema.d.ts.map +1 -0
  196. package/dist/src/level/level-schema.js +2 -0
  197. package/dist/src/level/level-schema.js.map +1 -0
  198. package/dist/src/level/level.d.ts +8 -0
  199. package/dist/src/level/level.d.ts.map +1 -0
  200. package/dist/src/level/level.js +2 -0
  201. package/dist/src/level/level.js.map +1 -0
  202. package/dist/src/looper.d.ts +1 -0
  203. package/dist/src/looper.d.ts.map +1 -0
  204. package/dist/src/looper.js +5 -2
  205. package/dist/src/looper.js.map +1 -1
  206. package/dist/src/mem/pool-map.d.ts +6 -0
  207. package/dist/src/mem/pool-map.d.ts.map +1 -0
  208. package/dist/src/mem/pool-map.js +2 -0
  209. package/dist/src/mem/pool-map.js.map +1 -0
  210. package/dist/src/mem/pool.d.ts +5 -1
  211. package/dist/src/mem/pool.d.ts.map +1 -0
  212. package/dist/src/mem/pool.js +22 -21
  213. package/dist/src/mem/pool.js.map +1 -1
  214. package/dist/src/mem/sprite-pool.d.ts +12 -0
  215. package/dist/src/mem/sprite-pool.d.ts.map +1 -0
  216. package/dist/src/mem/sprite-pool.js +11 -0
  217. package/dist/src/mem/sprite-pool.js.map +1 -0
  218. package/dist/src/random/random.d.ts +1 -0
  219. package/dist/src/random/random.d.ts.map +1 -0
  220. package/dist/src/storage/local-storage.d.ts +2 -1
  221. package/dist/src/storage/local-storage.d.ts.map +1 -0
  222. package/dist/src/storage/local-storage.js.map +1 -1
  223. package/dist/src/text/font.d.ts +5 -3
  224. package/dist/src/text/font.d.ts.map +1 -0
  225. package/dist/src/text/font.js +8 -5
  226. package/dist/src/text/font.js.map +1 -1
  227. package/dist/src/text/mem-prop-5x6.json +20 -5
  228. package/dist/src/text/text-layout.d.ts +16 -5
  229. package/dist/src/text/text-layout.d.ts.map +1 -0
  230. package/dist/src/text/text-layout.js +46 -28
  231. package/dist/src/text/text-layout.js.map +1 -1
  232. package/dist/src/types/bundle.d.ts +10 -0
  233. package/dist/src/types/bundle.d.ts.map +1 -0
  234. package/dist/src/types/bundle.js +2 -0
  235. package/dist/src/types/bundle.js.map +1 -0
  236. package/dist/src/types/game-config.d.ts +27 -0
  237. package/dist/src/types/game-config.d.ts.map +1 -0
  238. package/dist/src/types/game-config.js +2 -0
  239. package/dist/src/types/game-config.js.map +1 -0
  240. package/dist/src/types/geo.d.ts +9 -2
  241. package/dist/src/types/geo.d.ts.map +1 -0
  242. package/dist/src/types/geo.js +16 -0
  243. package/dist/src/types/geo.js.map +1 -1
  244. package/dist/src/types/json.d.ts +1 -0
  245. package/dist/src/types/json.d.ts.map +1 -0
  246. package/dist/src/types/time.d.ts +13 -2
  247. package/dist/src/types/time.d.ts.map +1 -0
  248. package/dist/src/types/time.js +10 -0
  249. package/dist/src/types/time.js.map +1 -1
  250. package/dist/src/utils/async-util.d.ts +1 -0
  251. package/dist/src/utils/async-util.d.ts.map +1 -0
  252. package/dist/src/utils/async-util.js +2 -0
  253. package/dist/src/utils/async-util.js.map +1 -1
  254. package/dist/src/utils/canvas-util.d.ts +3 -1
  255. package/dist/src/utils/canvas-util.d.ts.map +1 -0
  256. package/dist/src/utils/canvas-util.js +7 -3
  257. package/dist/src/utils/canvas-util.js.map +1 -1
  258. package/dist/src/utils/color-util.d.ts +6 -0
  259. package/dist/src/utils/color-util.d.ts.map +1 -0
  260. package/dist/src/utils/color-util.js +12 -0
  261. package/dist/src/utils/color-util.js.map +1 -1
  262. package/dist/src/utils/debug.d.ts +1 -0
  263. package/dist/src/utils/debug.d.ts.map +1 -0
  264. package/dist/src/utils/debug.js +4 -4
  265. package/dist/src/utils/debug.js.map +1 -1
  266. package/dist/src/utils/delay-interval.d.ts +1 -0
  267. package/dist/src/utils/delay-interval.d.ts.map +1 -0
  268. package/dist/src/utils/dom-util.d.ts +3 -2
  269. package/dist/src/utils/dom-util.d.ts.map +1 -0
  270. package/dist/src/utils/dom-util.js +16 -12
  271. package/dist/src/utils/dom-util.js.map +1 -1
  272. package/dist/src/utils/fetch-util.d.ts +2 -1
  273. package/dist/src/utils/fetch-util.d.ts.map +1 -0
  274. package/dist/src/utils/fetch-util.js +2 -2
  275. package/dist/src/utils/math.d.ts +1 -0
  276. package/dist/src/utils/math.d.ts.map +1 -0
  277. package/dist/src/utils/math.js +1 -1
  278. package/dist/src/utils/math.js.map +1 -1
  279. package/dist/src/utils/obj-util.d.ts +7 -0
  280. package/dist/src/utils/obj-util.d.ts.map +1 -0
  281. package/dist/src/utils/obj-util.js +8 -0
  282. package/dist/src/utils/obj-util.js.map +1 -0
  283. package/dist/src/utils/str-util.d.ts +2 -0
  284. package/dist/src/utils/str-util.d.ts.map +1 -0
  285. package/dist/src/utils/str-util.js +6 -0
  286. package/dist/src/utils/str-util.js.map +1 -0
  287. package/dist/src/utils/vibrate.d.ts +1 -0
  288. package/dist/src/utils/vibrate.d.ts.map +1 -0
  289. package/dist/src/void.d.ts +42 -30
  290. package/dist/src/void.d.ts.map +1 -0
  291. package/dist/src/void.js +78 -34
  292. package/dist/src/void.js.map +1 -1
  293. package/dist/tools/atlas-pack/aseprite-json.d.ts +5 -0
  294. package/dist/tools/atlas-pack/aseprite-json.d.ts.map +1 -0
  295. package/dist/tools/atlas-pack/aseprite-json.js +2 -0
  296. package/dist/tools/atlas-pack/aseprite-json.js.map +1 -0
  297. package/dist/tools/atlas-pack/aseprite.d.ts +58 -31
  298. package/dist/tools/atlas-pack/aseprite.d.ts.map +1 -0
  299. package/dist/tools/atlas-pack/aseprite.js +1 -1
  300. package/dist/tools/atlas-pack/aseprite.js.map +1 -1
  301. package/dist/tools/atlas-pack/atlas-json-parser.d.ts +11 -10
  302. package/dist/tools/atlas-pack/atlas-json-parser.d.ts.map +1 -0
  303. package/dist/tools/atlas-pack/atlas-json-parser.js +14 -14
  304. package/dist/tools/atlas-pack/atlas-json-parser.js.map +1 -1
  305. package/dist/tools/atlas-pack/atlas-pack.d.ts +4 -2
  306. package/dist/tools/atlas-pack/atlas-pack.d.ts.map +1 -0
  307. package/dist/tools/atlas-pack/atlas-pack.js +1 -6
  308. package/dist/tools/atlas-pack/atlas-pack.js.map +1 -1
  309. package/dist/tools/bundle/bundle.d.ts +3 -3
  310. package/dist/tools/bundle/bundle.d.ts.map +1 -0
  311. package/dist/tools/bundle/bundle.js +32 -7
  312. package/dist/tools/bundle/bundle.js.map +1 -1
  313. package/dist/tools/bundle/html-plugin.d.ts +1 -0
  314. package/dist/tools/bundle/html-plugin.d.ts.map +1 -0
  315. package/dist/tools/bundle/html-plugin.js +5 -20
  316. package/dist/tools/bundle/html-plugin.js.map +1 -1
  317. package/dist/tools/tsconfig-base.json +1 -1
  318. package/dist/tools/tsconfig.json +1 -2
  319. package/dist/{schema → tools/types}/config-file.d.ts +21 -9
  320. package/dist/tools/types/config-file.d.ts.map +1 -0
  321. package/dist/{schema → tools/types}/config-file.js +18 -5
  322. package/dist/tools/types/config-file.js.map +1 -0
  323. package/dist/tools/types/config.d.ts +10 -9
  324. package/dist/tools/types/config.d.ts.map +1 -0
  325. package/dist/tools/types/config.js +23 -5
  326. package/dist/tools/types/config.js.map +1 -1
  327. package/dist/tools/types/package-json.d.ts +3 -2
  328. package/dist/tools/types/package-json.d.ts.map +1 -0
  329. package/dist/tools/utils/argv.d.ts +3 -0
  330. package/dist/tools/utils/argv.d.ts.map +1 -0
  331. package/dist/tools/utils/argv.js +1 -1
  332. package/dist/tools/utils/argv.js.map +1 -1
  333. package/dist/tools/utils/exec.d.ts +2 -1
  334. package/dist/tools/utils/exec.d.ts.map +1 -0
  335. package/dist/tools/utils/exec.js.map +1 -1
  336. package/dist/tools/utils/file-util.d.ts +1 -0
  337. package/dist/tools/utils/file-util.d.ts.map +1 -0
  338. package/dist/tools/utils/html-parser.d.ts +1 -0
  339. package/dist/tools/utils/html-parser.d.ts.map +1 -0
  340. package/dist/tools/void.d.ts +1 -0
  341. package/dist/tools/void.d.ts.map +1 -0
  342. package/dist/tools/void.js +3 -16
  343. package/dist/tools/void.js.map +1 -1
  344. package/package.json +13 -14
  345. package/readme.md +63 -1
  346. package/dist/package.json +0 -65
  347. package/dist/public/void-v0.1.0-8+20251022.b364155.html +0 -111
  348. package/dist/schema/config-file.js.map +0 -1
  349. package/dist/src/demo/assets/preload-atlas.json +0 -193
  350. package/dist/src/demo/ents/clock-ent.d.ts +0 -11
  351. package/dist/src/demo/ents/clock-ent.js +0 -26
  352. package/dist/src/demo/ents/clock-ent.js.map +0 -1
  353. package/dist/src/demo/ents/render-toggle-ent.d.ts +0 -12
  354. package/dist/src/demo/ents/render-toggle-ent.js +0 -41
  355. package/dist/src/demo/ents/render-toggle-ent.js.map +0 -1
  356. package/dist/src/demo/ents/work-counter-ent.d.ts +0 -10
  357. package/dist/src/demo/ents/work-counter-ent.js +0 -20
  358. package/dist/src/demo/ents/work-counter-ent.js.map +0 -1
  359. package/dist/src/demo/game.d.ts +0 -12
  360. package/dist/src/demo/game.js +0 -135
  361. package/dist/src/demo/game.js.map +0 -1
  362. package/dist/src/demo/types/tag.d.ts +0 -2
  363. package/dist/src/demo/types/tag.js +0 -2
  364. package/dist/src/demo/types/tag.js.map +0 -1
  365. package/dist/src/ents/button-ent.d.ts +0 -39
  366. package/dist/src/ents/button-ent.js +0 -128
  367. package/dist/src/ents/button-ent.js.map +0 -1
  368. package/dist/src/ents/cursor-ent.d.ts +0 -18
  369. package/dist/src/ents/cursor-ent.js +0 -63
  370. package/dist/src/ents/cursor-ent.js.map +0 -1
  371. package/dist/src/ents/follow-cam-ent.d.ts +0 -25
  372. package/dist/src/ents/follow-cam-ent.js +0 -87
  373. package/dist/src/ents/follow-cam-ent.js.map +0 -1
  374. package/dist/src/ents/nine-patch-ent.d.ts +0 -43
  375. package/dist/src/ents/nine-patch-ent.js +0 -143
  376. package/dist/src/ents/nine-patch-ent.js.map +0 -1
  377. package/dist/src/ents/text-ent.d.ts +0 -23
  378. package/dist/src/ents/text-ent.js +0 -109
  379. package/dist/src/ents/text-ent.js.map +0 -1
  380. package/dist/src/types/void-version.d.ts +0 -7
  381. package/dist/src/types/void-version.js +0 -2
  382. package/dist/src/types/void-version.js.map +0 -1
@@ -0,0 +1,49 @@
1
+ import { Layer } from "../graphics/layer.js";
2
+ import { truncDrawableEpsilon } from "../graphics/sprite.js";
3
+ export class CursorSys {
4
+ query = 'cursor & sprite';
5
+ update(ent, v) {
6
+ if (v.input.point?.invalid)
7
+ onPoint(ent, v.input.point);
8
+ // assume the sprite dimensions don't vary between point and pick. always
9
+ // update in case cam invalidates while keyboard is temporarily off.
10
+ updateBounds(ent, v);
11
+ if (ent.cursor.keyboard &&
12
+ (v.input.dir.x ||
13
+ v.input.dir.y ||
14
+ (!v.input.point && v.input.isAnyStarted('A'))))
15
+ onKey(ent, v.input, v.tick.s);
16
+ if (ent.cursor.pick)
17
+ ent.sprite.tag = v.input.isOn('A') ? ent.cursor.pick : ent.cursor.point;
18
+ }
19
+ }
20
+ /** @internal */
21
+ export function onKey(ent, input, tick) {
22
+ const len = truncDrawableEpsilon(ent.cursor.keyboard * tick);
23
+ if (input.isAnyOnStart('U', 'D', 'L', 'R') && input.dir.x && input.dir.y)
24
+ ent.sprite.diagonalize(input.dir);
25
+ if (input.dir.x)
26
+ ent.sprite.x = Math.min(ent.cursor.bounds.x + ent.cursor.bounds.w, Math.max(ent.cursor.bounds.x, ent.sprite.x + input.dir.x * len));
27
+ if (input.dir.y)
28
+ ent.sprite.y = Math.min(ent.cursor.bounds.y + ent.cursor.bounds.h, Math.max(ent.cursor.bounds.y, ent.sprite.y + input.dir.y * len));
29
+ ent.sprite.z = Layer.Top;
30
+ ent.sprite.visible = true;
31
+ ent.invalid = true;
32
+ }
33
+ /** @internal */
34
+ export function onPoint(ent, point) {
35
+ ent.sprite.x = point.local.x;
36
+ ent.sprite.y = point.local.y;
37
+ ent.sprite.z = Layer.Top;
38
+ ent.sprite.visible = point.type === 'Mouse';
39
+ ent.invalid = true;
40
+ }
41
+ function updateBounds(ent, v) {
42
+ if (!v.cam.invalid)
43
+ return;
44
+ ent.cursor.bounds.x = -ent.sprite.w;
45
+ ent.cursor.bounds.y = -ent.sprite.h;
46
+ ent.cursor.bounds.w = v.cam.w + ent.sprite.w;
47
+ ent.cursor.bounds.h = v.cam.h + ent.sprite.h;
48
+ }
49
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/ents/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,sBAAsB,CAAA;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAA;AAgB1D,MAAM,OAAO,SAAS;IACX,KAAK,GAAG,iBAAiB,CAAA;IAElC,MAAM,CAAC,GAAc,EAAE,CAAO;QAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO;YAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEvD,yEAAyE;QACzE,oEAAoE;QACpE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAEpB,IACE,GAAG,CAAC,MAAM,CAAC,QAAQ;YACnB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACZ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAEhD,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE/B,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI;YACjB,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAA;IAC3E,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,UAAU,KAAK,CAAC,GAAc,EAAE,KAAY,EAAE,IAAU;IAC5D,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAE5D,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEnC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACrB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAChE,CAAA;IACH,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACrB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAChE,CAAA;IACH,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAA;IACxB,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IACzB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;AACpB,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,OAAO,CACrB,GAAc,EACd,KAAwD;IAExD,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAA;IACxB,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAA;IAC3C,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,GAAc,EAAE,CAAO;IAC3C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;QAAE,OAAM;IAC1B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACnC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACnC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5C,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Void } from '../void.ts';
2
+ import type { Sys, SysEnt } from './sys.ts';
3
+ export type DebutInputEnt = SysEnt<DebutInputSys>;
4
+ export declare class DebutInputSys implements Sys {
5
+ readonly query = "debugInput";
6
+ update(_ent: DebutInputEnt, v: Void): void;
7
+ }
8
+ //# sourceMappingURL=debug-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-input.d.ts","sourceRoot":"","sources":["../../../src/ents/debug-input.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,UAAU,CAAA;AAEzC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAEjD,qBAAa,aAAc,YAAW,GAAG;IACvC,QAAQ,CAAC,KAAK,gBAAe;IAE7B,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI;CA0B3C"}
@@ -0,0 +1,25 @@
1
+ import { debug } from "../utils/debug.js";
2
+ export class DebutInputSys {
3
+ query = 'debugInput';
4
+ update(_ent, v) {
5
+ if (!debug?.input)
6
+ return;
7
+ if (v.input.started) {
8
+ const on = !!v.input.on.length;
9
+ if (on)
10
+ console.debug(`[input] buttons on: ${v.input.on.join(' ')}.`);
11
+ else
12
+ console.debug(`[input] buttons off.`);
13
+ const combo = v.input.combo;
14
+ if (combo.length > 1 && on)
15
+ console.debug(`[input] combo: ${combo.map(set => set.join('+')).join(' ')}.`);
16
+ }
17
+ if (v.input.point?.invalid && v.input.point?.click && !v.input.point.pinch)
18
+ console.debug(`[input] ${v.input.point.drag.on ? 'drag' : 'click'} xy: ${v.input.point.x} ${v.input.point.y}.`);
19
+ if (v.input.point?.pinch)
20
+ console.debug(`[input] pinch xy: ${v.input.point.pinch.xy.x} ${v.input.point.pinch.xy.y}.`);
21
+ if (v.input.wheel)
22
+ console.debug(`[input] wheel xy: ${v.input.wheel.delta.xy.x} ${v.input.wheel.delta.xy.y}.`);
23
+ }
24
+ }
25
+ //# sourceMappingURL=debug-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-input.js","sourceRoot":"","sources":["../../../src/ents/debug-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAA;AAMvC,MAAM,OAAO,aAAa;IACf,KAAK,GAAG,YAAY,CAAA;IAE7B,MAAM,CAAC,IAAmB,EAAE,CAAO;QACjC,IAAI,CAAC,KAAK,EAAE,KAAK;YAAE,OAAM;QAEzB,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAA;YAC9B,IAAI,EAAE;gBAAE,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;;gBAChE,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;YAC3B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE;gBACxB,OAAO,CAAC,KAAK,CACX,kBAAkB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAC/D,CAAA;QACL,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;YACxE,OAAO,CAAC,KAAK,CACX,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CACjG,CAAA;QACH,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK;YACtB,OAAO,CAAC,KAAK,CACX,qBAAqB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAC7E,CAAA;QACH,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK;YACf,OAAO,CAAC,KAAK,CACX,qBAAqB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAC7E,CAAA;IACL,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { QueryEnt } from './ent-query.ts';
2
+ export type DrawEnt = QueryEnt<'draw'>;
3
+ //# sourceMappingURL=draw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../../src/ents/draw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAE5C,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=draw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw.js","sourceRoot":"","sources":["../../../src/ents/draw.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import type { Ent } from './ent.ts';
2
+ /** map Query to a required subset of Ent. */
3
+ export type QueryEnt<Query> = Ent & ExactQueryEnt<Required<Ent>, Query>;
4
+ /** map Query to a subset of Ent. */
5
+ type ExactQueryEnt<Ent, Query> = Query extends keyof Ent ? {
6
+ [Key in Query]: Ent[Query];
7
+ } : Query extends `!${infer Key extends keyof Ent & string}` ? {
8
+ [K in Key]?: never;
9
+ } : Query extends `${infer Key extends keyof Ent & string} & ${infer Rest}` ? {
10
+ [K in Key]: Ent[K & keyof Ent];
11
+ } & ExactQueryEnt<Ent, Rest> : Query extends `!${infer Key extends keyof Ent & string} & ${infer Rest}` ? {
12
+ [K in Key]?: never;
13
+ } & ExactQueryEnt<Ent, Rest> : Query extends `${infer Key extends keyof Ent & string} | ${infer Rest}` ? {
14
+ [K in Key]: Ent[K & keyof Ent];
15
+ } | ExactQueryEnt<Ent, Rest> : Query extends `!${infer Key extends keyof Ent & string} | ${infer Rest}` ? {
16
+ [K in Key]?: never;
17
+ } | ExactQueryEnt<Ent, Rest> : never;
18
+ /**
19
+ * Query if valid, never otherwise. query is of the form
20
+ * `[!]<key>[ <& or |><query>]`. eg, `'a & b | !a & c'`. no grouping is
21
+ * permitted.
22
+ */
23
+ export type EQL<Ent, Query> = Query extends `${'!' | ''}${keyof Ent & string}` ? Query : Query extends `${infer Term extends `${'!' | ''}${keyof Ent & string}`} & ${infer Rest}` ? `${Term} & ${EQL<Ent, Rest>}` : Query extends `${infer Term extends `${'!' | ''}${keyof Ent & string}`} | ${infer Rest}` ? `${Term} | ${EQL<Ent, Rest>}` : never;
24
+ export declare function parseQuerySet<const Query>(query: EQL<Ent, Query>): string[][];
25
+ export {};
26
+ //# sourceMappingURL=ent-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ent-query.d.ts","sourceRoot":"","sources":["../../../src/ents/ent-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAA;AAEjC,6CAA6C;AAC7C,MAAM,MAAM,QAAQ,CAAC,KAAK,IAAI,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;AAEvE,oCAAoC;AACpC,KAAK,aAAa,CAAC,GAAG,EAAE,KAAK,IAAI,KAAK,SAAS,MAAM,GAAG,GACpD;KAAE,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;CAAC,GAC5B,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,MAAM,GAAG,GAAG,MAAM,EAAE,GACtD;KAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK;CAAC,GACpB,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,MAAM,GAAG,GAAG,MAAM,MAAM,MAAM,IAAI,EAAE,GACrE;KAAE,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAC3D,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,MAAM,GAAG,GAAG,MAAM,MAAM,MAAM,IAAI,EAAE,GACtE;KAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK;CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAC/C,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,MAAM,GAAG,GAAG,MAAM,MAAM,MAAM,IAAI,EAAE,GACrE;KAAE,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAC3D,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,MAAM,GAAG,GAAG,MAAM,MAAM,MAAM,IAAI,EAAE,GACtE;KAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK;CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAC/C,KAAK,CAAA;AACnB;;;;GAIG;AACH,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,KAAK,SAAS,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE,GAC1E,KAAK,GACL,KAAK,SAAS,GAAG,MAAM,IAAI,SAAS,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,GACtF,GAAG,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAC7B,KAAK,SAAS,GAAG,MAAM,IAAI,SAAS,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,GACtF,GAAG,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAC7B,KAAK,CAAA;AAEb,wBAAgB,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,EAAE,CAK7E"}
@@ -0,0 +1,10 @@
1
+ export function parseQuerySet(query) {
2
+ return query
3
+ .split(' | ')
4
+ .sort(compareEn)
5
+ .map(and => and.split(' & ').sort(compareEn));
6
+ }
7
+ function compareEn(l, r) {
8
+ return l.localeCompare(r, 'en');
9
+ }
10
+ //# sourceMappingURL=ent-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ent-query.js","sourceRoot":"","sources":["../../../src/ents/ent-query.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,aAAa,CAAc,KAAsB;IAC/D,OAAO,KAAK;SACT,KAAK,CAAC,KAAK,CAAC;SACZ,IAAI,CAAC,SAAS,CAAC;SACf,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACjC,CAAC"}
@@ -1,7 +1,93 @@
1
- import type { TagFormat } from '../graphics/atlas.ts';
2
- import type { Void } from '../void.ts';
3
- export interface Ent<out Tag extends TagFormat> {
4
- free?(v: Void<Tag, string>): void;
5
- /** returns true if a render is required. */
6
- update?(v: Void<Tag, string>): boolean | undefined;
1
+ import type { Tag } from '../graphics/atlas.ts';
2
+ import type { Layer } from '../graphics/layer.ts';
3
+ import type { Sprite } from '../graphics/sprite.ts';
4
+ import type { TextLayout } from '../text/text-layout.ts';
5
+ import type { Border, Box, CompassDir, XY } from '../types/geo.ts';
6
+ import type { Millis } from '../types/time.ts';
7
+ /**
8
+ * it doesn't really make sense for ents to be classes because their shared
9
+ * independent component bags still need to be passed in.
10
+ */
11
+ export interface Ent {
12
+ button?: Button;
13
+ cam?: CamUpdater;
14
+ cursor?: Cursor;
15
+ draw?: Draw;
16
+ debugInput?: DebugInput;
17
+ fps?: FPS;
18
+ hud?: HUD;
19
+ id?: string;
20
+ /**
21
+ * recompute and render update if true. ok to set from anywhere but zoo or
22
+ * override must clear. ents read invalid to test if an update is necessary.
23
+ * ents write invalid to flag rendering and recompute by other systems. ents
24
+ * should not look at each other's invalid state since it's cleared on update.
25
+ */
26
+ invalid?: boolean;
27
+ loader?: Loader;
28
+ name?: string;
29
+ ninePatch?: NinePatch;
30
+ override?: Override;
31
+ sprite?: Sprite;
32
+ text?: string;
33
+ textWH?: TextWH;
34
+ textXY?: TextXY;
7
35
  }
36
+ export type Button = {
37
+ started: boolean;
38
+ pressed: Sprite;
39
+ selected: Sprite;
40
+ type: ButtonType;
41
+ };
42
+ export type ButtonType = 'Button' | 'Toggle';
43
+ export interface CamUpdater {
44
+ }
45
+ export type Cursor = {
46
+ /** screen area cursor may move within. */
47
+ bounds: Box;
48
+ keyboard: number;
49
+ pick?: Tag;
50
+ point: Tag;
51
+ };
52
+ export interface Draw {
53
+ }
54
+ export type DebugInput = true;
55
+ export type FPS = {
56
+ prevFrames: number;
57
+ next: {
58
+ created: Millis;
59
+ frames: number;
60
+ };
61
+ };
62
+ export type HUD = {
63
+ fill?: XYFlag;
64
+ margin: Border;
65
+ modulo: XY;
66
+ origin: CompassDir;
67
+ };
68
+ export interface Loader {
69
+ }
70
+ export type NinePatch = {
71
+ border: Border;
72
+ pad: Border;
73
+ patch: {
74
+ [dir in Lowercase<CompassDir>]?: Sprite;
75
+ };
76
+ };
77
+ export type Override = {
78
+ invalid?: boolean;
79
+ };
80
+ export type TextWH = {
81
+ maxW: number;
82
+ layout: TextLayout;
83
+ pad: Border;
84
+ scale: number;
85
+ trim: Trim | undefined;
86
+ };
87
+ export type Trim = 'Leading' | 'Descender';
88
+ export type TextXY = {
89
+ chars: Sprite[];
90
+ z: Layer;
91
+ };
92
+ export type XYFlag = 'XY' | 'X' | 'Y';
93
+ //# sourceMappingURL=ent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ent.d.ts","sourceRoot":"","sources":["../../../src/ents/ent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Sys, SysEnt } from './sys.ts';
2
+ export type FPSEnt = SysEnt<FPSSys>;
3
+ export declare class FPSSys implements Sys {
4
+ readonly query = "fps & text";
5
+ update(ent: FPSEnt): void;
6
+ }
7
+ //# sourceMappingURL=fps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fps.d.ts","sourceRoot":"","sources":["../../../src/ents/fps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,UAAU,CAAA;AAEzC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAEnC,qBAAa,MAAO,YAAW,GAAG;IAChC,QAAQ,CAAC,KAAK,gBAAe;IAE7B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAU1B"}
@@ -0,0 +1,14 @@
1
+ export class FPSSys {
2
+ query = 'fps & text';
3
+ update(ent) {
4
+ const now = performance.now();
5
+ if (now - ent.fps.next.created >= 1000) {
6
+ ent.fps.prevFrames = ent.fps.next.frames;
7
+ ent.fps.next = { created: now, frames: 0 };
8
+ }
9
+ ent.fps.next.frames++;
10
+ ent.text = ent.fps.prevFrames.toString().padStart(3, ' ');
11
+ ent.invalid = true;
12
+ }
13
+ }
14
+ //# sourceMappingURL=fps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fps.js","sourceRoot":"","sources":["../../../src/ents/fps.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,MAAM;IACR,KAAK,GAAG,YAAY,CAAA;IAE7B,MAAM,CAAC,GAAW;QAChB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC7B,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;YACxC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAC,CAAA;QAC1C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;QACrB,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACzD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import { type Border, type CompassDir, type XY } from '../types/geo.ts';
2
+ import type { Void } from '../void.ts';
3
+ import type { Sys, SysEnt } from './sys.ts';
4
+ export type HUDEnt = SysEnt<HUDSys>;
5
+ /** reads invalid, hud, sprite WH and z; writes invalid, sprite XY, WH. */
6
+ export declare class HUDSys implements Sys {
7
+ readonly query = "hud & sprite";
8
+ update(ent: HUDEnt, v: Void): void;
9
+ }
10
+ export declare function hudSetFill(ent: HUDEnt, fill: 'X' | 'Y' | 'XY' | undefined): void;
11
+ export declare function hudSetMargin(ent: HUDEnt, margin: Readonly<Border>): void;
12
+ export declare function hudSetModulo(ent: HUDEnt, modulo: Readonly<XY>): void;
13
+ export declare function hudSetOrigin(ent: HUDEnt, origin: CompassDir): void;
14
+ //# sourceMappingURL=hud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hud.d.ts","sourceRoot":"","sources":["../../../src/ents/hud.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAIX,KAAK,UAAU,EACf,KAAK,EAAE,EAGR,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,UAAU,CAAA;AAEzC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAEnC,0EAA0E;AAC1E,qBAAa,MAAO,YAAW,GAAG;IAChC,QAAQ,CAAC,KAAK,kBAAiB;IAE/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI;CAYnC;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,GACjC,IAAI,CAIN;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAIxE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAIpE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAIlE"}
@@ -0,0 +1,38 @@
1
+ import { borderAssign, borderEq, boxAssign, xyAssign, xyEq } from "../types/geo.js";
2
+ /** reads invalid, hud, sprite WH and z; writes invalid, sprite XY, WH. */
3
+ export class HUDSys {
4
+ query = 'hud & sprite';
5
+ update(ent, v) {
6
+ if (!ent.invalid && !v.cam.invalid)
7
+ return;
8
+ const follow = v.cam.follow(ent.sprite, ent.sprite.z, ent.hud.origin, ent.hud);
9
+ boxAssign(ent.sprite, follow);
10
+ ent.invalid = true; // to-do: unclear if having wrappers for uniformly like
11
+ // textSetText() is worth it.
12
+ }
13
+ }
14
+ export function hudSetFill(ent, fill) {
15
+ if (ent.hud.fill === fill)
16
+ return;
17
+ ent.hud.fill = fill;
18
+ ent.invalid = true;
19
+ }
20
+ export function hudSetMargin(ent, margin) {
21
+ if (borderEq(ent.hud.margin, margin))
22
+ return;
23
+ borderAssign(ent.hud.margin, margin);
24
+ ent.invalid = true;
25
+ }
26
+ export function hudSetModulo(ent, modulo) {
27
+ if (xyEq(ent.hud.modulo, modulo))
28
+ return;
29
+ xyAssign(ent.hud.modulo, modulo);
30
+ ent.invalid = true;
31
+ }
32
+ export function hudSetOrigin(ent, origin) {
33
+ if (ent.hud.origin === origin)
34
+ return;
35
+ ent.hud.origin = origin;
36
+ ent.invalid = true;
37
+ }
38
+ //# sourceMappingURL=hud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hud.js","sourceRoot":"","sources":["../../../src/ents/hud.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,QAAQ,EACR,SAAS,EAGT,QAAQ,EACR,IAAI,EACL,MAAM,iBAAiB,CAAA;AAMxB,0EAA0E;AAC1E,MAAM,OAAO,MAAM;IACR,KAAK,GAAG,cAAc,CAAA;IAE/B,MAAM,CAAC,GAAW,EAAE,CAAO;QACzB,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;YAAE,OAAM;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CACzB,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,MAAM,CAAC,CAAC,EACZ,GAAG,CAAC,GAAG,CAAC,MAAM,EACd,GAAG,CAAC,GAAG,CACR,CAAA;QACD,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA,CAAC,uDAAuD;QAC1E,8BAA8B;IAChC,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,IAAkC;IAElC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI;QAAE,OAAM;IACjC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACnB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAwB;IAChE,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;QAAE,OAAM;IAC5C,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAoB;IAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;QAAE,OAAM;IACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAkB;IAC1D,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAM;IACrC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACvB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;AACpB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { QueryEnt } from './ent-query.ts';
2
+ export type LoaderEnt = QueryEnt<'loader'>;
3
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/ents/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/ents/loader.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import type { XY } from '../types/geo.ts';
2
+ import type { Sys, SysEnt } from './sys.ts';
3
+ export type NinePatchEnt = SysEnt<NinePatchSys>;
4
+ /** reads invalid, sprite XY and WH; writes ninePatch, invalid. */
5
+ export declare class NinePatchSys implements Sys {
6
+ readonly query = "ninePatch & sprite";
7
+ free(ent: NinePatchEnt): void;
8
+ update(ent: NinePatchEnt): void;
9
+ }
10
+ export declare function ninePatchFree(ent: NinePatchEnt): void;
11
+ /** @internal */
12
+ export declare function setWH(ent: NinePatchEnt): void;
13
+ /** @internal */
14
+ export declare function setXYEnd(ent: Readonly<NinePatchEnt>, start: Readonly<XY>): void;
15
+ /** @internal */
16
+ export declare function setXYStart(ent: NinePatchEnt, start: Readonly<XY>): void;
17
+ //# sourceMappingURL=nine-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nine-patch.d.ts","sourceRoot":"","sources":["../../../src/ents/nine-patch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,EAAE,EAAC,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,UAAU,CAAA;AAEzC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAE/C,kEAAkE;AAClE,qBAAa,YAAa,YAAW,GAAG;IACtC,QAAQ,CAAC,KAAK,wBAAuB;IAErC,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAI7B,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;CAOhC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAYrD;AAOD,gBAAgB;AAChB,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAa7C;AAED,gBAAgB;AAChB,wBAAgB,QAAQ,CACtB,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,GAClB,IAAI,CA0BN;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAmBvE"}
@@ -0,0 +1,99 @@
1
+ /** reads invalid, sprite XY and WH; writes ninePatch, invalid. */
2
+ export class NinePatchSys {
3
+ query = 'ninePatch & sprite';
4
+ free(ent) {
5
+ ninePatchFree(ent);
6
+ }
7
+ update(ent) {
8
+ if (!ent.invalid)
9
+ return;
10
+ const start = getStart(ent);
11
+ setXYStart(ent, start);
12
+ setWH(ent);
13
+ setXYEnd(ent, start);
14
+ }
15
+ }
16
+ export function ninePatchFree(ent) {
17
+ ent.ninePatch.patch.w?.free();
18
+ ent.ninePatch.patch.nw?.free();
19
+ ent.ninePatch.patch.n?.free();
20
+ ent.ninePatch.patch.ne?.free();
21
+ ent.ninePatch.patch.e?.free();
22
+ ent.ninePatch.patch.se?.free();
23
+ ent.ninePatch.patch.s?.free();
24
+ ent.ninePatch.patch.sw?.free();
25
+ ent.ninePatch.patch.center?.free();
26
+ ent.invalid = true;
27
+ // to-do: how to update zoo synchronously to remove the component and not run update()?
28
+ }
29
+ function getStart(ent) {
30
+ const { sprite, ninePatch } = ent;
31
+ return { x: sprite.x + ninePatch.pad.w, y: sprite.y + ninePatch.pad.n };
32
+ }
33
+ /** @internal */
34
+ export function setWH(ent) {
35
+ const { border, pad, patch } = ent.ninePatch;
36
+ const w = ent.sprite.w - border.w - border.e - pad.w - pad.e;
37
+ const h = ent.sprite.h - border.n - border.s - pad.n - pad.s;
38
+ if (patch.n)
39
+ patch.n.w = w;
40
+ if (patch.s)
41
+ patch.s.w = w;
42
+ if (patch.w)
43
+ patch.w.h = h;
44
+ if (patch.e)
45
+ patch.e.h = h;
46
+ if (patch.center) {
47
+ patch.center.w = w;
48
+ patch.center.h = h;
49
+ }
50
+ }
51
+ /** @internal */
52
+ export function setXYEnd(ent, start) {
53
+ const { patch, pad, border } = ent.ninePatch;
54
+ const end = {
55
+ x: ent.sprite.x + ent.sprite.w - border.e - pad.e,
56
+ y: ent.sprite.y + ent.sprite.h - border.s - pad.s
57
+ };
58
+ if (patch.ne) {
59
+ patch.ne.x = end.x;
60
+ patch.ne.y = start.y;
61
+ }
62
+ if (patch.e) {
63
+ patch.e.x = end.x;
64
+ patch.e.y = start.y + border.n;
65
+ }
66
+ if (patch.se) {
67
+ patch.se.x = end.x;
68
+ patch.se.y = end.y;
69
+ }
70
+ if (patch.s) {
71
+ patch.s.x = start.x + border.w;
72
+ patch.s.y = end.y;
73
+ }
74
+ if (patch.sw) {
75
+ patch.sw.x = start.x;
76
+ patch.sw.y = end.y;
77
+ }
78
+ }
79
+ /** @internal */
80
+ export function setXYStart(ent, start) {
81
+ const { border, patch } = ent.ninePatch;
82
+ if (patch.nw) {
83
+ patch.nw.x = start.x;
84
+ patch.nw.y = start.y;
85
+ }
86
+ if (patch.w) {
87
+ patch.w.x = start.x;
88
+ patch.w.y = start.y + border.n;
89
+ }
90
+ if (patch.n) {
91
+ patch.n.x = start.x + border.w;
92
+ patch.n.y = start.y;
93
+ }
94
+ if (patch.center) {
95
+ patch.center.x = start.x + border.w;
96
+ patch.center.y = start.y + border.n;
97
+ }
98
+ }
99
+ //# sourceMappingURL=nine-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nine-patch.js","sourceRoot":"","sources":["../../../src/ents/nine-patch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Sys, SysEnt } from './sys.ts';
2
+ /** writes to invalid. */
3
+ export type OverrideEnt = SysEnt<OverrideSys>;
4
+ export declare class OverrideSys implements Sys {
5
+ readonly query = "override";
6
+ update(ent: OverrideEnt): void;
7
+ }
8
+ //# sourceMappingURL=override.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"override.d.ts","sourceRoot":"","sources":["../../../src/ents/override.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,UAAU,CAAA;AAEzC,yBAAyB;AACzB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAE7C,qBAAa,WAAY,YAAW,GAAG;IACrC,QAAQ,CAAC,KAAK,cAAa;IAE3B,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAG/B"}
@@ -0,0 +1,8 @@
1
+ export class OverrideSys {
2
+ query = 'override';
3
+ update(ent) {
4
+ if (ent.override.invalid != null)
5
+ ent.invalid = ent.override.invalid;
6
+ }
7
+ }
8
+ //# sourceMappingURL=override.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"override.js","sourceRoot":"","sources":["../../../src/ents/override.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IACb,KAAK,GAAG,UAAU,CAAA;IAE3B,MAAM,CAAC,GAAgB;QACrB,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI;YAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAA;IACtE,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import type { Sys, SysEnt } from './sys.ts';
2
+ export type SpriteEnt = SysEnt<SpriteSys>;
3
+ /** writes sprite, invalid. */
4
+ export declare class SpriteSys implements Sys {
5
+ readonly query = "sprite";
6
+ free(ent: SpriteEnt): void;
7
+ }
8
+ //# sourceMappingURL=sprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../src/ents/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,UAAU,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAEzC,8BAA8B;AAC9B,qBAAa,SAAU,YAAW,GAAG;IACnC,QAAQ,CAAC,KAAK,YAAW;IAEzB,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;CAK3B"}
@@ -0,0 +1,10 @@
1
+ /** writes sprite, invalid. */
2
+ export class SpriteSys {
3
+ query = 'sprite';
4
+ free(ent) {
5
+ ent.sprite.free();
6
+ // ent.sprite = undefined to-do: who does this <-- zoo?
7
+ ent.invalid = true;
8
+ }
9
+ }
10
+ //# sourceMappingURL=sprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.js","sourceRoot":"","sources":["../../../src/ents/sprite.ts"],"names":[],"mappings":"AAIA,8BAA8B;AAC9B,MAAM,OAAO,SAAS;IACX,KAAK,GAAG,QAAQ,CAAA;IAEzB,IAAI,CAAC,GAAc;QACjB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACjB,uDAAuD;QACvD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import type { Void } from '../void.ts';
2
+ import type { QueryEnt } from './ent-query.ts';
3
+ export type SysEnt<T extends Sys> = QueryEnt<T['query']>;
4
+ export interface Sys {
5
+ /**
6
+ * query of the form `[!]<key>[ <& or |><query>]`. eg, `'a & b | !a & c'`. no
7
+ * grouping is permitted.
8
+ */
9
+ query: string;
10
+ querySet?: string[][];
11
+ free?(ent: SysEnt<this>, v: Void): void;
12
+ update?(ent: SysEnt<this>, v: Void): void;
13
+ }
14
+ //# sourceMappingURL=sys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sys.d.ts","sourceRoot":"","sources":["../../../src/ents/sys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAE5C,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAExD,MAAM,WAAW,GAAG;IAClB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;IACrB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACvC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAC1C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sys.js","sourceRoot":"","sources":["../../../src/ents/sys.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import type { Void } from '../void.ts';
2
+ import type { QueryEnt } from './ent-query.ts';
3
+ import type { Sys, SysEnt } from './sys.ts';
4
+ export type TextEnt = QueryEnt<'text'>;
5
+ export type TextWHEnt = SysEnt<TextWHSys>;
6
+ export type TextXYEnt = SysEnt<TextXYSys>;
7
+ /** reads sprite text; writes sprite WH and invalid. */
8
+ export declare class TextWHSys implements Sys {
9
+ readonly query = "sprite & text & textWH";
10
+ update(ent: TextWHEnt): void;
11
+ }
12
+ /** reads sprite XYZ, text, text WH; writes invalid. */
13
+ export declare class TextXYSys implements Sys {
14
+ readonly query = "sprite & text & textWH & textXY";
15
+ free(ent: TextXYEnt): void;
16
+ update(ent: TextXYEnt, v: Void): void;
17
+ }
18
+ export declare function textSetWH(ent: TextWHEnt): void;
19
+ export declare function textSetXY(ent: TextXYEnt, v: Void): void;
20
+ export declare function textSetText(ent: TextEnt, str: string): void;
21
+ //# sourceMappingURL=text.d.ts.map