@almadar/std 16.153.0 → 16.155.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 (93) hide show
  1. package/behaviors/lolo/ui/game/molecules/std-crew-board-2d.lolo +4 -4
  2. package/behaviors/lolo/ui/game/molecules/std-dungeon-board-2d.lolo +6 -6
  3. package/behaviors/lolo/ui/game/molecules/std-tactics-board-2d.lolo +74 -28
  4. package/behaviors/lolo/ui/game/molecules/std-worldmap-board-2d.lolo +2 -2
  5. package/behaviors/lolo/ui/game/molecules/ui-canvas.lolo +5 -0
  6. package/behaviors/lolo/ui/game/organisms/ui-arena-board.lolo +2 -2
  7. package/behaviors/lolo/ui/game/organisms/ui-battle-board.lolo +159 -8
  8. package/behaviors/lolo/ui/game/organisms/ui-builder-board.lolo +5 -20
  9. package/behaviors/lolo/ui/game/organisms/ui-card-battler-board.lolo +2 -0
  10. package/behaviors/lolo/ui/game/organisms/ui-castle-board.lolo +3 -3
  11. package/behaviors/lolo/ui/game/organisms/ui-city-builder-board.lolo +9 -7
  12. package/behaviors/lolo/ui/game/organisms/ui-grid-tactics-demo-board.lolo +2 -2
  13. package/behaviors/lolo/ui/game/organisms/ui-hex-strategy-board.lolo +158 -10
  14. package/behaviors/lolo/ui/game/organisms/ui-holiday-runner-board.lolo +1 -1
  15. package/behaviors/lolo/ui/game/organisms/ui-minigolf-board.lolo +22 -22
  16. package/behaviors/lolo/ui/game/organisms/ui-pinball-board.lolo +7 -7
  17. package/behaviors/lolo/ui/game/organisms/ui-pirate-board.lolo +14 -14
  18. package/behaviors/lolo/ui/game/organisms/ui-platformer-board.lolo +4 -0
  19. package/behaviors/lolo/ui/game/organisms/ui-sports-board.lolo +10 -7
  20. package/behaviors/lolo/ui/game/organisms/ui-tactics-demo-2d.lolo +135 -9
  21. package/behaviors/lolo/ui/game/organisms/ui-tanks-board.lolo +152 -8
  22. package/behaviors/lolo/ui/game/organisms/ui-topdown-rts-board.lolo +293 -17
  23. package/behaviors/lolo/ui/game/organisms/ui-tower-defense-board.lolo +8 -8
  24. package/behaviors/lolo/ui/game/organisms/ui-uncontrolled-battle-board.lolo +5 -5
  25. package/behaviors/lolo/ui/game/organisms/ui-world-map-board.lolo +3 -3
  26. package/behaviors/registry/factory-signatures.json +1893 -2294
  27. package/behaviors/registry/ui/game/molecules/std-crew-board-2d.orb +10 -12
  28. package/behaviors/registry/ui/game/molecules/std-dungeon-board-2d.orb +15 -18
  29. package/behaviors/registry/ui/game/molecules/std-tactics-board-2d.orb +1726 -395
  30. package/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +7 -60
  31. package/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
  32. package/behaviors/registry/ui/game/organisms/ui-arena-board.orb +5 -6
  33. package/behaviors/registry/ui/game/organisms/ui-battle-board.orb +103 -100
  34. package/behaviors/registry/ui/game/organisms/ui-builder-board.orb +21 -226
  35. package/behaviors/registry/ui/game/organisms/ui-card-battler-board.orb +42 -0
  36. package/behaviors/registry/ui/game/organisms/ui-castle-board.orb +30 -9
  37. package/behaviors/registry/ui/game/organisms/ui-city-builder-board.orb +49 -0
  38. package/behaviors/registry/ui/game/organisms/ui-grid-tactics-demo-board.orb +5 -6
  39. package/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +95 -1187
  40. package/behaviors/registry/ui/game/organisms/ui-holiday-runner-board.orb +2 -3
  41. package/behaviors/registry/ui/game/organisms/ui-minigolf-board.orb +55 -11
  42. package/behaviors/registry/ui/game/organisms/ui-pinball-board.orb +8 -8
  43. package/behaviors/registry/ui/game/organisms/ui-pirate-board.orb +14 -0
  44. package/behaviors/registry/ui/game/organisms/ui-platformer-board.orb +72 -0
  45. package/behaviors/registry/ui/game/organisms/ui-sports-board.orb +60 -0
  46. package/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +222 -332
  47. package/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +127 -95
  48. package/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1501 -264
  49. package/behaviors/registry/ui/game/organisms/ui-tower-defense-board.orb +8 -0
  50. package/behaviors/registry/ui/game/organisms/ui-uncontrolled-battle-board.orb +5 -0
  51. package/behaviors/registry/ui/game/organisms/ui-world-map-board.orb +8 -12
  52. package/dist/behaviors/behaviors-embeddings.json +244 -236
  53. package/dist/behaviors/behaviors-registry.json +193 -812
  54. package/dist/behaviors/exports-reader.js +1099 -2090
  55. package/dist/behaviors/functions/index.d.ts +33 -26
  56. package/dist/behaviors/functions/index.js +1099 -2091
  57. package/dist/behaviors/index.d.ts +1 -1
  58. package/dist/behaviors/index.js +1100 -2091
  59. package/dist/behaviors/knob-embeddings.json +1 -1
  60. package/dist/behaviors/query.js +1099 -2090
  61. package/dist/behaviors/registry/factory-signatures.json +1893 -2294
  62. package/dist/behaviors/registry/ui/game/molecules/std-crew-board-2d.orb +10 -12
  63. package/dist/behaviors/registry/ui/game/molecules/std-dungeon-board-2d.orb +15 -18
  64. package/dist/behaviors/registry/ui/game/molecules/std-tactics-board-2d.orb +1726 -395
  65. package/dist/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +7 -60
  66. package/dist/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
  67. package/dist/behaviors/registry/ui/game/organisms/ui-arena-board.orb +5 -6
  68. package/dist/behaviors/registry/ui/game/organisms/ui-battle-board.orb +103 -100
  69. package/dist/behaviors/registry/ui/game/organisms/ui-builder-board.orb +21 -226
  70. package/dist/behaviors/registry/ui/game/organisms/ui-card-battler-board.orb +42 -0
  71. package/dist/behaviors/registry/ui/game/organisms/ui-castle-board.orb +30 -9
  72. package/dist/behaviors/registry/ui/game/organisms/ui-city-builder-board.orb +49 -0
  73. package/dist/behaviors/registry/ui/game/organisms/ui-grid-tactics-demo-board.orb +5 -6
  74. package/dist/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +95 -1187
  75. package/dist/behaviors/registry/ui/game/organisms/ui-holiday-runner-board.orb +2 -3
  76. package/dist/behaviors/registry/ui/game/organisms/ui-minigolf-board.orb +55 -11
  77. package/dist/behaviors/registry/ui/game/organisms/ui-pinball-board.orb +8 -8
  78. package/dist/behaviors/registry/ui/game/organisms/ui-pirate-board.orb +14 -0
  79. package/dist/behaviors/registry/ui/game/organisms/ui-platformer-board.orb +72 -0
  80. package/dist/behaviors/registry/ui/game/organisms/ui-sports-board.orb +60 -0
  81. package/dist/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +222 -332
  82. package/dist/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +127 -95
  83. package/dist/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1501 -264
  84. package/dist/behaviors/registry/ui/game/organisms/ui-tower-defense-board.orb +8 -0
  85. package/dist/behaviors/registry/ui/game/organisms/ui-uncontrolled-battle-board.orb +5 -0
  86. package/dist/behaviors/registry/ui/game/organisms/ui-world-map-board.orb +8 -12
  87. package/dist/behaviors-embeddings.json +244 -236
  88. package/dist/behaviors-registry.json +193 -812
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.js +1100 -2091
  91. package/dist/knob-embeddings.json +1 -1
  92. package/dist/registry/factory-signatures.json +1893 -2294
  93. package/package.json +2 -2
