@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.
- package/dist/public/index.js +19 -15
- package/dist/public/index.js.map +4 -4
- package/dist/public/preload-atlas.webp +0 -0
- package/dist/public/void-v0.1.0+20251227.1060661.html +115 -0
- package/dist/schema/config-file.v0.json +86 -15
- package/dist/schema/level-file.v0.json +423 -0
- package/dist/src/audio.d.ts +1 -0
- package/dist/src/audio.d.ts.map +1 -0
- package/dist/src/demo/assets/manifest.json +2 -2
- package/dist/src/demo/assets/void.game.json +202 -0
- package/dist/src/demo/ents/cam.d.ts +6 -0
- package/dist/src/demo/ents/cam.d.ts.map +1 -0
- package/dist/src/demo/ents/cam.js +21 -0
- package/dist/src/demo/ents/cam.js.map +1 -0
- package/dist/src/demo/ents/clock.d.ts +10 -0
- package/dist/src/demo/ents/clock.d.ts.map +1 -0
- package/dist/src/demo/ents/clock.js +16 -0
- package/dist/src/demo/ents/clock.js.map +1 -0
- package/dist/src/demo/ents/draw.d.ts +6 -0
- package/dist/src/demo/ents/draw.d.ts.map +1 -0
- package/dist/src/demo/ents/draw.js +14 -0
- package/dist/src/demo/ents/draw.js.map +1 -0
- package/dist/src/demo/ents/ent.d.ts +6 -0
- package/dist/src/demo/ents/ent.d.ts.map +1 -0
- package/dist/src/demo/ents/ent.js +2 -0
- package/dist/src/demo/ents/ent.js.map +1 -0
- package/dist/src/demo/ents/loader.d.ts +6 -0
- package/dist/src/demo/ents/loader.d.ts.map +1 -0
- package/dist/src/demo/ents/loader.js +45 -0
- package/dist/src/demo/ents/loader.js.map +1 -0
- package/dist/src/demo/ents/render-toggle.d.ts +7 -0
- package/dist/src/demo/ents/render-toggle.d.ts.map +1 -0
- package/dist/src/demo/ents/render-toggle.js +8 -0
- package/dist/src/demo/ents/render-toggle.js.map +1 -0
- package/dist/src/demo/ents/tally.d.ts +8 -0
- package/dist/src/demo/ents/tally.d.ts.map +1 -0
- package/dist/src/demo/ents/tally.js +14 -0
- package/dist/src/demo/ents/tally.js.map +1 -0
- package/dist/src/demo/index.d.ts +1 -0
- package/dist/src/demo/index.d.ts.map +1 -0
- package/dist/src/demo/index.js +12 -3
- package/dist/src/demo/index.js.map +1 -1
- package/dist/src/demo/level/level-file.json +50 -0
- package/dist/src/demo/level/level-parser.d.ts +5 -0
- package/dist/src/demo/level/level-parser.d.ts.map +1 -0
- package/dist/src/demo/level/level-parser.js +21 -0
- package/dist/src/demo/level/level-parser.js.map +1 -0
- package/dist/src/demo/level/level-schema.d.ts +4 -0
- package/dist/src/demo/level/level-schema.d.ts.map +1 -0
- package/dist/src/demo/level/level-schema.js +2 -0
- package/dist/src/demo/level/level-schema.js.map +1 -0
- package/dist/src/demo/types/decl.d.ts +30 -0
- package/dist/src/demo/types/decl.d.ts.map +1 -0
- package/dist/src/demo/types/decl.js +2 -0
- package/dist/src/demo/types/decl.js.map +1 -0
- package/dist/src/demo/void.json +8 -4
- package/dist/src/ents/button.d.ts +14 -0
- package/dist/src/ents/button.d.ts.map +1 -0
- package/dist/src/ents/button.js +59 -0
- package/dist/src/ents/button.js.map +1 -0
- package/dist/src/ents/cam.d.ts +3 -0
- package/dist/src/ents/cam.d.ts.map +1 -0
- package/dist/src/ents/cam.js +2 -0
- package/dist/src/ents/cam.js.map +1 -0
- package/dist/src/ents/cursor.d.ts +20 -0
- package/dist/src/ents/cursor.d.ts.map +1 -0
- package/dist/src/ents/cursor.js +49 -0
- package/dist/src/ents/cursor.js.map +1 -0
- package/dist/src/ents/debug-input.d.ts +8 -0
- package/dist/src/ents/debug-input.d.ts.map +1 -0
- package/dist/src/ents/debug-input.js +25 -0
- package/dist/src/ents/debug-input.js.map +1 -0
- package/dist/src/ents/draw.d.ts +3 -0
- package/dist/src/ents/draw.d.ts.map +1 -0
- package/dist/src/ents/draw.js +2 -0
- package/dist/src/ents/draw.js.map +1 -0
- package/dist/src/ents/ent-query.d.ts +26 -0
- package/dist/src/ents/ent-query.d.ts.map +1 -0
- package/dist/src/ents/ent-query.js +10 -0
- package/dist/src/ents/ent-query.js.map +1 -0
- package/dist/src/ents/ent.d.ts +92 -6
- package/dist/src/ents/ent.d.ts.map +1 -0
- package/dist/src/ents/fps.d.ts +7 -0
- package/dist/src/ents/fps.d.ts.map +1 -0
- package/dist/src/ents/fps.js +14 -0
- package/dist/src/ents/fps.js.map +1 -0
- package/dist/src/ents/hud.d.ts +14 -0
- package/dist/src/ents/hud.d.ts.map +1 -0
- package/dist/src/ents/hud.js +38 -0
- package/dist/src/ents/hud.js.map +1 -0
- package/dist/src/ents/loader.d.ts +3 -0
- package/dist/src/ents/loader.d.ts.map +1 -0
- package/dist/src/ents/loader.js +2 -0
- package/dist/src/ents/loader.js.map +1 -0
- package/dist/src/ents/nine-patch.d.ts +17 -0
- package/dist/src/ents/nine-patch.d.ts.map +1 -0
- package/dist/src/ents/nine-patch.js +99 -0
- package/dist/src/ents/nine-patch.js.map +1 -0
- package/dist/src/ents/override.d.ts +8 -0
- package/dist/src/ents/override.d.ts.map +1 -0
- package/dist/src/ents/override.js +8 -0
- package/dist/src/ents/override.js.map +1 -0
- package/dist/src/ents/sprite.d.ts +8 -0
- package/dist/src/ents/sprite.d.ts.map +1 -0
- package/dist/src/ents/sprite.js +10 -0
- package/dist/src/ents/sprite.js.map +1 -0
- package/dist/src/ents/sys.d.ts +14 -0
- package/dist/src/ents/sys.d.ts.map +1 -0
- package/dist/src/ents/sys.js +2 -0
- package/dist/src/ents/sys.js.map +1 -0
- package/dist/src/ents/text.d.ts +21 -0
- package/dist/src/ents/text.d.ts.map +1 -0
- package/dist/src/ents/text.js +118 -0
- package/dist/src/ents/text.js.map +1 -0
- package/dist/src/ents/zoo.d.ts +18 -11
- package/dist/src/ents/zoo.d.ts.map +1 -0
- package/dist/src/ents/zoo.js +75 -15
- package/dist/src/ents/zoo.js.map +1 -1
- package/dist/src/graphics/atlas-parser.d.ts +3 -1
- package/dist/src/graphics/atlas-parser.d.ts.map +1 -0
- package/dist/src/graphics/atlas-parser.js.map +1 -1
- package/dist/src/graphics/atlas.d.ts +9 -15
- package/dist/src/graphics/atlas.d.ts.map +1 -0
- package/dist/src/graphics/cam.d.ts +13 -10
- package/dist/src/graphics/cam.d.ts.map +1 -0
- package/dist/src/graphics/cam.js +23 -17
- package/dist/src/graphics/cam.js.map +1 -1
- package/dist/src/graphics/gl.d.ts +1 -8
- package/dist/src/graphics/gl.d.ts.map +1 -0
- package/dist/src/graphics/gl.js +0 -1
- package/dist/src/graphics/gl.js.map +1 -1
- package/dist/src/graphics/layer.d.ts +21 -17
- package/dist/src/graphics/layer.d.ts.map +1 -0
- package/dist/src/graphics/layer.js +23 -18
- package/dist/src/graphics/layer.js.map +1 -1
- package/dist/src/graphics/pixel-ratio-observer.d.ts +8 -0
- package/dist/src/graphics/pixel-ratio-observer.d.ts.map +1 -0
- package/dist/src/graphics/pixel-ratio-observer.js +23 -0
- package/dist/src/graphics/pixel-ratio-observer.js.map +1 -0
- package/dist/src/graphics/render-mode.d.ts +2 -0
- package/dist/src/graphics/render-mode.d.ts.map +1 -0
- package/dist/src/graphics/render-mode.js +2 -0
- package/dist/src/graphics/render-mode.js.map +1 -0
- package/dist/src/graphics/renderer.d.ts +9 -4
- package/dist/src/graphics/renderer.d.ts.map +1 -0
- package/dist/src/graphics/renderer.js +30 -13
- package/dist/src/graphics/renderer.js.map +1 -1
- package/dist/src/graphics/sprite-frag.glsl.d.ts +1 -0
- package/dist/src/graphics/sprite-frag.glsl.d.ts.map +1 -0
- package/dist/src/graphics/sprite-frag.glsl.js +3 -4
- package/dist/src/graphics/sprite-frag.glsl.js.map +1 -1
- package/dist/src/graphics/sprite-vert.glsl.d.ts +1 -0
- package/dist/src/graphics/sprite-vert.glsl.d.ts.map +1 -0
- package/dist/src/graphics/sprite-vert.glsl.js +9 -7
- package/dist/src/graphics/sprite-vert.glsl.js.map +1 -1
- package/dist/src/graphics/sprite.d.ts +54 -16
- package/dist/src/graphics/sprite.d.ts.map +1 -0
- package/dist/src/graphics/sprite.js +109 -32
- package/dist/src/graphics/sprite.js.map +1 -1
- package/dist/src/index.d.ts +31 -6
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +33 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/input/context-menu.d.ts +1 -1
- package/dist/src/input/context-menu.d.ts.map +1 -0
- package/dist/src/input/context-menu.js +0 -1
- package/dist/src/input/context-menu.js.map +1 -1
- package/dist/src/input/gamepad.d.ts +1 -1
- package/dist/src/input/gamepad.d.ts.map +1 -0
- package/dist/src/input/gamepad.js +0 -1
- package/dist/src/input/gamepad.js.map +1 -1
- package/dist/src/input/input.d.ts +30 -23
- package/dist/src/input/input.d.ts.map +1 -0
- package/dist/src/input/input.js +53 -31
- package/dist/src/input/input.js.map +1 -1
- package/dist/src/input/keyboard.d.ts +1 -0
- package/dist/src/input/keyboard.d.ts.map +1 -0
- package/dist/src/input/pointer.d.ts +1 -0
- package/dist/src/input/pointer.d.ts.map +1 -0
- package/dist/src/input/pointer.js +11 -8
- package/dist/src/input/pointer.js.map +1 -1
- package/dist/src/input/wheel.d.ts +6 -1
- package/dist/src/input/wheel.d.ts.map +1 -0
- package/dist/src/input/wheel.js +5 -1
- package/dist/src/input/wheel.js.map +1 -1
- package/dist/src/level/level-parser.d.ts +26 -0
- package/dist/src/level/level-parser.d.ts.map +1 -0
- package/dist/src/level/level-parser.js +258 -0
- package/dist/src/level/level-parser.js.map +1 -0
- package/dist/src/level/level-schema-json.d.ts +5 -0
- package/dist/src/level/level-schema-json.d.ts.map +1 -0
- package/dist/src/level/level-schema-json.js +2 -0
- package/dist/src/level/level-schema-json.js.map +1 -0
- package/dist/src/level/level-schema.d.ts +87 -0
- package/dist/src/level/level-schema.d.ts.map +1 -0
- package/dist/src/level/level-schema.js +2 -0
- package/dist/src/level/level-schema.js.map +1 -0
- package/dist/src/level/level.d.ts +8 -0
- package/dist/src/level/level.d.ts.map +1 -0
- package/dist/src/level/level.js +2 -0
- package/dist/src/level/level.js.map +1 -0
- package/dist/src/looper.d.ts +1 -0
- package/dist/src/looper.d.ts.map +1 -0
- package/dist/src/looper.js +5 -2
- package/dist/src/looper.js.map +1 -1
- package/dist/src/mem/pool-map.d.ts +6 -0
- package/dist/src/mem/pool-map.d.ts.map +1 -0
- package/dist/src/mem/pool-map.js +2 -0
- package/dist/src/mem/pool-map.js.map +1 -0
- package/dist/src/mem/pool.d.ts +5 -1
- package/dist/src/mem/pool.d.ts.map +1 -0
- package/dist/src/mem/pool.js +22 -21
- package/dist/src/mem/pool.js.map +1 -1
- package/dist/src/mem/sprite-pool.d.ts +12 -0
- package/dist/src/mem/sprite-pool.d.ts.map +1 -0
- package/dist/src/mem/sprite-pool.js +11 -0
- package/dist/src/mem/sprite-pool.js.map +1 -0
- package/dist/src/random/random.d.ts +1 -0
- package/dist/src/random/random.d.ts.map +1 -0
- package/dist/src/storage/local-storage.d.ts +2 -1
- package/dist/src/storage/local-storage.d.ts.map +1 -0
- package/dist/src/storage/local-storage.js.map +1 -1
- package/dist/src/text/font.d.ts +5 -3
- package/dist/src/text/font.d.ts.map +1 -0
- package/dist/src/text/font.js +8 -5
- package/dist/src/text/font.js.map +1 -1
- package/dist/src/text/mem-prop-5x6.json +20 -5
- package/dist/src/text/text-layout.d.ts +16 -5
- package/dist/src/text/text-layout.d.ts.map +1 -0
- package/dist/src/text/text-layout.js +46 -28
- package/dist/src/text/text-layout.js.map +1 -1
- package/dist/src/types/bundle.d.ts +10 -0
- package/dist/src/types/bundle.d.ts.map +1 -0
- package/dist/src/types/bundle.js +2 -0
- package/dist/src/types/bundle.js.map +1 -0
- package/dist/src/types/game-config.d.ts +27 -0
- package/dist/src/types/game-config.d.ts.map +1 -0
- package/dist/src/types/game-config.js +2 -0
- package/dist/src/types/game-config.js.map +1 -0
- package/dist/src/types/geo.d.ts +9 -2
- package/dist/src/types/geo.d.ts.map +1 -0
- package/dist/src/types/geo.js +16 -0
- package/dist/src/types/geo.js.map +1 -1
- package/dist/src/types/json.d.ts +1 -0
- package/dist/src/types/json.d.ts.map +1 -0
- package/dist/src/types/time.d.ts +13 -2
- package/dist/src/types/time.d.ts.map +1 -0
- package/dist/src/types/time.js +10 -0
- package/dist/src/types/time.js.map +1 -1
- package/dist/src/utils/async-util.d.ts +1 -0
- package/dist/src/utils/async-util.d.ts.map +1 -0
- package/dist/src/utils/async-util.js +2 -0
- package/dist/src/utils/async-util.js.map +1 -1
- package/dist/src/utils/canvas-util.d.ts +3 -1
- package/dist/src/utils/canvas-util.d.ts.map +1 -0
- package/dist/src/utils/canvas-util.js +7 -3
- package/dist/src/utils/canvas-util.js.map +1 -1
- package/dist/src/utils/color-util.d.ts +6 -0
- package/dist/src/utils/color-util.d.ts.map +1 -0
- package/dist/src/utils/color-util.js +12 -0
- package/dist/src/utils/color-util.js.map +1 -1
- package/dist/src/utils/debug.d.ts +1 -0
- package/dist/src/utils/debug.d.ts.map +1 -0
- package/dist/src/utils/debug.js +4 -4
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/delay-interval.d.ts +1 -0
- package/dist/src/utils/delay-interval.d.ts.map +1 -0
- package/dist/src/utils/dom-util.d.ts +3 -2
- package/dist/src/utils/dom-util.d.ts.map +1 -0
- package/dist/src/utils/dom-util.js +16 -12
- package/dist/src/utils/dom-util.js.map +1 -1
- package/dist/src/utils/fetch-util.d.ts +2 -1
- package/dist/src/utils/fetch-util.d.ts.map +1 -0
- package/dist/src/utils/fetch-util.js +2 -2
- package/dist/src/utils/math.d.ts +1 -0
- package/dist/src/utils/math.d.ts.map +1 -0
- package/dist/src/utils/math.js +1 -1
- package/dist/src/utils/math.js.map +1 -1
- package/dist/src/utils/obj-util.d.ts +7 -0
- package/dist/src/utils/obj-util.d.ts.map +1 -0
- package/dist/src/utils/obj-util.js +8 -0
- package/dist/src/utils/obj-util.js.map +1 -0
- package/dist/src/utils/str-util.d.ts +2 -0
- package/dist/src/utils/str-util.d.ts.map +1 -0
- package/dist/src/utils/str-util.js +6 -0
- package/dist/src/utils/str-util.js.map +1 -0
- package/dist/src/utils/vibrate.d.ts +1 -0
- package/dist/src/utils/vibrate.d.ts.map +1 -0
- package/dist/src/void.d.ts +42 -30
- package/dist/src/void.d.ts.map +1 -0
- package/dist/src/void.js +78 -34
- package/dist/src/void.js.map +1 -1
- package/dist/tools/atlas-pack/aseprite-json.d.ts +5 -0
- package/dist/tools/atlas-pack/aseprite-json.d.ts.map +1 -0
- package/dist/tools/atlas-pack/aseprite-json.js +2 -0
- package/dist/tools/atlas-pack/aseprite-json.js.map +1 -0
- package/dist/tools/atlas-pack/aseprite.d.ts +58 -31
- package/dist/tools/atlas-pack/aseprite.d.ts.map +1 -0
- package/dist/tools/atlas-pack/aseprite.js +1 -1
- package/dist/tools/atlas-pack/aseprite.js.map +1 -1
- package/dist/tools/atlas-pack/atlas-json-parser.d.ts +11 -10
- package/dist/tools/atlas-pack/atlas-json-parser.d.ts.map +1 -0
- package/dist/tools/atlas-pack/atlas-json-parser.js +14 -14
- package/dist/tools/atlas-pack/atlas-json-parser.js.map +1 -1
- package/dist/tools/atlas-pack/atlas-pack.d.ts +4 -2
- package/dist/tools/atlas-pack/atlas-pack.d.ts.map +1 -0
- package/dist/tools/atlas-pack/atlas-pack.js +1 -6
- package/dist/tools/atlas-pack/atlas-pack.js.map +1 -1
- package/dist/tools/bundle/bundle.d.ts +3 -3
- package/dist/tools/bundle/bundle.d.ts.map +1 -0
- package/dist/tools/bundle/bundle.js +32 -7
- package/dist/tools/bundle/bundle.js.map +1 -1
- package/dist/tools/bundle/html-plugin.d.ts +1 -0
- package/dist/tools/bundle/html-plugin.d.ts.map +1 -0
- package/dist/tools/bundle/html-plugin.js +5 -20
- package/dist/tools/bundle/html-plugin.js.map +1 -1
- package/dist/tools/tsconfig-base.json +1 -1
- package/dist/tools/tsconfig.json +1 -2
- package/dist/{schema → tools/types}/config-file.d.ts +21 -9
- package/dist/tools/types/config-file.d.ts.map +1 -0
- package/dist/{schema → tools/types}/config-file.js +18 -5
- package/dist/tools/types/config-file.js.map +1 -0
- package/dist/tools/types/config.d.ts +10 -9
- package/dist/tools/types/config.d.ts.map +1 -0
- package/dist/tools/types/config.js +23 -5
- package/dist/tools/types/config.js.map +1 -1
- package/dist/tools/types/package-json.d.ts +3 -2
- package/dist/tools/types/package-json.d.ts.map +1 -0
- package/dist/tools/utils/argv.d.ts +3 -0
- package/dist/tools/utils/argv.d.ts.map +1 -0
- package/dist/tools/utils/argv.js +1 -1
- package/dist/tools/utils/argv.js.map +1 -1
- package/dist/tools/utils/exec.d.ts +2 -1
- package/dist/tools/utils/exec.d.ts.map +1 -0
- package/dist/tools/utils/exec.js.map +1 -1
- package/dist/tools/utils/file-util.d.ts +1 -0
- package/dist/tools/utils/file-util.d.ts.map +1 -0
- package/dist/tools/utils/html-parser.d.ts +1 -0
- package/dist/tools/utils/html-parser.d.ts.map +1 -0
- package/dist/tools/void.d.ts +1 -0
- package/dist/tools/void.d.ts.map +1 -0
- package/dist/tools/void.js +3 -16
- package/dist/tools/void.js.map +1 -1
- package/package.json +13 -14
- package/readme.md +63 -1
- package/dist/package.json +0 -65
- package/dist/public/void-v0.1.0-8+20251022.b364155.html +0 -111
- package/dist/schema/config-file.js.map +0 -1
- package/dist/src/demo/assets/preload-atlas.json +0 -193
- package/dist/src/demo/ents/clock-ent.d.ts +0 -11
- package/dist/src/demo/ents/clock-ent.js +0 -26
- package/dist/src/demo/ents/clock-ent.js.map +0 -1
- package/dist/src/demo/ents/render-toggle-ent.d.ts +0 -12
- package/dist/src/demo/ents/render-toggle-ent.js +0 -41
- package/dist/src/demo/ents/render-toggle-ent.js.map +0 -1
- package/dist/src/demo/ents/work-counter-ent.d.ts +0 -10
- package/dist/src/demo/ents/work-counter-ent.js +0 -20
- package/dist/src/demo/ents/work-counter-ent.js.map +0 -1
- package/dist/src/demo/game.d.ts +0 -12
- package/dist/src/demo/game.js +0 -135
- package/dist/src/demo/game.js.map +0 -1
- package/dist/src/demo/types/tag.d.ts +0 -2
- package/dist/src/demo/types/tag.js +0 -2
- package/dist/src/demo/types/tag.js.map +0 -1
- package/dist/src/ents/button-ent.d.ts +0 -39
- package/dist/src/ents/button-ent.js +0 -128
- package/dist/src/ents/button-ent.js.map +0 -1
- package/dist/src/ents/cursor-ent.d.ts +0 -18
- package/dist/src/ents/cursor-ent.js +0 -63
- package/dist/src/ents/cursor-ent.js.map +0 -1
- package/dist/src/ents/follow-cam-ent.d.ts +0 -25
- package/dist/src/ents/follow-cam-ent.js +0 -87
- package/dist/src/ents/follow-cam-ent.js.map +0 -1
- package/dist/src/ents/nine-patch-ent.d.ts +0 -43
- package/dist/src/ents/nine-patch-ent.js +0 -143
- package/dist/src/ents/nine-patch-ent.js.map +0 -1
- package/dist/src/ents/text-ent.d.ts +0 -23
- package/dist/src/ents/text-ent.js +0 -109
- package/dist/src/ents/text-ent.js.map +0 -1
- package/dist/src/types/void-version.d.ts +0 -7
- package/dist/src/types/void-version.js +0 -2
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/src/ents/ent.d.ts
CHANGED
|
@@ -1,7 +1,93 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|