@oidoid/void 0.1.0-4 → 0.1.0-7

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 (307) hide show
  1. package/dist/meta.json +1 -0
  2. package/dist/package.json +66 -0
  3. package/dist/public/favicon/favicon16.png +0 -0
  4. package/dist/public/favicon/favicon16.webp +0 -0
  5. package/dist/public/favicon/favicon192.png +0 -0
  6. package/dist/public/favicon/favicon192.webp +0 -0
  7. package/dist/public/favicon/favicon32.png +0 -0
  8. package/dist/public/favicon/favicon32.webp +0 -0
  9. package/dist/public/favicon/favicon48.png +0 -0
  10. package/dist/public/favicon/favicon48.webp +0 -0
  11. package/dist/public/favicon/favicon64.png +0 -0
  12. package/dist/public/favicon/favicon64.webp +0 -0
  13. package/dist/public/index.js +98 -0
  14. package/dist/public/index.js.map +7 -0
  15. package/dist/public/preload-atlas.png +0 -0
  16. package/dist/public/preload-atlas.webp +0 -0
  17. package/dist/public/void-v0.1.0-6+20251020.7cdf98d.html +111 -0
  18. package/dist/public/void-v0.1.0-6+20251020.e4e9eef.html +111 -0
  19. package/dist/public/void-v0.1.0-7+20251021.7cdf98d.html +111 -0
  20. package/dist/schema/config-file.d.ts +32 -0
  21. package/dist/schema/config-file.js +41 -0
  22. package/dist/schema/config-file.js.map +1 -0
  23. package/dist/schema/config-file.v0.json +68 -0
  24. package/dist/src/audio.d.ts +7 -0
  25. package/dist/src/audio.js +25 -0
  26. package/dist/src/audio.js.map +1 -0
  27. package/dist/src/demo/assets/manifest.json +41 -0
  28. package/dist/src/demo/assets/preload-atlas.json +193 -0
  29. package/dist/src/demo/ents/clock-ent.d.ts +11 -0
  30. package/dist/src/demo/ents/clock-ent.js +26 -0
  31. package/dist/src/demo/ents/clock-ent.js.map +1 -0
  32. package/dist/src/demo/ents/render-toggle-ent.d.ts +12 -0
  33. package/dist/src/demo/ents/render-toggle-ent.js +41 -0
  34. package/dist/src/demo/ents/render-toggle-ent.js.map +1 -0
  35. package/dist/src/demo/ents/work-counter-ent.d.ts +10 -0
  36. package/dist/src/demo/ents/work-counter-ent.js +20 -0
  37. package/dist/src/demo/ents/work-counter-ent.js.map +1 -0
  38. package/dist/src/demo/game.d.ts +12 -0
  39. package/dist/src/demo/game.js +135 -0
  40. package/dist/src/demo/game.js.map +1 -0
  41. package/dist/src/demo/index.d.ts +1 -0
  42. package/dist/src/demo/index.js +8 -0
  43. package/dist/src/demo/index.js.map +1 -0
  44. package/dist/src/demo/tsconfig.json +15 -0
  45. package/dist/src/demo/types/tag.d.ts +2 -0
  46. package/dist/src/demo/types/tag.js +2 -0
  47. package/dist/src/demo/types/tag.js.map +1 -0
  48. package/dist/src/demo/void.json +11 -0
  49. package/dist/src/ents/button-ent.d.ts +39 -0
  50. package/dist/src/ents/button-ent.js +128 -0
  51. package/dist/src/ents/button-ent.js.map +1 -0
  52. package/dist/src/ents/cursor-ent.d.ts +18 -0
  53. package/dist/src/ents/cursor-ent.js +63 -0
  54. package/dist/src/ents/cursor-ent.js.map +1 -0
  55. package/dist/src/ents/ent.d.ts +7 -0
  56. package/dist/src/ents/ent.js +2 -0
  57. package/dist/src/ents/ent.js.map +1 -0
  58. package/dist/src/ents/follow-cam-ent.d.ts +25 -0
  59. package/dist/src/ents/follow-cam-ent.js +87 -0
  60. package/dist/src/ents/follow-cam-ent.js.map +1 -0
  61. package/dist/src/ents/nine-patch-ent.d.ts +43 -0
  62. package/dist/src/ents/nine-patch-ent.js +143 -0
  63. package/dist/src/ents/nine-patch-ent.js.map +1 -0
  64. package/dist/src/ents/text-ent.d.ts +23 -0
  65. package/dist/src/ents/text-ent.js +109 -0
  66. package/dist/src/ents/text-ent.js.map +1 -0
  67. package/dist/src/ents/zoo.d.ts +17 -0
  68. package/dist/src/ents/zoo.js +45 -0
  69. package/dist/src/ents/zoo.js.map +1 -0
  70. package/dist/src/graphics/atlas-parser.d.ts +4 -0
  71. package/dist/src/graphics/atlas-parser.js +27 -0
  72. package/dist/src/graphics/atlas-parser.js.map +1 -0
  73. package/dist/src/graphics/atlas.d.ts +49 -0
  74. package/dist/src/graphics/atlas.js +7 -0
  75. package/dist/src/graphics/atlas.js.map +1 -0
  76. package/dist/src/graphics/cam.d.ts +89 -0
  77. package/dist/src/graphics/cam.js +220 -0
  78. package/dist/src/graphics/cam.js.map +1 -0
  79. package/dist/src/graphics/gl.d.ts +24 -0
  80. package/dist/src/graphics/gl.js +70 -0
  81. package/dist/src/graphics/gl.js.map +1 -0
  82. package/dist/src/graphics/layer.d.ts +21 -0
  83. package/dist/src/graphics/layer.js +23 -0
  84. package/dist/src/graphics/layer.js.map +1 -0
  85. package/dist/src/graphics/renderer.d.ts +36 -0
  86. package/dist/src/graphics/renderer.js +180 -0
  87. package/dist/src/graphics/renderer.js.map +1 -0
  88. package/dist/src/graphics/sprite-frag.glsl.d.ts +1 -0
  89. package/dist/src/graphics/sprite-frag.glsl.js +35 -0
  90. package/dist/src/graphics/sprite-frag.glsl.js.map +1 -0
  91. package/dist/src/graphics/sprite-vert.glsl.d.ts +1 -0
  92. package/dist/src/graphics/sprite-vert.glsl.js +68 -0
  93. package/dist/src/graphics/sprite-vert.glsl.js.map +1 -0
  94. package/dist/src/graphics/sprite.d.ts +108 -0
  95. package/dist/src/graphics/sprite.js +301 -0
  96. package/dist/src/graphics/sprite.js.map +1 -0
  97. package/dist/src/index.d.ts +30 -0
  98. package/dist/src/index.js +33 -0
  99. package/dist/src/index.js.map +1 -0
  100. package/dist/src/input/context-menu.d.ts +8 -0
  101. package/dist/src/input/context-menu.js +25 -0
  102. package/dist/src/input/context-menu.js.map +1 -0
  103. package/dist/src/input/gamepad.d.ts +18 -0
  104. package/dist/src/input/gamepad.js +49 -0
  105. package/dist/src/input/gamepad.js.map +1 -0
  106. package/dist/src/input/input.d.ts +148 -0
  107. package/dist/src/input/input.js +383 -0
  108. package/dist/src/input/input.js.map +1 -0
  109. package/dist/src/input/keyboard.d.ts +17 -0
  110. package/dist/src/input/keyboard.js +46 -0
  111. package/dist/src/input/keyboard.js.map +1 -0
  112. package/dist/src/input/pointer.d.ts +53 -0
  113. package/dist/src/input/pointer.js +162 -0
  114. package/dist/src/input/pointer.js.map +1 -0
  115. package/dist/src/input/wheel.d.ts +12 -0
  116. package/dist/src/input/wheel.js +30 -0
  117. package/dist/src/input/wheel.js.map +1 -0
  118. package/dist/src/looper.d.ts +17 -0
  119. package/dist/src/looper.js +51 -0
  120. package/dist/src/looper.js.map +1 -0
  121. package/dist/src/mem/pool.d.ts +31 -0
  122. package/dist/src/mem/pool.js +98 -0
  123. package/dist/src/mem/pool.js.map +1 -0
  124. package/dist/src/random/random.d.ts +8 -0
  125. package/dist/src/random/random.js +23 -0
  126. package/dist/src/random/random.js.map +1 -0
  127. package/dist/src/storage/local-storage.d.ts +3 -0
  128. package/dist/src/storage/local-storage.js +11 -0
  129. package/dist/src/storage/local-storage.js.map +1 -0
  130. package/dist/src/text/font.d.ts +6 -0
  131. package/dist/src/text/font.js +20 -0
  132. package/dist/src/text/font.js.map +1 -0
  133. package/dist/src/text/mem-prop-5x6.json +573 -0
  134. package/dist/src/text/text-layout.d.ts +19 -0
  135. package/dist/src/text/text-layout.js +85 -0
  136. package/dist/src/text/text-layout.js.map +1 -0
  137. package/dist/src/tsconfig.json +15 -0
  138. package/dist/src/types/geo.d.ts +38 -0
  139. package/dist/src/types/geo.js +61 -0
  140. package/dist/src/types/geo.js.map +1 -0
  141. package/dist/src/types/json.d.ts +31 -0
  142. package/dist/src/types/json.js +2 -0
  143. package/dist/src/types/json.js.map +1 -0
  144. package/dist/src/types/time.d.ts +19 -0
  145. package/dist/src/types/time.js +10 -0
  146. package/dist/src/types/time.js.map +1 -0
  147. package/dist/src/types/void-version.d.ts +7 -0
  148. package/dist/src/types/void-version.js +2 -0
  149. package/dist/src/types/void-version.js.map +1 -0
  150. package/dist/src/utils/async-util.d.ts +11 -0
  151. package/dist/src/utils/async-util.js +36 -0
  152. package/dist/src/utils/async-util.js.map +1 -0
  153. package/dist/src/utils/canvas-util.d.ts +7 -0
  154. package/dist/src/utils/canvas-util.js +128 -0
  155. package/dist/src/utils/canvas-util.js.map +1 -0
  156. package/dist/src/utils/color-util.d.ts +1 -0
  157. package/dist/src/utils/color-util.js +4 -0
  158. package/dist/src/utils/color-util.js.map +1 -0
  159. package/dist/src/utils/debug.d.ts +19 -0
  160. package/dist/src/utils/debug.js +35 -0
  161. package/dist/src/utils/debug.js.map +1 -0
  162. package/dist/src/utils/delay-interval.d.ts +7 -0
  163. package/dist/src/utils/delay-interval.js +29 -0
  164. package/dist/src/utils/delay-interval.js.map +1 -0
  165. package/dist/src/utils/dom-util.d.ts +3 -0
  166. package/dist/src/utils/dom-util.js +29 -0
  167. package/dist/src/utils/dom-util.js.map +1 -0
  168. package/dist/src/utils/fetch-util.d.ts +3 -0
  169. package/dist/src/utils/fetch-util.js +24 -0
  170. package/dist/src/utils/fetch-util.js.map +1 -0
  171. package/dist/src/utils/math.d.ts +6 -0
  172. package/dist/src/utils/math.js +18 -0
  173. package/dist/src/utils/math.js.map +1 -0
  174. package/dist/src/utils/vibrate.d.ts +1 -0
  175. package/dist/src/utils/vibrate.js +4 -0
  176. package/dist/src/utils/vibrate.js.map +1 -0
  177. package/dist/src/void.d.ts +48 -0
  178. package/dist/src/void.js +102 -0
  179. package/dist/src/void.js.map +1 -0
  180. package/dist/tools/atlas-pack/aseprite.d.ts +58 -0
  181. package/dist/tools/atlas-pack/aseprite.js +16 -0
  182. package/dist/tools/atlas-pack/aseprite.js.map +1 -0
  183. package/dist/tools/atlas-pack/atlas-json-parser.d.ts +21 -0
  184. package/dist/tools/atlas-pack/atlas-json-parser.js +116 -0
  185. package/dist/tools/atlas-pack/atlas-json-parser.js.map +1 -0
  186. package/dist/tools/atlas-pack/atlas-pack.d.ts +2 -0
  187. package/dist/tools/atlas-pack/atlas-pack.js +22 -0
  188. package/dist/tools/atlas-pack/atlas-pack.js.map +1 -0
  189. package/dist/tools/bundle/bundle.d.ts +3 -0
  190. package/dist/tools/bundle/bundle.js +48 -0
  191. package/dist/tools/bundle/bundle.js.map +1 -0
  192. package/dist/tools/bundle/html-plugin.d.ts +3 -0
  193. package/dist/tools/bundle/html-plugin.js +90 -0
  194. package/dist/tools/bundle/html-plugin.js.map +1 -0
  195. package/dist/tools/tsconfig-base.json +48 -0
  196. package/dist/tools/tsconfig.json +19 -0
  197. package/dist/tools/types/config.d.ts +27 -0
  198. package/dist/tools/types/config.js +31 -0
  199. package/dist/tools/types/config.js.map +1 -0
  200. package/dist/tools/types/package-json.d.ts +4 -0
  201. package/dist/tools/types/package-json.js +2 -0
  202. package/dist/tools/types/package-json.js.map +1 -0
  203. package/dist/tools/utils/argv.d.ts +12 -0
  204. package/dist/tools/utils/argv.js +19 -0
  205. package/dist/tools/utils/argv.js.map +1 -0
  206. package/dist/tools/utils/exec.d.ts +3 -0
  207. package/dist/tools/utils/exec.js +15 -0
  208. package/dist/tools/utils/exec.js.map +1 -0
  209. package/dist/tools/utils/file-util.d.ts +1 -0
  210. package/dist/tools/utils/file-util.js +13 -0
  211. package/dist/tools/utils/file-util.js.map +1 -0
  212. package/dist/tools/utils/html-parser.d.ts +1 -0
  213. package/dist/tools/utils/html-parser.js +10 -0
  214. package/dist/tools/utils/html-parser.js.map +1 -0
  215. package/dist/tools/void.d.ts +15 -0
  216. package/dist/tools/void.js +31 -0
  217. package/dist/tools/void.js.map +1 -0
  218. package/package.json +31 -41
  219. package/readme.md +1 -1
  220. package/schema/config-file.test.ts +55 -0
  221. package/schema/config-file.ts +69 -0
  222. package/schema/config-file.v0.json +68 -0
  223. package/tools/atlas-pack/aseprite.ts +60 -0
  224. package/tools/atlas-pack/atlas-json-parser.test.ts +780 -0
  225. package/tools/atlas-pack/atlas-json-parser.ts +159 -0
  226. package/tools/atlas-pack/atlas-pack.ts +51 -0
  227. package/tools/bundle/bundle.ts +64 -0
  228. package/tools/bundle/html-plugin.ts +135 -0
  229. package/tools/types/config.ts +65 -0
  230. package/tools/types/package-json.ts +4 -0
  231. package/tools/utils/argv.test.ts +41 -0
  232. package/tools/utils/argv.ts +29 -0
  233. package/tools/utils/exec.ts +22 -0
  234. package/tools/utils/file-util.ts +11 -0
  235. package/tools/utils/html-parser.ts +9 -0
  236. package/tools/void.ts +55 -0
  237. package/dist/atlas/anim.d.ts +0 -30
  238. package/dist/atlas/anim.js +0 -16
  239. package/dist/atlas/anim.js.map +0 -1
  240. package/dist/atlas/aseprite.d.ts +0 -37
  241. package/dist/atlas/aseprite.js +0 -2
  242. package/dist/atlas/aseprite.js.map +0 -1
  243. package/dist/atlas/atlas-parser.d.ts +0 -52
  244. package/dist/atlas/atlas-parser.js +0 -109
  245. package/dist/atlas/atlas-parser.js.map +0 -1
  246. package/dist/atlas/atlas.d.ts +0 -4
  247. package/dist/atlas/atlas.js +0 -2
  248. package/dist/atlas/atlas.js.map +0 -1
  249. package/dist/audio/synth.d.ts +0 -4
  250. package/dist/audio/synth.js +0 -21
  251. package/dist/audio/synth.js.map +0 -1
  252. package/dist/graphics/bitmap.d.ts +0 -14
  253. package/dist/graphics/bitmap.js +0 -14
  254. package/dist/graphics/bitmap.js.map +0 -1
  255. package/dist/graphics/cam.d.ts +0 -16
  256. package/dist/graphics/cam.js +0 -42
  257. package/dist/graphics/cam.js.map +0 -1
  258. package/dist/graphics/frag.glsl.d.ts +0 -1
  259. package/dist/graphics/frag.glsl.js +0 -15
  260. package/dist/graphics/frag.glsl.js.map +0 -1
  261. package/dist/graphics/frame-listener.d.ts +0 -16
  262. package/dist/graphics/frame-listener.js +0 -83
  263. package/dist/graphics/frame-listener.js.map +0 -1
  264. package/dist/graphics/renderer.d.ts +0 -12
  265. package/dist/graphics/renderer.js +0 -184
  266. package/dist/graphics/renderer.js.map +0 -1
  267. package/dist/graphics/vert.glsl.d.ts +0 -1
  268. package/dist/graphics/vert.glsl.js +0 -46
  269. package/dist/graphics/vert.glsl.js.map +0 -1
  270. package/dist/index.d.ts +0 -31
  271. package/dist/index.js +0 -79
  272. package/dist/index.js.map +0 -1
  273. package/dist/input/gamepad-poller.d.ts +0 -8
  274. package/dist/input/gamepad-poller.js +0 -38
  275. package/dist/input/gamepad-poller.js.map +0 -1
  276. package/dist/input/input.d.ts +0 -44
  277. package/dist/input/input.js +0 -175
  278. package/dist/input/input.js.map +0 -1
  279. package/dist/input/keyboard-poller.d.ts +0 -7
  280. package/dist/input/keyboard-poller.js +0 -30
  281. package/dist/input/keyboard-poller.js.map +0 -1
  282. package/dist/input/pointer-poller.d.ts +0 -12
  283. package/dist/input/pointer-poller.js +0 -67
  284. package/dist/input/pointer-poller.js.map +0 -1
  285. package/dist/sprite/sprite.d.ts +0 -51
  286. package/dist/sprite/sprite.js +0 -161
  287. package/dist/sprite/sprite.js.map +0 -1
  288. package/dist/storage/json-storage.d.ts +0 -4
  289. package/dist/storage/json-storage.js +0 -13
  290. package/dist/storage/json-storage.js.map +0 -1
  291. package/dist/test/tsconfig.json +0 -14
  292. package/dist/text/font.d.ts +0 -6
  293. package/dist/text/font.js +0 -18
  294. package/dist/text/font.js.map +0 -1
  295. package/dist/text/text-layout.d.ts +0 -11
  296. package/dist/text/text-layout.js +0 -73
  297. package/dist/text/text-layout.js.map +0 -1
  298. package/dist/tsconfig.json +0 -13
  299. package/dist/types/2d.d.ts +0 -9
  300. package/dist/types/2d.js +0 -2
  301. package/dist/types/2d.js.map +0 -1
  302. package/dist/void.js +0 -60
  303. package/dist/void.js.map +0 -7
  304. package/dist/void.meta.json +0 -289
  305. package/src/atlas/anim.js +0 -17
  306. package/tools/atlas-parser.js +0 -120
  307. package/tools/void.js +0 -143