@@ -146,7 +146,7 @@ state playing {
146
146
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
147
147
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
148
148
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
149
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
149
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
150
150
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
151
151
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
152
152
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -169,7 +169,7 @@ state playing {
169
169
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
170
170
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
171
171
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
172
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
172
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
173
173
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
174
174
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
175
175
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -193,7 +193,7 @@ state playing {
193
193
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
194
194
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
195
195
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
196
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
196
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
197
197
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
198
198
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
199
199
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -220,7 +220,7 @@ state playing {
220
220
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
221
221
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
222
222
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
223
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
223
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
224
224
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
225
225
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
226
226
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -247,7 +247,7 @@ state playing {
247
247
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
248
248
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
249
249
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
250
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
250
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
251
251
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
252
252
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
253
253
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -274,7 +274,7 @@ state playing {
274
274
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
275
275
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
276
276
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
277
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
277
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
278
278
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
279
279
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
280
280
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -296,7 +296,7 @@ state playing {
296
296
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
297
297
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
298
298
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
299
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
299
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
300
300
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
301
301
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
302
302
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -319,7 +319,7 @@ state playing {
319
319
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
320
320
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
321
321
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
322
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
322
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
323
323
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
324
324
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
325
325
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -346,7 +346,7 @@ state playing {
346
346
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
347
347
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
348
348
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
349
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
349
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
350
350
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
351
351
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
352
352
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -370,7 +370,7 @@ state playing {
370
370
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
371
371
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
372
372
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
373
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
373
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
374
374
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
375
375
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
376
376
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -394,7 +394,7 @@ state playing {
394
394
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
395
395
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
396
396
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
397
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
397
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
398
398
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
399
399
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
400
400
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -428,7 +428,7 @@ state playing {
428
428
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
429
429
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
430
430
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
431
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
431
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
432
432
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
433
433
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
434
434
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -452,7 +452,7 @@ state playing {
452
452
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
453
453
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
454
454
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
455
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
455
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
456
456
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
457
457
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
458
458
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -484,7 +484,7 @@ state playing {
484
484
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-adventure-pack/ui/uipack_rpg_sheet.json", sprite: "panel_beige.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
485
485
  hud: { type: game-hud, stats: [ { label: "Gold", value: @entity.gold, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "6,5", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Turn", value: @entity.turn, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" } }, { label: "Ships", value: (array/len (array/filter @entity.ships (fn u (and (== @u.team "player") (> @u.health 0))))), iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "0,6", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-ships", thumbnailUrl: "" } } ] }
486
486
  addons: { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-monochrome-pirates/terrain/Default_Tilemap_tilemap_packed.tiles.json", sprite: "1,7", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-turn", thumbnailUrl: "" }, variant: secondary }, { type: button, action: BUY_CANNONS, label: "Buy Cannons", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-pirate-board/kenney-pirate-pack/features/shipsMiscellaneous_sheet.json", sprite: "cannon.png", role: "ui", category: "ui", animations: [], style: "adventure", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cannon", thumbnailUrl: "" }, variant: primary } ] }
487
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
487
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
488
488
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
489
489
  { type: draw-sprite-layer, items: (array/filter (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) (fn s (object/get (object/get @s asset) url))) }
490
490
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -115,6 +115,7 @@ orbital PlatformerBoardOrbital {
115
115
  state won {
116
116
  PLAY_AGAIN -> playing
117
117
  (set @entity.level (+ @entity.level 1))
118
+ (set @entity.lives 3)
118
119
  (set @entity.result "none")
119
120
  (set @entity.effects [])
120
121
  (set @entity.player { x: 80, y: 320, width: 32, height: 48, vx: 0, vy: 0, grounded: false, facingRight: true, animation: "idle", frame: 0 })
@@ -149,11 +150,14 @@ orbital PlatformerBoardOrbital {
149
150
  when (== @entity.result "none")
150
151
  (let ((vy1 (math/clamp (+ @entity.player.vy @config.gravity) (- 0 @config.jumpStrength) @config.maxFallSpeed)) (px1 (math/clamp (+ @entity.player.x @entity.player.vx) 0 (- @entity.worldWidth @entity.player.width))) (pw @entity.player.width) (ph @entity.player.height) (livesLeft (- @entity.lives 1))) (let ((py1 (+ @entity.player.y @vy1))) (let ((playerRect { x: @px1, y: @py1, w: @pw, h: @ph })) (let ((hit (array/find @config.platforms (fn p (and (!= (object/get @p type) "goal") (geo/aabb-overlap @playerRect { x: @p.x, y: @p.y, w: @p.width, h: @p.height })))))) (let ((hazardHit (array/find @config.platforms (fn p (and (== (object/get @p type) "hazard") (geo/aabb-overlap @playerRect { x: @p.x, y: @p.y, w: @p.width, h: @p.height })))))) (let ((goalHit (array/find @config.platforms (fn p (and (== (object/get @p type) "goal") (geo/aabb-overlap @playerRect { x: @p.x, y: @p.y, w: @p.width, h: @p.height })))))) (let ((hitY (object/get @hit "y" @entity.worldHeight)) (landed (and (!= @hit null) (> @vy1 0)))) (let ((py2 (if @landed (- @hitY @ph) @py1)) (vy2 (if @landed 0 @vy1))) (let ((atGround (>= (+ @py2 @ph) @entity.worldHeight))) (let ((py3 (if @atGround (- @entity.worldHeight @ph) @py2)) (vy3 (if @atGround 0 @vy2)) (grounded (or @landed @atGround))) (let ((fell (> @py3 @entity.worldHeight))) (let ((damaged (or (!= @hazardHit null) @fell))) (do (set @entity.player (object/merge @entity.player { x: @px1, y: @py3, vy: @vy3, grounded: @grounded })) (set @entity.result (if (!= @goalHit null) "won" (if (and @damaged (<= @livesLeft 0)) "lost" "none"))) (set @entity.score (if (!= @goalHit null) (+ @entity.score 100) @entity.score)) (set @entity.lives (if (and @damaged (> @entity.lives 0) (== @entity.result "none")) @livesLeft @entity.lives)) (set @entity.player (if (and @damaged (== @entity.result "none")) { x: 80, y: 320, width: 32, height: 48, vx: 0, vy: 0, grounded: false, facingRight: true, animation: "idle", frame: 0 } @entity.player)))))))))))))))
151
152
 
153
+ (if (!= @entity.result "none") (emit GAME_END { result: @entity.result }) null)
154
+
152
155
  animTick every 100ms
153
156
  (set @entity.player (object/merge @entity.player { frame: (% (+ (object/get @entity.player frame) 1) 8) }))
154
157
  (set @entity.effects (array/filter (array/map @entity.effects (fn e (object/merge @e { ttl: (- (object/get @e ttl) 1) }))) (fn e (> (object/get @e ttl) 0))))
155
158
  (render-ui main {
156
159
  type: game-shell
160
+ overlay: (if (== @entity.result "won") { type: game-menu, title: "YOU WIN!", subtitle: (str/concat "Score: " @entity.score), options: [ { id: "again", label: "Play Again", event: "PLAY_AGAIN", variant: "primary" } ] } (if (== @entity.result "lost") { type: game-menu, title: "GAME OVER", subtitle: (str/concat "Score: " @entity.score), options: [ { id: "again", label: "Play Again", event: "PLAY_AGAIN", variant: "primary" } ] } null))
157
161
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
158
162
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
159
163
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Score", value: @entity.score, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_star", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "star", thumbnailUrl: "" } }, { label: "Lives", value: @entity.lives, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-platformer-board/kenney-platformer-assets-base/ui/hud_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-platformer-board/kenney-platformer-assets-base/ui/hud_sheet.json", sprite: "hud_coins.png", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "coin", thumbnailUrl: "" } } ] }, { type: control-grid, kind: "dpad", directionEvents: { left: "LEFT", right: "RIGHT", up: "JUMP" }, directionReleaseEvents: { left: "STOP", right: "STOP" }, directionAssets: { up: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-up", thumbnailUrl: "" }, down: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-down", thumbnailUrl: "" }, left: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-left", thumbnailUrl: "" }, right: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-right", thumbnailUrl: "" } } }, { type: button, action: PLAY_AGAIN, label: "Restart", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "icon-restart", thumbnailUrl: "" }, variant: secondary } ] }
@@ -122,7 +122,7 @@ orbital SportsBoardOrbital {
122
122
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
123
123
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
124
124
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Home", value: @entity.homeScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_a", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-home", thumbnailUrl: "" } }, { label: "Away", value: @entity.awayScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_b", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-away", thumbnailUrl: "" } } ] }, { type: game-icon, label: "Phase", value: @entity.phase, assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_cog", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-phase", thumbnailUrl: "" } }, { type: button, action: RESET, label: "Reset", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reset", thumbnailUrl: "" }, variant: secondary } ] }
125
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
125
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
126
126
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
127
127
  { type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) }
128
128
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -145,7 +145,7 @@ orbital SportsBoardOrbital {
145
145
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
146
146
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
147
147
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Home", value: @entity.homeScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_a", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-home", thumbnailUrl: "" } }, { label: "Away", value: @entity.awayScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_b", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-away", thumbnailUrl: "" } } ] }, { type: game-icon, label: "Phase", value: @entity.phase, assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_cog", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-phase", thumbnailUrl: "" } }, { type: button, action: RESET, label: "Reset", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reset", thumbnailUrl: "" }, variant: secondary } ] }
148
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
148
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
149
149
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
150
150
  { type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) }
151
151
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -168,7 +168,7 @@ orbital SportsBoardOrbital {
168
168
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
169
169
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
170
170
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Home", value: @entity.homeScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_a", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-home", thumbnailUrl: "" } }, { label: "Away", value: @entity.awayScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_b", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-away", thumbnailUrl: "" } } ] }, { type: game-icon, label: "Phase", value: @entity.phase, assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_cog", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-phase", thumbnailUrl: "" } }, { type: button, action: RESET, label: "Reset", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reset", thumbnailUrl: "" }, variant: secondary } ] }
171
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
171
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
172
172
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
173
173
  { type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) }
174
174
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -192,7 +192,7 @@ orbital SportsBoardOrbital {
192
192
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
193
193
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
194
194
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Home", value: @entity.homeScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_a", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-home", thumbnailUrl: "" } }, { label: "Away", value: @entity.awayScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_b", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-away", thumbnailUrl: "" } } ] }, { type: game-icon, label: "Phase", value: @entity.phase, assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_cog", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-phase", thumbnailUrl: "" } }, { type: button, action: RESET, label: "Reset", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reset", thumbnailUrl: "" }, variant: secondary } ] }
195
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
195
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
196
196
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
197
197
  { type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) }
