@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.
- package/behaviors/lolo/ui/game/molecules/std-crew-board-2d.lolo +4 -4
- package/behaviors/lolo/ui/game/molecules/std-dungeon-board-2d.lolo +6 -6
- package/behaviors/lolo/ui/game/molecules/std-tactics-board-2d.lolo +74 -28
- package/behaviors/lolo/ui/game/molecules/std-worldmap-board-2d.lolo +2 -2
- package/behaviors/lolo/ui/game/molecules/ui-canvas.lolo +5 -0
- package/behaviors/lolo/ui/game/organisms/ui-arena-board.lolo +2 -2
- package/behaviors/lolo/ui/game/organisms/ui-battle-board.lolo +159 -8
- package/behaviors/lolo/ui/game/organisms/ui-builder-board.lolo +5 -20
- package/behaviors/lolo/ui/game/organisms/ui-card-battler-board.lolo +2 -0
- package/behaviors/lolo/ui/game/organisms/ui-castle-board.lolo +3 -3
- package/behaviors/lolo/ui/game/organisms/ui-city-builder-board.lolo +9 -7
- package/behaviors/lolo/ui/game/organisms/ui-grid-tactics-demo-board.lolo +2 -2
- package/behaviors/lolo/ui/game/organisms/ui-hex-strategy-board.lolo +158 -10
- package/behaviors/lolo/ui/game/organisms/ui-holiday-runner-board.lolo +1 -1
- package/behaviors/lolo/ui/game/organisms/ui-minigolf-board.lolo +22 -22
- package/behaviors/lolo/ui/game/organisms/ui-pinball-board.lolo +7 -7
- package/behaviors/lolo/ui/game/organisms/ui-pirate-board.lolo +14 -14
- package/behaviors/lolo/ui/game/organisms/ui-platformer-board.lolo +4 -0
- package/behaviors/lolo/ui/game/organisms/ui-sports-board.lolo +10 -7
- package/behaviors/lolo/ui/game/organisms/ui-tactics-demo-2d.lolo +135 -9
- package/behaviors/lolo/ui/game/organisms/ui-tanks-board.lolo +152 -8
- package/behaviors/lolo/ui/game/organisms/ui-topdown-rts-board.lolo +293 -17
- package/behaviors/lolo/ui/game/organisms/ui-tower-defense-board.lolo +8 -8
- package/behaviors/lolo/ui/game/organisms/ui-uncontrolled-battle-board.lolo +5 -5
- package/behaviors/lolo/ui/game/organisms/ui-world-map-board.lolo +3 -3
- package/behaviors/registry/factory-signatures.json +1893 -2294
- package/behaviors/registry/ui/game/molecules/std-crew-board-2d.orb +10 -12
- package/behaviors/registry/ui/game/molecules/std-dungeon-board-2d.orb +15 -18
- package/behaviors/registry/ui/game/molecules/std-tactics-board-2d.orb +1726 -395
- package/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +7 -60
- package/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
- package/behaviors/registry/ui/game/organisms/ui-arena-board.orb +5 -6
- package/behaviors/registry/ui/game/organisms/ui-battle-board.orb +103 -100
- package/behaviors/registry/ui/game/organisms/ui-builder-board.orb +21 -226
- package/behaviors/registry/ui/game/organisms/ui-card-battler-board.orb +42 -0
- package/behaviors/registry/ui/game/organisms/ui-castle-board.orb +30 -9
- package/behaviors/registry/ui/game/organisms/ui-city-builder-board.orb +49 -0
- package/behaviors/registry/ui/game/organisms/ui-grid-tactics-demo-board.orb +5 -6
- package/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +95 -1187
- package/behaviors/registry/ui/game/organisms/ui-holiday-runner-board.orb +2 -3
- package/behaviors/registry/ui/game/organisms/ui-minigolf-board.orb +55 -11
- package/behaviors/registry/ui/game/organisms/ui-pinball-board.orb +8 -8
- package/behaviors/registry/ui/game/organisms/ui-pirate-board.orb +14 -0
- package/behaviors/registry/ui/game/organisms/ui-platformer-board.orb +72 -0
- package/behaviors/registry/ui/game/organisms/ui-sports-board.orb +60 -0
- package/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +222 -332
- package/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +127 -95
- package/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1501 -264
- package/behaviors/registry/ui/game/organisms/ui-tower-defense-board.orb +8 -0
- package/behaviors/registry/ui/game/organisms/ui-uncontrolled-battle-board.orb +5 -0
- package/behaviors/registry/ui/game/organisms/ui-world-map-board.orb +8 -12
- package/dist/behaviors/behaviors-embeddings.json +244 -236
- package/dist/behaviors/behaviors-registry.json +193 -812
- package/dist/behaviors/exports-reader.js +1099 -2090
- package/dist/behaviors/functions/index.d.ts +33 -26
- package/dist/behaviors/functions/index.js +1099 -2091
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +1100 -2091
- package/dist/behaviors/knob-embeddings.json +1 -1
- package/dist/behaviors/query.js +1099 -2090
- package/dist/behaviors/registry/factory-signatures.json +1893 -2294
- package/dist/behaviors/registry/ui/game/molecules/std-crew-board-2d.orb +10 -12
- package/dist/behaviors/registry/ui/game/molecules/std-dungeon-board-2d.orb +15 -18
- package/dist/behaviors/registry/ui/game/molecules/std-tactics-board-2d.orb +1726 -395
- package/dist/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +7 -60
- package/dist/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-arena-board.orb +5 -6
- package/dist/behaviors/registry/ui/game/organisms/ui-battle-board.orb +103 -100
- package/dist/behaviors/registry/ui/game/organisms/ui-builder-board.orb +21 -226
- package/dist/behaviors/registry/ui/game/organisms/ui-card-battler-board.orb +42 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-castle-board.orb +30 -9
- package/dist/behaviors/registry/ui/game/organisms/ui-city-builder-board.orb +49 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-grid-tactics-demo-board.orb +5 -6
- package/dist/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +95 -1187
- package/dist/behaviors/registry/ui/game/organisms/ui-holiday-runner-board.orb +2 -3
- package/dist/behaviors/registry/ui/game/organisms/ui-minigolf-board.orb +55 -11
- package/dist/behaviors/registry/ui/game/organisms/ui-pinball-board.orb +8 -8
- package/dist/behaviors/registry/ui/game/organisms/ui-pirate-board.orb +14 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-platformer-board.orb +72 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-sports-board.orb +60 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +222 -332
- package/dist/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +127 -95
- package/dist/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1501 -264
- package/dist/behaviors/registry/ui/game/organisms/ui-tower-defense-board.orb +8 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-uncontrolled-battle-board.orb +5 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-world-map-board.orb +8 -12
- package/dist/behaviors-embeddings.json +244 -236
- package/dist/behaviors-registry.json +193 -812
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1100 -2091
- package/dist/knob-embeddings.json +1 -1
- package/dist/registry/factory-signatures.json +1893 -2294
- package/package.json +2 -2
|
@@ -107,7 +107,7 @@ orbital CityBuilderBoardOrbital {
|
|
|
107
107
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
108
108
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
109
109
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Population", value: @entity.population, 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_hand", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-population", thumbnailUrl: "" } }, { label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { label: "Build", value: @entity.pendingBuildType } ] }, { type: stat-badge, label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { type: stat-badge, label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { type: control-grid, items: @config.buildTypes, action: SELECT_BUILD_TYPE, labelKey: "label", valueKey: "type", selected: @entity.pendingBuildType } ] }
|
|
110
|
-
children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
110
|
+
children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
111
111
|
{ 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) })) }
|
|
112
112
|
{ type: draw-sprite-layer, items: (array/map @entity.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite) })) }
|
|
113
113
|
{ 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)" })) }
|
|
@@ -124,7 +124,7 @@ orbital CityBuilderBoardOrbital {
|
|
|
124
124
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
125
125
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
126
126
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Population", value: @entity.population, 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_hand", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-population", thumbnailUrl: "" } }, { label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { label: "Build", value: @entity.pendingBuildType } ] }, { type: stat-badge, label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { type: stat-badge, label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { type: control-grid, items: @config.buildTypes, action: SELECT_BUILD_TYPE, labelKey: "label", valueKey: "type", selected: @entity.pendingBuildType } ] }
|
|
127
|
-
children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
127
|
+
children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
128
128
|
{ 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) })) }
|
|
129
129
|
{ type: draw-sprite-layer, items: (array/map @entity.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite) })) }
|
|
130
130
|
{ 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)" })) }
|
|
@@ -139,6 +139,7 @@ orbital CityBuilderBoardOrbital {
|
|
|
139
139
|
(set @entity.features (array/concat @entity.features [{ id: (str/concat "bld-" (array/len @entity.features)), x: ?x, y: ?y, type: @entity.pendingBuildType, sprite: (object/get @config.featureSprites @entity.pendingBuildType) }]))
|
|
140
140
|
(set @entity.population (+ @entity.population @config.populationPerBuilding))
|
|
141
141
|
(set @entity.result (if (>= @entity.population @config.targetPopulation) "won" @entity.result))
|
|
142
|
+
(if (!= @entity.result "none") (emit GAME_END { result: @entity.result }) null)
|
|
142
143
|
(set @entity.selectedUnitId "")
|
|
143
144
|
(set @entity.validMoves [])
|
|
144
145
|
(render-ui main {
|
|
@@ -146,7 +147,7 @@ orbital CityBuilderBoardOrbital {
|
|
|
146
147
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
147
148
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
148
149
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Population", value: @entity.population, 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_hand", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-population", thumbnailUrl: "" } }, { label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { label: "Build", value: @entity.pendingBuildType } ] }, { type: stat-badge, label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { type: stat-badge, label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { type: control-grid, items: @config.buildTypes, action: SELECT_BUILD_TYPE, labelKey: "label", valueKey: "type", selected: @entity.pendingBuildType } ] }
|
|
149
|
-
children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
150
|
+
children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
150
151
|
{ 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
152
|
{ type: draw-sprite-layer, items: (array/map @entity.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite) })) }
|
|
152
153
|
{ 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)" })) }
|
|
@@ -159,10 +160,11 @@ orbital CityBuilderBoardOrbital {
|
|
|
159
160
|
GAME_END -> gameover when (or (== @entity.result "won") (== @entity.result "lost"))
|
|
160
161
|
(render-ui main {
|
|
161
162
|
type: game-shell
|
|
163
|
+
overlay: { type: game-menu, title: (if (== @entity.result "won") "CITY COMPLETE!" "GAME OVER"), subtitle: (str/concat "Population: " @entity.population), options: [ { id: "again", label: "Play Again", event: "PLAY_AGAIN", variant: "primary" } ] }
|
|
162
164
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
163
165
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
164
166
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Population", value: @entity.population, 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_hand", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-population", thumbnailUrl: "" } }, { label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { label: "Build", value: @entity.pendingBuildType } ] }, { type: stat-badge, label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { type: stat-badge, label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { type: control-grid, items: @config.buildTypes, action: SELECT_BUILD_TYPE, labelKey: "label", valueKey: "type", selected: @entity.pendingBuildType } ] }
|
|
165
|
-
children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
167
|
+
children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
166
168
|
{ 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) })) }
|
|
167
169
|
{ type: draw-sprite-layer, items: (array/map @entity.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite) })) }
|
|
168
170
|
{ 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)" })) }
|
|
@@ -191,7 +193,7 @@ orbital CityBuilderBoardOrbital {
|
|
|
191
193
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
192
194
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
193
195
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Population", value: @entity.population, 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_hand", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-population", thumbnailUrl: "" } }, { label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { label: "Build", value: @entity.pendingBuildType } ] }, { type: stat-badge, label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { type: stat-badge, label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { type: control-grid, items: @config.buildTypes, action: SELECT_BUILD_TYPE, labelKey: "label", valueKey: "type", selected: @entity.pendingBuildType } ] }
|
|
194
|
-
children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
196
|
+
children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
195
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) })) }
|
|
196
198
|
{ type: draw-sprite-layer, items: (array/map @entity.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite) })) }
|
|
197
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)" })) }
|
|
@@ -211,7 +213,7 @@ orbital CityBuilderBoardOrbital {
|
|
|
211
213
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
212
214
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
213
215
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Population", value: @entity.population, 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_hand", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-population", thumbnailUrl: "" } }, { label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { label: "Build", value: @entity.pendingBuildType } ] }, { type: stat-badge, label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { type: stat-badge, label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { type: control-grid, items: @config.buildTypes, action: SELECT_BUILD_TYPE, labelKey: "label", valueKey: "type", selected: @entity.pendingBuildType } ] }
|
|
214
|
-
children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
216
|
+
children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
215
217
|
{ 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) })) }
|
|
216
218
|
{ type: draw-sprite-layer, items: (array/map @entity.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite) })) }
|
|
217
219
|
{ 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)" })) }
|
|
@@ -232,7 +234,7 @@ orbital CityBuilderBoardOrbital {
|
|
|
232
234
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
233
235
|
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: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
234
236
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Population", value: @entity.population, 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_hand", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-population", thumbnailUrl: "" } }, { label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { label: "Build", value: @entity.pendingBuildType } ] }, { type: stat-badge, label: "Gold", value: @entity.gold, 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_money", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-gold", thumbnailUrl: "" } }, { type: stat-badge, label: "Wood", value: @entity.wood, iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-city-builder-board/kenney-isometric-vector-buildings/features/spritesheet_wood.json", sprite: "wood046.png", role: "ui", category: "ui", animations: [], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-wood", thumbnailUrl: "" } }, { type: control-grid, items: @config.buildTypes, action: SELECT_BUILD_TYPE, labelKey: "label", valueKey: "type", selected: @entity.pendingBuildType } ] }
|
|
235
|
-
children: [ { type: canvas, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
237
|
+
children: [ { type: canvas, fit: true, camera: { zoom: @config.scale }, projection: "isometric", showMinimap: true, tileClickEvent: PLACE_BUILDING, children: [
|
|
236
238
|
{ 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) })) }
|
|
237
239
|
{ type: draw-sprite-layer, items: (array/map @entity.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite) })) }
|
|
238
240
|
{ 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)" })) }
|
|
@@ -53,7 +53,7 @@ orbital GridTacticsDemoOrbital {
|
|
|
53
53
|
type: game-shell
|
|
54
54
|
hud: { type: game-hud, stats: [ { label: "Result", value: @entity.result }, { label: "Phase", value: @entity.uiPhase }, { label: "Selected", value: @entity.selectedUnitId } ] }
|
|
55
55
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", variant: primary }, { type: button, action: CANCEL, label: "Cancel", variant: secondary } ] }
|
|
56
|
-
children: [ { type: canvas, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
|
|
56
|
+
children: [ { type: canvas, fit: true, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
|
|
57
57
|
{ type: draw-shape-layer, items: (array/map @entity.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: (if (== (object/get @t passable) true) "rgba(148,163,184,0.15)" "rgba(51,65,85,0.75)") })) }
|
|
58
58
|
{ 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 z) }, fill: "rgba(74,222,128,0.4)" })) }
|
|
59
59
|
{ type: draw-shape-layer, items: (array/map (array/filter @entity.units (fn u (== (object/get @u id) @entity.selectedUnitId))) (fn u { type: draw-shape, shape: "ellipse", position: (object/get @u position), radiusX: 0.5, radiusY: 0.2, stroke: "rgba(0,200,255,0.8)", strokeWidth: 3 })) }
|
|
@@ -101,7 +101,7 @@ orbital GridTacticsDemoOrbital {
|
|
|
101
101
|
type: game-shell
|
|
102
102
|
hud: { type: game-hud, stats: [ { label: "Result", value: @entity.result }, { label: "Phase", value: @entity.uiPhase }, { label: "Selected", value: @entity.selectedUnitId } ] }
|
|
103
103
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: END_TURN, label: "End Turn", variant: primary }, { type: button, action: CANCEL, label: "Cancel", variant: secondary } ] }
|
|
104
|
-
children: [ { type: canvas, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
|
|
104
|
+
children: [ { type: canvas, fit: true, projection: "flat", showMinimap: false, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, children: [
|
|
105
105
|
{ type: draw-shape-layer, items: (array/map @entity.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: (if (== (object/get @t passable) true) "rgba(148,163,184,0.15)" "rgba(51,65,85,0.75)") })) }
|
|
106
106
|
{ 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 z) }, fill: "rgba(74,222,128,0.4)" })) }
|
|
107
107
|
{ type: draw-shape-layer, items: (array/map (array/filter @entity.units (fn u (== (object/get @u id) @entity.selectedUnitId))) (fn u { type: draw-shape, shape: "ellipse", position: (object/get @u position), radiusX: 0.5, radiusY: 0.2, stroke: "rgba(0,200,255,0.8)", strokeWidth: 3 })) }
|
|
@@ -1,6 +1,148 @@
|
|
|
1
1
|
app ui-hex-strategy-board "1.0.0"
|
|
2
|
-
"Fantasy hex-tile grid-tactics combat board: thin organism composing the std-tactics-board-2d frame with fantasy unit/terrain assets supplied via config."
|
|
2
|
+
"Fantasy hex-tile grid-tactics combat board: thin organism composing the std-tactics-board-2d frame with fantasy unit/terrain assets supplied via config. Hand-authored hex svg theme supplied via config."
|
|
3
3
|
;; @capabilities "hex-tile grid-tactics combat, fantasy unit movement, terrain-based strategy, turn-based battles"
|
|
4
|
+
|
|
5
|
+
;; ============================================================================
|
|
6
|
+
;; PERSONA + USER STORIES
|
|
7
|
+
;;
|
|
8
|
+
;; Read these before changing anything here, and walk them end to end after.
|
|
9
|
+
;; One persona: the PLAYER, commanding a three-unit warband on a 6x6 hex-tile
|
|
10
|
+
;; field ringed by an impassable stone wall, against two enemies holding the
|
|
11
|
+
;; north. Status re-verified 2026-07-30 by a scripted full playthrough
|
|
12
|
+
;; (38/38 checks) driving the real game on the runtime-verify catalog through
|
|
13
|
+
;; window.__orbitalVerification — events in, canvas drawables + HUD DOM + bus
|
|
14
|
+
;; event log out — plus 11/11 play_transition guard probes. The svg assets
|
|
15
|
+
;; are not on the CDN yet this wave (404 → fallback squares on canvas, by
|
|
16
|
+
;; design); every drawable descriptor was asserted to point at the right
|
|
17
|
+
;; /shared/ui-hex-strategy-board/svg/hex/ URL.
|
|
18
|
+
;;
|
|
19
|
+
;; THE GENRE (what a hex-tactics player expects): a small warband on a tight
|
|
20
|
+
;; hex field where terrain frames every decision. Positioning is the game —
|
|
21
|
+
;; the stone ring funnels movement through the open inner cells, the crystal
|
|
22
|
+
;; resource and the outpost tower mark the landmarks you fight around, and
|
|
23
|
+
;; every End Turn hands the field to the enemy, which closes in and punishes
|
|
24
|
+
;; exposed units. Kills are the economy: each one scores 10. You win by
|
|
25
|
+
;; wiping the enemy; you lose by being wiped. A round looks like: select a
|
|
26
|
+
;; unit -> green reach cells (range 2) -> move -> the unit STAYS selected and
|
|
27
|
+
;; auto-arms (red cells = enemies in reach) -> strike for 3 -> the unit is
|
|
28
|
+
;; SPENT (dims, cannot act again this turn) -> activate the next unit ->
|
|
29
|
+
;; End Turn -> every living enemy strikes an adjacent player for 1 or steps
|
|
30
|
+
;; 1 cell toward the nearest player -> repeat. Each unit may move ONCE and
|
|
31
|
+
;; attack ONCE per turn (movedIds/actedIds track the activation; End Turn
|
|
32
|
+
;; resets both).
|
|
33
|
+
;; ============================================================================
|
|
34
|
+
;;
|
|
35
|
+
;; PLAYER — "I command my warband and wipe the enemy before they wipe me."
|
|
36
|
+
;;
|
|
37
|
+
;; 1. I open the board and see the whole field framed on screen — a hex
|
|
38
|
+
;; tile under every cell, the stone wall ringing the field, my warband
|
|
39
|
+
;; in the south, the enemy in the north, and the HUD showing
|
|
40
|
+
;; Result/Phase/Turn/Score.
|
|
41
|
+
;; WORKS. Boot paints 36 hex-cell descriptors (stone ring impassable,
|
|
42
|
+
;; grass/dirt/sand inner), 5 units (3v2), resource + outpost features
|
|
43
|
+
;; (ground-anchored 1x1), minimap on; HUD reads
|
|
44
|
+
;; "none / observation / 0 / 0".
|
|
45
|
+
;; 2. Every unit on the board is a readable character sprite with a name
|
|
46
|
+
;; label and a health bar I can read at a glance — and each unit TYPE
|
|
47
|
+
;; looks distinct (guardian / archer / worker).
|
|
48
|
+
;; WORKS. Each unit paints its svg idle frame (4-frame breathing,
|
|
49
|
+
;; cycled by the AnimClock tick — all 5 verified cycling idle-N)
|
|
50
|
+
;; anchored "ground", with the black backing + green health fraction
|
|
51
|
+
;; above (all full at boot) and the name label (5 labels). The three
|
|
52
|
+
;; types are distinct shape/color silhouettes (guardian red squircle /
|
|
53
|
+
;; archer orange square / worker purple rhombus — ranger was renamed
|
|
54
|
+
;; to archer this wave because the generator's name-hash gave ranger
|
|
55
|
+
;; guardian's exact silhouette).
|
|
56
|
+
;; 3. I click one of MY units and the cells it can reach light up.
|
|
57
|
+
;; WORKS. Clicking u1 sets phase "selection" and lights exactly 7
|
|
58
|
+
;; green cells — the range-2 manhattan diamond (13) minus self, two
|
|
59
|
+
;; enemies, one friendly unit, and two stone-wall cells. Clicking an
|
|
60
|
+
;; out-of-reach enemy keeps the selection (guard denies, phase stays
|
|
61
|
+
;; "selection"). Dead units are not selectable (health > 0 guard);
|
|
62
|
+
;; SPENT units (in actedIds) are not selectable either; a unit that
|
|
63
|
+
;; already MOVED this turn still selects but lights zero green cells.
|
|
64
|
+
;; 4. I click a lit cell and the unit moves there — and stays selected,
|
|
65
|
+
;; auto-armed, so I can strike immediately.
|
|
66
|
+
;; WORKS. u1 walked (3,2)->(4,2): the walk animation plays, the
|
|
67
|
+
;; authority re-validates bounds/passable/occupied and writes the
|
|
68
|
+
;; position, and the unit lands in phase "action" with the enemy now
|
|
69
|
+
;; in reach lit red. The move is SPENT: a second TILE_CLICK is denied
|
|
70
|
+
;; outright (unit held its cell), and re-selecting lights zero green
|
|
71
|
+
;; cells — one move per turn (movedIds guard).
|
|
72
|
+
;; 5. Adjacent enemies I can strike light up red — right after my move,
|
|
73
|
+
;; or when I click my selected unit again.
|
|
74
|
+
;; WORKS. Post-move auto-arm computes red cells from the NEW position
|
|
75
|
+
;; (verified: phase "action" + 1 red target after stepping adjacent);
|
|
76
|
+
;; the manual re-click arm (phase "action") works from a fresh
|
|
77
|
+
;; selection. Living enemies at manhattan distance <= attackRange
|
|
78
|
+
;; (config, default 1) light red.
|
|
79
|
+
;; 6. I click a red-lit enemy — or any enemy in reach, even without arming
|
|
80
|
+
;; first — and it takes a hit; my unit is then spent for the turn.
|
|
81
|
+
;; WORKS. The attack arm fires whenever a living selected unit has a
|
|
82
|
+
;; living enemy in reach, regardless of phase — verified by direct
|
|
83
|
+
;; enemy click: e1's health bar 1.00 -> 0.63 of max (3 of 8). The
|
|
84
|
+
;; attacker plays its attack frame, the target plays its hit frame, a
|
|
85
|
+
;; "-3" damage number + hit-star fx sprite spawn at the target (BURST,
|
|
86
|
+
;; ttl 3 decayed by FxDecay), and the attacker joins actedIds: it dims
|
|
87
|
+
;; to 45% opacity and cannot be selected or attack again until End
|
|
88
|
+
;; Turn (re-click verified a no-op).
|
|
89
|
+
;; 7. I change my mind mid-selection and back out cleanly.
|
|
90
|
+
;; WORKS. CANCEL clears selection, highlights, and phase — verified
|
|
91
|
+
;; green cells 7 -> 0 and phase back to "observation".
|
|
92
|
+
;; 8. I end my turn and the enemy takes theirs — they close in and fight
|
|
93
|
+
;; back, and my warband is fresh again.
|
|
94
|
+
;; WORKS. END_TURN bumps Turn, clears selection + both activation
|
|
95
|
+
;; lists (movedIds/actedIds), and emits AI_TURN; the authority strikes
|
|
96
|
+
;; every player adjacent to a living enemy for 1 and steps each
|
|
97
|
+
;; unengaged enemy 1 cell toward the nearest living player. Verified:
|
|
98
|
+
;; turn 0 -> 1, player hp dropped 10,8,12 -> 9,7,12 the first turn,
|
|
99
|
+
;; and a spent unit is selectable again after End Turn.
|
|
100
|
+
;; LIMITATION (inherited from the frame): enemies POP to their new
|
|
101
|
+
;; cell — the single walk-anim slot is player-facing; per-enemy MOVE
|
|
102
|
+
;; fan-out is atom surgery, deferred upstream.
|
|
103
|
+
;; 9. When I kill an enemy I am rewarded — score ticks up and the corpse
|
|
104
|
+
;; stays on the field.
|
|
105
|
+
;; WORKS x2. Each kill: Score +10 (ScoreKeeper on UNITS_CHANGED —
|
|
106
|
+
;; verified 10 then 20), the corpse renders its death frame, and the
|
|
107
|
+
;; cell becomes walkable again — corpses never block movement or green
|
|
108
|
+
;; highlights (authority and highlight filters agree on health > 0).
|
|
109
|
+
;; 10. When the last enemy falls, I win and the game tells me — then the
|
|
110
|
+
;; board freezes.
|
|
111
|
+
;; WORKS. Result flips to "victory" (RoundLogic on UNITS_CHANGED),
|
|
112
|
+
;; GAME_END fires, and the board is FROZEN: every UNIT_CLICK /
|
|
113
|
+
;; TILE_CLICK arm is guarded on result == "none", so post-game clicks
|
|
114
|
+
;; select nothing and move nothing (verified by probe). Reload to
|
|
115
|
+
;; play again — an in-game rematch button does not exist yet.
|
|
116
|
+
;;
|
|
117
|
+
;; MULTIPLAYER NOTE: GameState is [runtime, shared], so every connected
|
|
118
|
+
;; client watches the same battle on the same frame; intents serialize
|
|
119
|
+
;; through the server authority. There is no per-seat turn ownership yet —
|
|
120
|
+
;; any client can drive any player unit.
|
|
121
|
+
;;
|
|
122
|
+
;; ASSET INVENTORY (hand-authored svg, almadar-kflow-assets.web.app
|
|
123
|
+
;; /shared/ui-hex-strategy-board/svg/hex/, generated by tools/asset-workflow
|
|
124
|
+
;; svg-generator from the sibling .md descriptions)
|
|
125
|
+
;;
|
|
126
|
+
;; Terrain terrain/{grass,dirt,sand,stone}.svg — full-cell pointy-top hex
|
|
127
|
+
;; tiles (outer hex + inner facets) drawn at width/height 1;
|
|
128
|
+
;; stone is the impassable border ring.
|
|
129
|
+
;; Units units/{guardian,archer,worker}.svg + animation frames
|
|
130
|
+
;; .{idle-0..3, walk-0..1, attack-0, hit-0, death-0}.svg; the
|
|
131
|
+
;; frame swaps url-rewrites name.svg -> name.<anim>-<i>.svg and a
|
|
132
|
+
;; hidden warm-up layer preloads every frame so swaps never pop.
|
|
133
|
+
;; party: u1 Miner worker 10hp (3,2)
|
|
134
|
+
;; u2 Thornbow archer 8hp (2,3)
|
|
135
|
+
;; u3 Ironwall guardian 12hp (2,4)
|
|
136
|
+
;; enemy: e1 Foe archer 8hp (4,1)
|
|
137
|
+
;; e2 Foe guardian 10hp (3,1)
|
|
138
|
+
;; Features features/resource.svg at (1,1) (crystal cluster),
|
|
139
|
+
;; features/outpost.svg at (1,3) (tower) — drawn from
|
|
140
|
+
;; config.features anchored "ground" at 1x1 so they sit ON their
|
|
141
|
+
;; cell.
|
|
142
|
+
;; Effects effects/hit.svg (BURST "hit" fx).
|
|
143
|
+
;; UI chrome ui/panel-frame.svg = game-shell background + HUD panel.
|
|
144
|
+
;; ============================================================================
|
|
145
|
+
|
|
4
146
|
orbital HexStrategyBoardOrbital {
|
|
5
147
|
uses Frame from "std/behaviors/std-tactics-board-2d"
|
|
6
148
|
uses Score from "std/behaviors/std-score"
|
|
@@ -69,13 +211,15 @@ orbital HexStrategyBoardOrbital {
|
|
|
69
211
|
|
|
70
212
|
entity GameState [runtime, shared] {
|
|
71
213
|
id : string!
|
|
72
|
-
units : [Unit] = [ { id: "u1", position: { x: 3, y: 2 }, x: 3, y: 2, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "worker", name: "Miner", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/
|
|
214
|
+
units : [Unit] = [ { id: "u1", position: { x: 3, y: 2 }, x: 3, y: 2, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "worker", name: "Miner", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/worker.svg", role: "npc", category: "worker", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "worker", thumbnailUrl: "" } }, { id: "u2", position: { x: 2, y: 3 }, x: 2, y: 3, z: 0, team: "player", health: 8, maxHealth: 8, unitType: "archer", name: "Thornbow", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/archer.svg", role: "npc", category: "archer", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "archer", thumbnailUrl: "" } }, { id: "u3", position: { x: 2, y: 4 }, x: 2, y: 4, z: 0, team: "player", health: 12, maxHealth: 12, unitType: "guardian", name: "Ironwall", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/guardian.svg", role: "npc", category: "guardian", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "guardian", thumbnailUrl: "" } }, { id: "e1", position: { x: 4, y: 1 }, x: 4, y: 1, z: 0, team: "enemy", health: 8, maxHealth: 8, unitType: "archer", name: "Foe", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/archer.svg", role: "npc", category: "archer", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "archer", thumbnailUrl: "" } }, { id: "e2", position: { x: 3, y: 1 }, x: 3, y: 1, z: 0, team: "enemy", health: 10, maxHealth: 10, unitType: "guardian", name: "Foe", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/guardian.svg", role: "npc", category: "guardian", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "guardian", thumbnailUrl: "" } } ]
|
|
73
215
|
fx : [Fx] = []
|
|
74
|
-
tiles : [Tile] = [ { id: "t-0-0", x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-0", x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-2-0", x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-3-0", x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-4-0", x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-5-0", x: 5, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-1", x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-1", x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-2-1", x: 2, y: 1, terrain: "dirt", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "dirt_01.png", role: "tile", category: "dirt", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "dirt", thumbnailUrl: "" } }, { id: "t-3-1", x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-4-1", x: 4, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-5-1", x: 5, y: 1, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-2", x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-2", x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-2-2", x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-3-2", x: 3, y: 2, terrain: "dirt", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "dirt_01.png", role: "tile", category: "dirt", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "dirt", thumbnailUrl: "" } }, { id: "t-4-2", x: 4, y: 2, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-5-2", x: 5, y: 2, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-3", x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-3", x: 1, y: 3, terrain: "dirt", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "dirt_01.png", role: "tile", category: "dirt", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "dirt", thumbnailUrl: "" } }, { id: "t-2-3", x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-3-3", x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-4-3", x: 4, y: 3, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-5-3", x: 5, y: 3, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-4", x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-4", x: 1, y: 4, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-2-4", x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-3-4", x: 3, y: 4, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-4-4", x: 4, y: 4, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-5-4", x: 5, y: 4, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-5", x: 0, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-5", x: 1, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-2-5", x: 2, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-3-5", x: 3, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-4-5", x: 4, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-5-5", x: 5, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } } ]
|
|
216
|
+
tiles : [Tile] = [ { id: "t-0-0", x: 0, y: 0, terrain: "stone", passable: false }, { id: "t-1-0", x: 1, y: 0, terrain: "stone", passable: false }, { id: "t-2-0", x: 2, y: 0, terrain: "stone", passable: false }, { id: "t-3-0", x: 3, y: 0, terrain: "stone", passable: false }, { id: "t-4-0", x: 4, y: 0, terrain: "stone", passable: false }, { id: "t-5-0", x: 5, y: 0, terrain: "stone", passable: false }, { id: "t-0-1", x: 0, y: 1, terrain: "stone", passable: false }, { id: "t-1-1", x: 1, y: 1, terrain: "grass", passable: true }, { id: "t-2-1", x: 2, y: 1, terrain: "dirt", passable: true }, { id: "t-3-1", x: 3, y: 1, terrain: "grass", passable: true }, { id: "t-4-1", x: 4, y: 1, terrain: "grass", passable: true }, { id: "t-5-1", x: 5, y: 1, terrain: "stone", passable: false }, { id: "t-0-2", x: 0, y: 2, terrain: "stone", passable: false }, { id: "t-1-2", x: 1, y: 2, terrain: "grass", passable: true }, { id: "t-2-2", x: 2, y: 2, terrain: "grass", passable: true }, { id: "t-3-2", x: 3, y: 2, terrain: "dirt", passable: true }, { id: "t-4-2", x: 4, y: 2, terrain: "sand", passable: true }, { id: "t-5-2", x: 5, y: 2, terrain: "stone", passable: false }, { id: "t-0-3", x: 0, y: 3, terrain: "stone", passable: false }, { id: "t-1-3", x: 1, y: 3, terrain: "dirt", passable: true }, { id: "t-2-3", x: 2, y: 3, terrain: "grass", passable: true }, { id: "t-3-3", x: 3, y: 3, terrain: "grass", passable: true }, { id: "t-4-3", x: 4, y: 3, terrain: "sand", passable: true }, { id: "t-5-3", x: 5, y: 3, terrain: "stone", passable: false }, { id: "t-0-4", x: 0, y: 4, terrain: "stone", passable: false }, { id: "t-1-4", x: 1, y: 4, terrain: "grass", passable: true }, { id: "t-2-4", x: 2, y: 4, terrain: "grass", passable: true }, { id: "t-3-4", x: 3, y: 4, terrain: "sand", passable: true }, { id: "t-4-4", x: 4, y: 4, terrain: "sand", passable: true }, { id: "t-5-4", x: 5, y: 4, terrain: "stone", passable: false }, { id: "t-0-5", x: 0, y: 5, terrain: "stone", passable: false }, { id: "t-1-5", x: 1, y: 5, terrain: "stone", passable: false }, { id: "t-2-5", x: 2, y: 5, terrain: "stone", passable: false }, { id: "t-3-5", x: 3, y: 5, terrain: "stone", passable: false }, { id: "t-4-5", x: 4, y: 5, terrain: "stone", passable: false }, { id: "t-5-5", x: 5, y: 5, terrain: "stone", passable: false } ]
|
|
75
217
|
result : string = "none"
|
|
76
218
|
selectedUnitId : string = ""
|
|
77
219
|
validMoves : [ValidMove] = []
|
|
78
220
|
attackTargets : [ValidMove] = []
|
|
221
|
+
movedIds : [string] = []
|
|
222
|
+
actedIds : [string] = []
|
|
79
223
|
uiPhase : string = "observation"
|
|
80
224
|
turn : number = 0
|
|
81
225
|
score : number = 0
|
|
@@ -88,8 +232,8 @@ orbital HexStrategyBoardOrbital {
|
|
|
88
232
|
gridWidth: 6
|
|
89
233
|
gridHeight: 6
|
|
90
234
|
attackDamage: 3
|
|
91
|
-
units: [ { id: "u1", position: { x: 3, y: 2 }, x: 3, y: 2, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "worker", name: "Miner", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/
|
|
92
|
-
tiles: [ { id: "t-0-0", x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-0", x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-2-0", x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-3-0", x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-4-0", x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-5-0", x: 5, y: 0, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-1", x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-1", x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-2-1", x: 2, y: 1, terrain: "dirt", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "dirt_01.png", role: "tile", category: "dirt", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "dirt", thumbnailUrl: "" } }, { id: "t-3-1", x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-4-1", x: 4, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-5-1", x: 5, y: 1, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-2", x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-2", x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-2-2", x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-3-2", x: 3, y: 2, terrain: "dirt", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "dirt_01.png", role: "tile", category: "dirt", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "dirt", thumbnailUrl: "" } }, { id: "t-4-2", x: 4, y: 2, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-5-2", x: 5, y: 2, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-3", x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-3", x: 1, y: 3, terrain: "dirt", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "dirt_01.png", role: "tile", category: "dirt", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "dirt", thumbnailUrl: "" } }, { id: "t-2-3", x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-3-3", x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-4-3", x: 4, y: 3, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-5-3", x: 5, y: 3, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-4", x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-4", x: 1, y: 4, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-2-4", x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "grass_01.png", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }, { id: "t-3-4", x: 3, y: 4, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-4-4", x: 4, y: 4, terrain: "sand", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "sand_01.png", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, { id: "t-5-4", x: 5, y: 4, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-0-5", x: 0, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-1-5", x: 1, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-2-5", x: 2, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-3-5", x: 3, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-4-5", x: 4, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } }, { id: "t-5-5", x: 5, y: 5, terrain: "stone", passable: false, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/kenney-hexagon-pack/terrain/hexagonTerrain_sheet.json", sprite: "stone_01.png", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" } } ]
|
|
235
|
+
units: [ { id: "u1", position: { x: 3, y: 2 }, x: 3, y: 2, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "worker", name: "Miner", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/worker.svg", role: "npc", category: "worker", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "worker", thumbnailUrl: "" } }, { id: "u2", position: { x: 2, y: 3 }, x: 2, y: 3, z: 0, team: "player", health: 8, maxHealth: 8, unitType: "archer", name: "Thornbow", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/archer.svg", role: "npc", category: "archer", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "archer", thumbnailUrl: "" } }, { id: "u3", position: { x: 2, y: 4 }, x: 2, y: 4, z: 0, team: "player", health: 12, maxHealth: 12, unitType: "guardian", name: "Ironwall", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/guardian.svg", role: "npc", category: "guardian", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "guardian", thumbnailUrl: "" } }, { id: "e1", position: { x: 4, y: 1 }, x: 4, y: 1, z: 0, team: "enemy", health: 8, maxHealth: 8, unitType: "archer", name: "Foe", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/archer.svg", role: "npc", category: "archer", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "archer", thumbnailUrl: "" } }, { id: "e2", position: { x: 3, y: 1 }, x: 3, y: 1, z: 0, team: "enemy", health: 10, maxHealth: 10, unitType: "guardian", name: "Foe", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/guardian.svg", role: "npc", category: "guardian", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "guardian", thumbnailUrl: "" } } ]
|
|
236
|
+
tiles: [ { id: "t-0-0", x: 0, y: 0, terrain: "stone", passable: false }, { id: "t-1-0", x: 1, y: 0, terrain: "stone", passable: false }, { id: "t-2-0", x: 2, y: 0, terrain: "stone", passable: false }, { id: "t-3-0", x: 3, y: 0, terrain: "stone", passable: false }, { id: "t-4-0", x: 4, y: 0, terrain: "stone", passable: false }, { id: "t-5-0", x: 5, y: 0, terrain: "stone", passable: false }, { id: "t-0-1", x: 0, y: 1, terrain: "stone", passable: false }, { id: "t-1-1", x: 1, y: 1, terrain: "grass", passable: true }, { id: "t-2-1", x: 2, y: 1, terrain: "dirt", passable: true }, { id: "t-3-1", x: 3, y: 1, terrain: "grass", passable: true }, { id: "t-4-1", x: 4, y: 1, terrain: "grass", passable: true }, { id: "t-5-1", x: 5, y: 1, terrain: "stone", passable: false }, { id: "t-0-2", x: 0, y: 2, terrain: "stone", passable: false }, { id: "t-1-2", x: 1, y: 2, terrain: "grass", passable: true }, { id: "t-2-2", x: 2, y: 2, terrain: "grass", passable: true }, { id: "t-3-2", x: 3, y: 2, terrain: "dirt", passable: true }, { id: "t-4-2", x: 4, y: 2, terrain: "sand", passable: true }, { id: "t-5-2", x: 5, y: 2, terrain: "stone", passable: false }, { id: "t-0-3", x: 0, y: 3, terrain: "stone", passable: false }, { id: "t-1-3", x: 1, y: 3, terrain: "dirt", passable: true }, { id: "t-2-3", x: 2, y: 3, terrain: "grass", passable: true }, { id: "t-3-3", x: 3, y: 3, terrain: "grass", passable: true }, { id: "t-4-3", x: 4, y: 3, terrain: "sand", passable: true }, { id: "t-5-3", x: 5, y: 3, terrain: "stone", passable: false }, { id: "t-0-4", x: 0, y: 4, terrain: "stone", passable: false }, { id: "t-1-4", x: 1, y: 4, terrain: "grass", passable: true }, { id: "t-2-4", x: 2, y: 4, terrain: "grass", passable: true }, { id: "t-3-4", x: 3, y: 4, terrain: "sand", passable: true }, { id: "t-4-4", x: 4, y: 4, terrain: "sand", passable: true }, { id: "t-5-4", x: 5, y: 4, terrain: "stone", passable: false }, { id: "t-0-5", x: 0, y: 5, terrain: "stone", passable: false }, { id: "t-1-5", x: 1, y: 5, terrain: "stone", passable: false }, { id: "t-2-5", x: 2, y: 5, terrain: "stone", passable: false }, { id: "t-3-5", x: 3, y: 5, terrain: "stone", passable: false }, { id: "t-4-5", x: 4, y: 5, terrain: "stone", passable: false }, { id: "t-5-5", x: 5, y: 5, terrain: "stone", passable: false } ]
|
|
93
237
|
}
|
|
94
238
|
}
|
|
95
239
|
|
|
@@ -105,6 +249,10 @@ orbital HexStrategyBoardOrbital {
|
|
|
105
249
|
config { running: true, pointsPerKill: 10, startScore: 0, initialEnemies: 2 }
|
|
106
250
|
}
|
|
107
251
|
|
|
252
|
+
trait AnimClock = Frame.traits.AnimClock -> GameState {
|
|
253
|
+
config { frames: [] }
|
|
254
|
+
}
|
|
255
|
+
|
|
108
256
|
trait Player = Frame.traits.PlayerIntent -> GameState {
|
|
109
257
|
config {
|
|
110
258
|
gridWidth: 6
|
|
@@ -113,12 +261,12 @@ orbital HexStrategyBoardOrbital {
|
|
|
113
261
|
projection: "hex"
|
|
114
262
|
showMinimap: true
|
|
115
263
|
scale: 0.45
|
|
116
|
-
backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/
|
|
117
|
-
hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/
|
|
118
|
-
features: [ { id: "f1", x:
|
|
119
|
-
assetManifest: { terrains: { grass: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/
|
|
264
|
+
backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/ui/panel-frame.svg", role: "ui", category: "ui", animations: [], style: "fantasy-border", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
265
|
+
hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/ui/panel-frame.svg", role: "ui", category: "ui", animations: [], style: "fantasy-border", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
266
|
+
features: [ { id: "f1", x: 1, y: 1, z: 0, type: "resource", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/features/resource.svg", role: "decoration", category: "resource", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "resource", thumbnailUrl: "" } }, { id: "f2", x: 1, y: 3, z: 0, type: "outpost", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/features/outpost.svg", role: "decoration", category: "outpost", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "outpost", thumbnailUrl: "" } } ]
|
|
267
|
+
assetManifest: { terrains: { grass: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/terrain/grass.svg", role: "tile", category: "grass", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" }, stone: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/terrain/stone.svg", role: "tile", category: "stone", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "stone", thumbnailUrl: "" }, dirt: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/terrain/dirt.svg", role: "tile", category: "dirt", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "dirt", thumbnailUrl: "" }, sand: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/terrain/sand.svg", role: "tile", category: "sand", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, units: { worker: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/worker.svg", role: "npc", category: "worker", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "worker", thumbnailUrl: "" }, archer: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/archer.svg", role: "npc", category: "archer", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "archer", thumbnailUrl: "" }, guardian: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/units/guardian.svg", role: "npc", category: "guardian", animations: ["idle","walk","attack","hit","death"], style: "", dimension: "2d", aspect: "1:1", name: "guardian", thumbnailUrl: "" } }, features: { resource: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/features/resource.svg", role: "decoration", category: "resource", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "resource", thumbnailUrl: "" }, outpost: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/features/outpost.svg", role: "decoration", category: "outpost", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "outpost", thumbnailUrl: "" } }, effects: { hit: { url: "https://almadar-kflow-assets.web.app/shared/ui-hex-strategy-board/svg/hex/effects/hit.svg", role: "effect", category: "hit", animations: ["static"], style: "", dimension: "2d", aspect: "1:1", name: "hit", thumbnailUrl: "" } } }
|
|
120
268
|
}
|
|
121
269
|
}
|
|
122
270
|
|
|
123
|
-
page "/hex-strategy-board" as HexStrategyBoardPage -> Authority, FxDecay, RoundLogic, ScoreKeeper, Player
|
|
271
|
+
page "/hex-strategy-board" as HexStrategyBoardPage -> Authority, FxDecay, RoundLogic, ScoreKeeper, Player, AnimClock
|
|
124
272
|
}
|
|
@@ -94,7 +94,7 @@ orbital HolidayRunnerBoardOrbital {
|
|
|
94
94
|
(set @entity.units @config.units)
|
|
95
95
|
(set @entity.distance 0)
|
|
96
96
|
(set @entity.score 0)
|
|
97
|
-
(set @entity.result "")
|
|
97
|
+
(set @entity.result "none")
|
|
98
98
|
(set @entity.effects [])
|
|
99
99
|
(set @entity.selectedUnitId "")
|
|
100
100
|
(set @entity.validMoves [])
|