@@ -0,0 +1,128 @@
1
+ import { Layer, layerOffset } from "../graphics/layer.js";
2
+ import { xyEq } from "../types/geo.js";
3
+ import { NinePatchEnt } from "./nine-patch-ent.js";
4
+ import { TextEnt } from "./text-ent.js";
5
+ export class ButtonEnt {
6
+ #button;
7
+ #invalid = true;
8
+ #pressed;
9
+ #selected;
10
+ #started = false;
11
+ #toggle = false;
12
+ #text = new TextEnt();
13
+ #xy = { x: 0, y: 0 };
14
+ constructor(v, opts) {
15
+ const buttonZ = opts.button.z ?? Layer.UID;
16
+ this.#button = new NinePatchEnt(v, {
17
+ ...opts.button,
18
+ x: opts.x,
19
+ y: opts.y,
20
+ z: buttonZ,
21
+ wh: { w: opts.w, h: opts.h }
22
+ });
23
+ this.#pressed = {
24
+ sprite: v.sprites.alloc(),
25
+ z: opts.pressed.z ?? layerOffset(buttonZ, 2)
26
+ };
27
+ this.#selected = {
28
+ sprite: v.sprites.alloc(),
29
+ z: opts.selected.z ?? layerOffset(this.#pressed.z, -1)
30
+ };
31
+ this.#pressed.sprite.tag = opts.pressed.tag;
32
+ this.#pressed.sprite.x = opts.x ?? 0;
33
+ this.#pressed.sprite.y = opts.y ?? 0;
34
+ this.#pressed.sprite.w = opts.w ?? this.#button.wh.w;
35
+ this.#pressed.sprite.h = opts.h ?? this.#button.wh.h;
36
+ this.#pressed.sprite.z = Layer.Hidden;
37
+ this.#selected.sprite.tag = opts.selected.tag;
38
+ this.#selected.sprite.x = opts.x ?? 0;
39
+ this.#selected.sprite.y = opts.y ?? 0;
40
+ this.#selected.sprite.w = opts.w ?? this.#button.wh.w;
41
+ this.#selected.sprite.h = opts.h ?? this.#button.wh.h;
42
+ this.#selected.sprite.z = Layer.Hidden;
43
+ this.#text.text = opts.text?.text ?? '';
44
+ this.#text.scale = opts.text?.scale ?? 1;
45
+ this.#text.layout(v);
46
+ this.#moveText(v);
47
+ this.#text.maxW = opts.w ?? this.#button.wh.w;
48
+ this.#text.z = opts.text?.z ?? layerOffset(buttonZ, -1);
49
+ this.#toggle = opts.toggle ?? false;
50
+ }
51
+ get selected() {
52
+ return this.#selected.z !== Layer.Hidden;
53
+ }
54
+ free(v) {
55
+ this.#button.free(v);
56
+ this.#text.free(v);
57
+ v.sprites.free(this.#selected.sprite, this.#pressed.sprite);
58
+ }
59
+ get on() {
60
+ return this.#pressed.sprite.z !== Layer.Hidden;
61
+ }
62
+ set on(on) {
63
+ this.#pressed.sprite.z = on ? this.#pressed.z : Layer.Hidden;
64
+ }
65
+ // to-do: offStart() for pointer up listen? would need a boundary check too.
66
+ get onStart() {
67
+ return this.on && this.#started;
68
+ }
69
+ set text(str) {
70
+ this.#text.text = str;
71
+ }
72
+ update(v) {
73
+ let invalid = this.#invalid;
74
+ if (this.#button.update())
75
+ invalid = true;
76
+ if (this.#text.update(v))
77
+ invalid = true;
78
+ const hitsCursor = !v.input.handled && !!v.zoo.cursor?.hits(v, this.#selected.sprite, 'UI');
79
+ const clickStarted = (hitsCursor && v.input.isOnStart('Click')) ||
80
+ (v.zoo.cursor?.keyboard && v.input.isOnStart('A'));
81
+ const on = clickStarted
82
+ ? this.#toggle
83
+ ? !this.on
84
+ : true
85
+ : this.#toggle
86
+ ? this.on
87
+ : v.input.isOn('Click') ||
88
+ (!!v.zoo.cursor?.keyboard && v.input.isOn('A'));
89
+ this.#started = this.on !== on;
90
+ if (this.#started) {
91
+ this.on = on;
92
+ invalid = true;
93
+ }
94
+ if (hitsCursor &&
95
+ (v.input.point?.click || v.input.point?.type === 'Mouse')) {
96
+ invalid ||= this.#selected.sprite.z !== this.#selected.z;
97
+ this.#selected.sprite.z = this.#selected.z;
98
+ }
99
+ else {
100
+ invalid ||= this.#selected.sprite.z !== Layer.Hidden;
101
+ this.#selected.sprite.z = Layer.Hidden;
102
+ }
103
+ v.input.handled ||= hitsCursor;
104
+ this.#invalid = false;
105
+ return invalid;
106
+ }
107
+ setXY(v, xy) {
108
+ if (xyEq(xy, this.#xy))
109
+ return;
110
+ this.#xy.x = xy.x;
111
+ this.#xy.y = xy.y;
112
+ this.#button.xy = xy;
113
+ this.#moveText(v);
114
+ this.#pressed.sprite.xy = xy;
115
+ this.#selected.sprite.xy = xy;
116
+ this.#invalid = true;
117
+ }
118
+ #moveText(v) {
119
+ this.#text.layout(v);
120
+ this.#text.xy = {
121
+ x: this.#button.xy.x + this.#button.wh.w / 2 - this.#text.wh.w / 2,
122
+ y: this.#button.xy.y +
123
+ this.#button.wh.h / 2 -
124
+ (this.#text.wh.h - this.#text.scaledLeading) / 2
125
+ };
126
+ }
127
+ }
128
+ //# sourceMappingURL=button-ent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-ent.js","sourceRoot":"","sources":["../../../src/ents/button-ent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { TagFormat } from '../graphics/atlas.ts';
2
+ import { type Box, type WH, type XY } from '../types/geo.ts';
3
+ import type { Void } from '../void.ts';
4
+ import type { Ent } from './ent.ts';
5
+ /**
6
+ * update this ent first. always prefer testing against cursor, not input, in
7
+ * other ents. the cursor may be moved by keyboard and has a hitbox.
8
+ */
9
+ export declare class CursorEnt<out Tag extends TagFormat> implements Ent<Tag> {
10
+ #private;
11
+ keyboard: boolean;
12
+ constructor(v: Void<Tag, string>, point: Tag, pick?: Tag | undefined);
13
+ free(v: Void<Tag, string>): void;
14
+ hitbox(v: Readonly<Void<Tag, string>>, coords: 'Level' | 'UI'): Box;
15
+ hits(v: Readonly<Void<Tag, string>>, box: Readonly<XY & Partial<WH>>, coords: 'Level' | 'UI'): boolean;
16
+ update(v: Void<Tag, 'L' | 'R' | 'U' | 'D'>): boolean | undefined;
17
+ get visible(): boolean;
18
+ }
@@ -0,0 +1,63 @@
1
+ import { Layer } from "../graphics/layer.js";
2
+ import { boxHits } from "../types/geo.js";
3
+ /**
4
+ * update this ent first. always prefer testing against cursor, not input, in
5
+ * other ents. the cursor may be moved by keyboard and has a hitbox.
6
+ */
7
+ export class CursorEnt {
8
+ keyboard = false;
9
+ #sprite;
10
+ #pick;
11
+ #point;
12
+ constructor(v, point, pick) {
13
+ this.#point = point;
14
+ this.#pick = pick ?? this.#point;
15
+ this.#sprite = v.sprites.alloc();
16
+ this.#sprite.tag = point;
17
+ this.#sprite.z = Layer.Hidden;
18
+ }
19
+ free(v) {
20
+ v.sprites.free(this.#sprite);
21
+ }
22
+ hitbox(v, coords) {
23
+ const lvl = coords === 'Level';
24
+ const hitbox = this.#sprite.hitbox;
25
+ if (!hitbox)
26
+ throw Error('cursor has no hitbox');
27
+ return {
28
+ x: (lvl ? v.cam.x : 0) + hitbox.x,
29
+ y: (lvl ? v.cam.y : 0) + hitbox.y,
30
+ w: hitbox.w,
31
+ h: hitbox.h
32
+ };
33
+ }
34
+ hits(v, box, coords) {
35
+ return this.visible && boxHits(this.hitbox(v, coords), box);
36
+ }
37
+ update(v) {
38
+ if (v.input.point?.invalid) {
39
+ this.#sprite.tag = v.input.point.click ? this.#pick : this.#point;
40
+ this.#sprite.xy = v.input.point.local;
41
+ this.#sprite.z =
42
+ v.input.point?.type === 'Mouse' ? Layer.Top : Layer.Hidden;
43
+ return true;
44
+ }
45
+ if (this.keyboard && v.input.isAnyOn('L', 'R', 'U', 'D')) {
46
+ const epsilon = 1;
47
+ if (v.input.isOn('L'))
48
+ this.#sprite.x -= epsilon;
49
+ if (v.input.isOn('R'))
50
+ this.#sprite.x += epsilon;
51
+ if (v.input.isOn('U'))
52
+ this.#sprite.y -= epsilon;
53
+ if (v.input.isOn('D'))
54
+ this.#sprite.y += epsilon;
55
+ this.#sprite.z = Layer.Top;
56
+ return true;
57
+ }
58
+ }
59
+ get visible() {
60
+ return this.#sprite.z !== Layer.Hidden;
61
+ }
62
+ }
63
+ //# sourceMappingURL=cursor-ent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-ent.js","sourceRoot":"","sources":["../../../src/ents/cursor-ent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
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;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ent.js","sourceRoot":"","sources":["../../../src/ents/ent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { TagFormat } from '../graphics/atlas.ts';
2
+ import type { Layer } from '../graphics/layer.ts';
3
+ import { type CompassDir, type WH, type XY } from '../types/geo.ts';
4
+ import type { Void } from '../void.ts';
5
+ import type { Ent } from './ent.ts';
6
+ export declare class FollowCamEnt<Tag extends TagFormat> implements Ent<Tag> {
7
+ #private;
8
+ constructor(v: Void<Tag, string>, tag: Tag, pivot: CompassDir);
9
+ get fill(): 'X' | 'Y' | 'XY' | undefined;
10
+ set fill(fill: 'X' | 'Y' | 'XY' | undefined);
11
+ free(v: Void<Tag, string>): void;
12
+ get h(): number;
13
+ set h(h: number);
14
+ get margin(): Readonly<WH>;
15
+ set margin(margin: Readonly<WH>);
16
+ get modulo(): Readonly<XY>;
17
+ set modulo(modulo: Readonly<XY>);
18
+ get pivot(): CompassDir;
19
+ set pivot(pivot: CompassDir);
20
+ update(v: Void<Tag, string>): boolean | undefined;
21
+ get w(): number;
22
+ set w(w: number);
23
+ get z(): Layer;
24
+ set z(z: Layer);
25
+ }
@@ -0,0 +1,87 @@
1
+ import { whAssign, whEq, xyAssign, xyEq } from "../types/geo.js";
2
+ export class FollowCamEnt {
3
+ #fill;
4
+ #invalid = true;
5
+ #margin = { w: 0, h: 0 };
6
+ #modulo = { x: 0, y: 0 };
7
+ #pivot;
8
+ #sprite;
9
+ constructor(v, tag, pivot) {
10
+ this.#sprite = v.sprites.alloc();
11
+ this.#sprite.tag = tag;
12
+ this.#pivot = pivot;
13
+ }
14
+ get fill() {
15
+ return this.#fill;
16
+ }
17
+ set fill(fill) {
18
+ if (this.#fill === fill)
19
+ return;
20
+ this.#fill = fill;
21
+ this.#invalid = true;
22
+ }
23
+ free(v) {
24
+ v.sprites.free(this.#sprite);
25
+ }
26
+ get h() {
27
+ return this.#sprite.h;
28
+ }
29
+ set h(h) {
30
+ if (this.#sprite.h === h)
31
+ return;
32
+ this.#sprite.h = h;
33
+ this.#invalid = true;
34
+ }
35
+ get margin() {
36
+ return this.#margin;
37
+ }
38
+ set margin(margin) {
39
+ if (whEq(margin, this.#margin))
40
+ return;
41
+ whAssign(this.#margin, margin);
42
+ this.#invalid = true;
43
+ }
44
+ get modulo() {
45
+ return this.#modulo;
46
+ }
47
+ set modulo(modulo) {
48
+ if (xyEq(modulo, this.#modulo))
49
+ return;
50
+ xyAssign(this.#modulo, modulo);
51
+ this.#invalid = true;
52
+ }
53
+ get pivot() {
54
+ return this.#pivot;
55
+ }
56
+ set pivot(pivot) {
57
+ if (this.#pivot === pivot)
58
+ return;
59
+ this.#pivot = pivot;
60
+ this.#invalid = true;
61
+ }
62
+ update(v) {
63
+ if (!this.#invalid && !v.cam.invalid)
64
+ return;
65
+ const follow = v.cam.follow({ w: this.#sprite.w, h: this.#sprite.h }, this.#sprite.z, this.#pivot, { fill: this.#fill, modulo: this.#modulo, margin: this.#margin });
66
+ this.#sprite.x = follow.x;
67
+ this.#sprite.y = follow.y;
68
+ this.#invalid = false;
69
+ return true;
70
+ }
71
+ get w() {
72
+ return this.#sprite.w;
73
+ }
74
+ set w(w) {
75
+ if (this.#sprite.w === w)
76
+ return;
77
+ this.#sprite.w = w;
78
+ this.#invalid = true;
79
+ }
80
+ get z() {
81
+ return this.#sprite.z;
82
+ }
83
+ set z(z) {
84
+ this.#sprite.z = z;
85
+ }
86
+ }
87
+ //# sourceMappingURL=follow-cam-ent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"follow-cam-ent.js","sourceRoot":"","sources":["../../../src/ents/follow-cam-ent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { TagFormat } from '../graphics/atlas.ts';
2
+ import type { Layer } from '../graphics/layer.ts';
3
+ import { type CardinalDir, type WH, type XY } from '../types/geo.ts';
4
+ import type { Void } from '../void.ts';
5
+ import type { Ent } from './ent.ts';
6
+ export type NinePatchOpts<Tag extends TagFormat> = {
7
+ margin?: {
8
+ w?: number | undefined;
9
+ h?: number | undefined;
10
+ } | undefined;
11
+ n: NinePatchDirOpts<Tag>;
12
+ origin: NinePatchDirOpts<Tag>;
13
+ border?: {
14
+ [dir in Lowercase<CardinalDir>]?: number | undefined;
15
+ };
16
+ wh?: {
17
+ w?: number | undefined;
18
+ h?: number | undefined;
19
+ } | undefined;
20
+ x?: number | undefined;
21
+ y?: number | undefined;
22
+ z?: Layer | undefined;
23
+ } & {
24
+ [dir in 'w' | 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw']?: NinePatchDirOpts<Tag> | undefined;
25
+ };
26
+ export type NinePatchDirOpts<Tag extends TagFormat> = {
27
+ flip?: {
28
+ x?: boolean;
29
+ y?: boolean;
30
+ } | undefined;
31
+ tag: Tag;
32
+ stretch?: boolean | undefined;
33
+ };
34
+ export declare class NinePatchEnt<Tag extends TagFormat> implements Ent<Tag> {
35
+ #private;
36
+ constructor(v: Void<Tag, string>, opts: Readonly<NinePatchOpts<Tag>>);
37
+ free(v: Void<Tag, string>): void;
38
+ update(): boolean | undefined;
39
+ get wh(): WH;
40
+ set wh(wh: Readonly<WH>);
41
+ get xy(): XY;
42
+ set xy(xy: Readonly<XY>);
43
+ }
@@ -0,0 +1,143 @@
1
+ import { whEq, xyEq } from "../types/geo.js";
2
+ export class NinePatchEnt {
3
+ #dir;
4
+ #margin;
5
+ #invalid = true;
6
+ constructor(v, opts) {
7
+ this.#dir = {
8
+ w: v.sprites.alloc(),
9
+ nw: v.sprites.alloc(),
10
+ n: v.sprites.alloc(),
11
+ ne: v.sprites.alloc(),
12
+ e: v.sprites.alloc(),
13
+ se: v.sprites.alloc(),
14
+ s: v.sprites.alloc(),
15
+ sw: v.sprites.alloc(),
16
+ origin: v.sprites.alloc()
17
+ };
18
+ this.#dir.w.tag = opts.w?.tag ?? opts.e?.tag ?? opts.n.tag;
19
+ this.#dir.n.tag = opts.n.tag;
20
+ this.#dir.e.tag = opts.e?.tag ?? this.#dir.w.tag;
21
+ this.#dir.s.tag = opts.s?.tag ?? this.#dir.n.tag;
22
+ this.#dir.nw.tag = opts.nw?.tag ?? opts.se?.tag ?? opts.n.tag;
23
+ this.#dir.ne.tag =
24
+ opts.ne?.tag ?? opts.sw?.tag ?? opts.nw?.tag ?? opts.n.tag;
25
+ this.#dir.se.tag = opts.se?.tag ?? this.#dir.nw.tag;
26
+ this.#dir.sw.tag = opts.sw?.tag ?? this.#dir.ne.tag;
27
+ this.#dir.origin.tag = opts.origin.tag;
28
+ this.#dir.w.z =
29
+ this.#dir.nw.z =
30
+ this.#dir.n.z =
31
+ this.#dir.ne.z =
32
+ this.#dir.e.z =
33
+ this.#dir.se.z =
34
+ this.#dir.s.z =
35
+ this.#dir.sw.z =
36
+ this.#dir.origin.z =
37
+ opts.z ?? 0;
38
+ this.#dir.w.stretch = opts.w?.stretch ?? opts.e?.stretch ?? false;
39
+ this.#dir.n.stretch = opts.n.stretch ?? opts.s?.stretch ?? false;
40
+ this.#dir.e.stretch = opts.e?.stretch ?? this.#dir.w.stretch;
41
+ this.#dir.s.stretch = opts.s?.stretch ?? this.#dir.n.stretch;
42
+ this.#dir.nw.stretch = opts.nw?.stretch ?? opts.se?.stretch ?? false;
43
+ this.#dir.ne.stretch = opts.ne?.stretch ?? opts.sw?.stretch ?? false;
44
+ this.#dir.se.stretch = opts.se?.stretch ?? this.#dir.nw.stretch;
45
+ this.#dir.sw.stretch = opts.sw?.stretch ?? this.#dir.ne.stretch;
46
+ this.#dir.origin.stretch = opts.origin.stretch ?? false;
47
+ this.#dir.w.flipX = opts.w?.flip?.x ?? !opts.e?.flip?.x;
48
+ this.#dir.w.flipY = opts.w?.flip?.y ?? !!opts.e?.flip?.y;
49
+ this.#dir.n.flipX = opts.n.flip?.x ?? !!opts.s?.flip?.x;
50
+ this.#dir.n.flipY = opts.n.flip?.y ?? !opts.s?.flip?.y;
51
+ this.#dir.e.flipX = opts.e?.flip?.x ?? !this.#dir.w.flipX;
52
+ this.#dir.e.flipY = opts.e?.flip?.y ?? this.#dir.w.flipY;
53
+ this.#dir.s.flipX = opts.s?.flip?.x ?? this.#dir.n.flipX;
54
+ this.#dir.s.flipY = opts.s?.flip?.y ?? !this.#dir.n.flipY;
55
+ this.#dir.origin.flipX = !!opts.origin.flip?.x;
56
+ this.#dir.origin.flipY = !!opts.origin.flip?.y;
57
+ this.#dir.n.h = opts.border?.n ?? opts.border?.s ?? this.#dir.n.h;
58
+ this.#dir.w.w = opts.border?.w ?? opts.border?.e ?? this.#dir.n.h;
59
+ this.#dir.e.w = opts.border?.e ?? this.#dir.w.w;
60
+ this.#dir.s.h = opts.border?.s ?? this.#dir.n.h;
61
+ this.#dir.nw.w = this.#dir.w.w;
62
+ this.#dir.nw.h = this.#dir.n.h;
63
+ this.#dir.ne.w = this.#dir.e.w;
64
+ this.#dir.ne.h = this.#dir.n.h;
65
+ this.#dir.se.w = this.#dir.e.w;
66
+ this.#dir.se.h = this.#dir.s.h;
67
+ this.#dir.sw.w = this.#dir.w.w;
68
+ this.#dir.sw.h = this.#dir.s.h;
69
+ this.#margin = { w: opts.margin?.w ?? 0, h: opts.margin?.h ?? 0 };
70
+ const w = opts.wh?.w == null
71
+ ? this.#dir.w.w + this.#dir.n.w + this.#dir.e.w
72
+ : opts.wh.w;
73
+ this.#dir.n.w = w - 1; // force resize
74
+ this.wh = {
75
+ w,
76
+ h: opts.wh?.h == null
77
+ ? this.#dir.n.h + this.#dir.e.h + this.#dir.s.h
78
+ : opts.wh.h
79
+ };
80
+ this.#dir.nw.x = (opts.x ?? 0) - 1; // force move.
81
+ this.xy = { x: opts.x ?? 0, y: opts.y ?? 0 };
82
+ }
83
+ free(v) {
84
+ v.sprites.free(this.#dir.w, this.#dir.nw, this.#dir.n, this.#dir.ne, this.#dir.e, this.#dir.se, this.#dir.s, this.#dir.sw, this.#dir.origin);
85
+ }
86
+ update() {
87
+ if (!this.#invalid)
88
+ return;
89
+ this.#invalid = false;
90
+ return true;
91
+ }
92
+ get wh() {
93
+ return {
94
+ w: this.#dir.w.w + this.#dir.n.w + this.#dir.e.w + this.#margin.w,
95
+ h: this.#dir.n.h + this.#dir.w.h + this.#dir.s.h + this.#margin.h
96
+ };
97
+ }
98
+ set wh(wh) {
99
+ if (whEq(wh, this.wh))
100
+ return;
101
+ this.#dir.w.h = wh.h - this.#dir.n.h - this.#dir.s.h - this.#margin.h;
102
+ this.#dir.n.w = wh.w - this.#dir.w.w - this.#dir.e.w - this.#margin.w;
103
+ this.#dir.s.w = this.#dir.n.w;
104
+ this.#dir.e.h = this.#dir.w.h;
105
+ this.#dir.origin.w = this.#dir.n.w;
106
+ this.#dir.origin.h = this.#dir.e.h;
107
+ this.#setXYRight();
108
+ this.#invalid = true;
109
+ }
110
+ get xy() {
111
+ return {
112
+ x: this.#dir.nw.x - this.#margin.w / 2,
113
+ y: this.#dir.nw.y - this.#margin.h / 2
114
+ };
115
+ }
116
+ set xy(xy) {
117
+ if (xyEq(xy, this.xy))
118
+ return;
119
+ this.#dir.nw.x = xy.x + this.#margin.w / 2;
120
+ this.#dir.nw.y = xy.y + this.#margin.h / 2;
121
+ this.#dir.w.x = this.#dir.nw.x;
122
+ this.#dir.w.y = this.#dir.nw.y + this.#dir.nw.h;
123
+ this.#dir.n.x = this.#dir.nw.x + this.#dir.nw.w;
124
+ this.#dir.n.y = this.#dir.nw.y;
125
+ this.#dir.origin.x = this.#dir.n.x;
126
+ this.#dir.origin.y = this.#dir.nw.y + this.#dir.ne.h;
127
+ this.#setXYRight();
128
+ this.#invalid = true;
129
+ }
130
+ #setXYRight() {
131
+ this.#dir.ne.x = this.#dir.n.x + this.#dir.n.w;
132
+ this.#dir.ne.y = this.#dir.nw.y;
133
+ this.#dir.e.x = this.#dir.ne.x;
134
+ this.#dir.e.y = this.#dir.nw.y + this.#dir.ne.h;
135
+ this.#dir.se.x = this.#dir.e.x;
136
+ this.#dir.se.y = this.#dir.e.y + this.#dir.e.h;
137
+ this.#dir.s.x = this.#dir.n.x;
138
+ this.#dir.s.y = this.#dir.se.y;
139
+ this.#dir.sw.x = this.#dir.nw.x;
140
+ this.#dir.sw.y = this.#dir.se.y;
141
+ }
142
+ }
143
+ //# sourceMappingURL=nine-patch-ent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nine-patch-ent.js","sourceRoot":"","sources":["../../../src/ents/nine-patch-ent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { TagFormat } from '../graphics/atlas.ts';
2
+ import { Layer } from '../graphics/layer.ts';
3
+ import { type WH, type XY } from '../types/geo.ts';
4
+ import type { Void } from '../void.ts';
5
+ import type { Ent } from './ent.ts';
6
+ export declare class TextEnt implements Ent<TagFormat> {
7
+ #private;
8
+ free(v: Void<TagFormat, string>): void;
9
+ layout(v: Void<TagFormat, string>): boolean;
10
+ get maxW(): number;
11
+ set maxW(w: number);
12
+ get scale(): number;
13
+ set scale(scale: number);
14
+ get text(): string;
15
+ set text(str: string);
16
+ update(v: Void<TagFormat, string>): boolean | undefined;
17
+ get scaledLeading(): number;
18
+ get wh(): Readonly<WH>;
19
+ get xy(): Readonly<XY>;
20
+ set xy(xy: Readonly<XY>);
21
+ get z(): Layer;
22
+ set z(layer: Layer);
23
+ }