198
198
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -205,6 +205,9 @@ orbital SportsBoardOrbital {
205
205
  { type: draw-sprite-layer, items: (array/map @entity.effects (fn e { type: draw-sprite, position: { x: (object/get @e x), y: (object/get @e y) }, asset: (object/get (object/get @config.assetManifest effects) (object/get @e key)) })) }
206
206
  ] } ]
207
207
  })
208
+ (if (!= (array/find @config.features (fn f (and (== @f.type "goal") (and (== @f.x ?x) (== @f.y ?y))))) null)
209
+ (emit GOAL { team: (if (== ?x 0) "enemy" "player") })
210
+ null)
208
211
 
209
212
  GOAL -> playing
210
213
  (set @entity.homeScore (if (== ?team "player") (+ @entity.homeScore 1) @entity.homeScore))
@@ -215,7 +218,7 @@ orbital SportsBoardOrbital {
215
218
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
216
219
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
217
220
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Home", value: @entity.homeScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_a", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-home", thumbnailUrl: "" } }, { label: "Away", value: @entity.awayScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_b", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-away", thumbnailUrl: "" } } ] }, { type: game-icon, label: "Phase", value: @entity.phase, assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_cog", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-phase", thumbnailUrl: "" } }, { type: button, action: RESET, label: "Reset", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reset", thumbnailUrl: "" }, variant: secondary } ] }
218
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
221
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
219
222
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
220
223
  { type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) }
221
224
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -242,7 +245,7 @@ orbital SportsBoardOrbital {
242
245
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
243
246
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
244
247
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Home", value: @entity.homeScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_a", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-home", thumbnailUrl: "" } }, { label: "Away", value: @entity.awayScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_b", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-away", thumbnailUrl: "" } } ] }, { type: game-icon, label: "Phase", value: @entity.phase, assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_cog", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-phase", thumbnailUrl: "" } }, { type: button, action: RESET, label: "Reset", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reset", thumbnailUrl: "" }, variant: secondary } ] }
245
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
248
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
246
249
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
247
250
  { type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) }
248
251
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
@@ -264,7 +267,7 @@ orbital SportsBoardOrbital {
264
267
  backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
265
268
  hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-ui-pack/ui/greySheet.json", sprite: "grey_panel.png", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
266
269
  hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Home", value: @entity.homeScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_a", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-home", thumbnailUrl: "" } }, { label: "Away", value: @entity.awayScore, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_button_b", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-away", thumbnailUrl: "" } } ] }, { type: game-icon, label: "Phase", value: @entity.phase, assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_cog", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-phase", thumbnailUrl: "" } }, { type: button, action: RESET, label: "Reset", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-mobile-controls/ui/icons-default.json", sprite: "icon_arrow_rotate", role: "ui", category: "ui", animations: [], style: "generic", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reset", thumbnailUrl: "" }, variant: secondary } ] }
267
- children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
270
+ children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
268
271
  { type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite) })) }
269
272
  { type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f assetUrl) })) }
270
273
  { type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }