@almadar/std 16.154.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-tactics-board-2d.lolo +35 -21
- package/behaviors/lolo/ui/game/molecules/ui-canvas.lolo +5 -0
- package/behaviors/lolo/ui/game/organisms/ui-battle-board.lolo +122 -74
- package/behaviors/lolo/ui/game/organisms/ui-hex-strategy-board.lolo +153 -9
- package/behaviors/lolo/ui/game/organisms/ui-tactics-demo-2d.lolo +130 -8
- package/behaviors/lolo/ui/game/organisms/ui-tanks-board.lolo +147 -7
- package/behaviors/lolo/ui/game/organisms/ui-topdown-rts-board.lolo +291 -19
- package/behaviors/registry/factory-signatures.json +1893 -2294
- package/behaviors/registry/ui/game/molecules/std-tactics-board-2d.orb +798 -189
- package/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
- package/behaviors/registry/ui/game/organisms/ui-battle-board.orb +17 -1
- package/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +68 -1180
- package/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +192 -322
- package/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +97 -85
- package/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1477 -259
- package/dist/behaviors/behaviors-embeddings.json +244 -236
- package/dist/behaviors/behaviors-registry.json +143 -772
- 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-tactics-board-2d.orb +798 -189
- package/dist/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-battle-board.orb +17 -1
- package/dist/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +68 -1180
- package/dist/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +192 -322
- package/dist/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +97 -85
- package/dist/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1477 -259
- package/dist/behaviors-embeddings.json +244 -236
- package/dist/behaviors-registry.json +143 -772
- 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
|
@@ -1,6 +1,143 @@
|
|
|
1
1
|
app ui-tanks-board "1.0.0"
|
|
2
|
-
"Sci-fi tank grid-tactics
|
|
2
|
+
"Sci-fi tank grid-tactics skirmish: thin organism composing the std-tactics-board-2d frame + std-score. Flat-projection hand-authored svg theme (desert ground, sand strip, sandbag cover, tank sprites) supplied entirely via config."
|
|
3
3
|
;; @capabilities "tank grid-tactics combat, top-down tank movement, sci-fi themed battle, turn-based tank strategy"
|
|
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 the lone tank Alpha on an 8x6 flat
|
|
10
|
+
;; desert grid against two enemy tanks (Bravo, Charlie). Status re-verified
|
|
11
|
+
;; 2026-07-30 by scripted playthroughs driving the real game on the
|
|
12
|
+
;; runtime-verify catalog through window.__orbitalVerification — events in,
|
|
13
|
+
;; canvas drawables + HUD DOM + bus event log out: victory run 33/35 (the 2
|
|
14
|
+
;; anim-frame misses were 400ms-sampling artifacts, both proven by the
|
|
15
|
+
;; focused probe), focused probe 7/7, defeat run 4/4.
|
|
16
|
+
;;
|
|
17
|
+
;; THE GENRE (what a tank-tactics player expects): armored warfare in
|
|
18
|
+
;; miniature — one precious hull, not a swarm. You maneuver for firing
|
|
19
|
+
;; position: your cannon reaches TWO cells (attackRange 2), so you can shell
|
|
20
|
+
;; an enemy before it can answer, because the enemy AI only fires at
|
|
21
|
+
;; point-blank (1 cell) and otherwise rolls 1 cell toward you each turn.
|
|
22
|
+
;; Every shot and every move is a commitment: each tank moves ONCE and fires
|
|
23
|
+
;; ONCE per turn (movedIds/actedIds), then sits spent until End Turn.
|
|
24
|
+
;; Kills are the economy: each enemy destroyed scores 10. You win by
|
|
25
|
+
;; destroying both enemy tanks; you lose the moment Alpha is destroyed.
|
|
26
|
+
;; A round looks like: select Alpha -> green reach cells -> move -> Alpha
|
|
27
|
+
;; STAYS selected and auto-arms (red cells = enemies in cannon reach) ->
|
|
28
|
+
;; fire for 3 -> Alpha is SPENT (dims, cannot act again this turn) ->
|
|
29
|
+
;; End Turn -> each living enemy strikes Alpha for 1 if adjacent, else
|
|
30
|
+
;; steps 1 cell toward Alpha -> repeat.
|
|
31
|
+
;; ============================================================================
|
|
32
|
+
;;
|
|
33
|
+
;; PLAYER — "I outmaneuver the enemy armor and destroy it before it closes
|
|
34
|
+
;; to point-blank."
|
|
35
|
+
;;
|
|
36
|
+
;; 1. I open the board and see the whole battlefield framed on screen —
|
|
37
|
+
;; terrain under every cell (desert ground with a sand strip), my tank
|
|
38
|
+
;; at the west, the enemy tanks at the east, sandbag cover in the
|
|
39
|
+
;; middle, and the HUD showing Result/Phase/Turn/Score.
|
|
40
|
+
;; WORKS. Boot paints 48 full-cell flat terrain sprites (ground with
|
|
41
|
+
;; a sand strip), 3 tanks (Alpha (1,1) west; Bravo (6,0), Charlie
|
|
42
|
+
;; (6,4) east), 6 sandbag features ground-anchored 1x1 at
|
|
43
|
+
;; (2,1)(3,2)(4,3)(5,3)(5,4)(2,4); HUD reads
|
|
44
|
+
;; "none / observation / 0 / 0". Drawable descriptors point at the
|
|
45
|
+
;; svg/flat CDN URLs (browser 404s expected this wave — the CDN push
|
|
46
|
+
;; is coordinator-handled; verified at descriptor level).
|
|
47
|
+
;; 2. Every tank on the board is a visible sprite with a name label and a
|
|
48
|
+
;; health bar I can read at a glance.
|
|
49
|
+
;; WORKS. Each tank paints its svg idle frame (4-frame breathing
|
|
50
|
+
;; squash/stretch anchored at the feet, cycled by the AnimClock) with
|
|
51
|
+
;; the black backing + green health fraction above and the name
|
|
52
|
+
;; label. All 3 bars read 1.00 at boot, all 3 labels paint. Dead
|
|
53
|
+
;; tanks drop the bar and label and switch to the death frame
|
|
54
|
+
;; (verified on both kills and on Alpha's own defeat).
|
|
55
|
+
;; 3. I click Alpha and the cells it can reach light up green.
|
|
56
|
+
;; WORKS. Clicking t1 sets phase "selection" and lights exactly 10
|
|
57
|
+
;; green cells — the range-2 manhattan diamond from (1,1) minus
|
|
58
|
+
;; out-of-bounds cells (none occupied at boot).
|
|
59
|
+
;; 4. I click a lit cell and Alpha moves there — and stays selected,
|
|
60
|
+
;; auto-armed, so I can fire immediately; it cannot move again this
|
|
61
|
+
;; turn.
|
|
62
|
+
;; WORKS. t1 walked (1,1)->(3,1): the walk animation plays (2-frame
|
|
63
|
+
;; cycle), the authority writes the position, phase lands on
|
|
64
|
+
;; "action", and the move is SPENT — a second TILE_CLICK is ignored
|
|
65
|
+
;; (tank stays at (3,1)) and a re-select lights zero green cells
|
|
66
|
+
;; (movedIds guard). One move per turn, no chaining.
|
|
67
|
+
;; 5. Enemies inside my cannon reach (2 cells) light up red — right after
|
|
68
|
+
;; my move, or when I click Alpha again.
|
|
69
|
+
;; WORKS. With Alpha at (2,2) and Charlie at (4,2), the post-move
|
|
70
|
+
;; auto-arm lit exactly {(4,2)} red — every living enemy within
|
|
71
|
+
;; attackRange 2 of the NEW cell — and the manual re-click arm
|
|
72
|
+
;; recomputed the same red set (phase "action").
|
|
73
|
+
;; 6. I click a red-lit enemy — or any enemy in reach, even without arming
|
|
74
|
+
;; first — and it takes a shell; Alpha is then spent for the turn. An
|
|
75
|
+
;; enemy OUT of reach does nothing when clicked.
|
|
76
|
+
;; WORKS. Direct enemy-click attack: t2 frac 1.00 -> 0.70 (10hp, -3),
|
|
77
|
+
;; BURST "-3" + hit.svg fx sprite at the target, attack frame on
|
|
78
|
+
;; Alpha, hit frame on the target (both caught by 100ms polling), and
|
|
79
|
+
;; Alpha joins actedIds: dims to 0.45 opacity, unselectable until End
|
|
80
|
+
;; Turn. Negative probe: clicking far-away t3 (distance 5) changed
|
|
81
|
+
;; nothing — phase and score untouched.
|
|
82
|
+
;; 7. I change my mind mid-selection and back out cleanly.
|
|
83
|
+
;; WORKS. CANCEL clears selection, highlights, and phase — verified
|
|
84
|
+
;; green cells 10 -> 0 and phase back to "observation".
|
|
85
|
+
;; 8. I end my turn and the enemy takes theirs — they close in and fight
|
|
86
|
+
;; back, and Alpha is fresh again.
|
|
87
|
+
;; WORKS. END_TURN bumps Turn, clears selection + both activation
|
|
88
|
+
;; lists (Alpha selectable again next turn), and emits AI_TURN; the
|
|
89
|
+
;; authority steps each living enemy 1 cell (diagonally — both axes)
|
|
90
|
+
;; toward Alpha and strikes for 1 when adjacent (verified: enemy
|
|
91
|
+
;; positions changed every turn; the defeat run ground Alpha 10->0).
|
|
92
|
+
;; LIMITATION: enemies POP to their new cell — the authority applies
|
|
93
|
+
;; the step silently and the single walk-anim slot is player-facing;
|
|
94
|
+
;; per-enemy MOVE fan-out is atom surgery, deferred.
|
|
95
|
+
;; 9. When I destroy an enemy I am rewarded — score ticks up, and the
|
|
96
|
+
;; wreck stays on the field without blocking movement.
|
|
97
|
+
;; WORKS x2. Each kill: Score +10 (verified 10 then 20 on the HUD)
|
|
98
|
+
;; and the wreck renders its death frame. Corpses are excluded from
|
|
99
|
+
;; the occupancy filters (health > 0) so their cells stay walkable —
|
|
100
|
+
;; inherited from the frame molecule's guards.
|
|
101
|
+
;; 10. When the last enemy tank falls, I win and the game tells me — then
|
|
102
|
+
;; the board freezes.
|
|
103
|
+
;; WORKS. Both enemies destroyed: Result flips to "victory"
|
|
104
|
+
;; (RoundLogic on UNITS_CHANGED), GAME_END fires, and the board is
|
|
105
|
+
;; FROZEN — post-game UNIT_CLICK selects nothing (phase stays
|
|
106
|
+
;; "observation", zero highlights). Reload to play again.
|
|
107
|
+
;; 11. If Alpha is destroyed, I lose and the game tells me — then the
|
|
108
|
+
;; board freezes.
|
|
109
|
+
;; WORKS. Defeat run (Alpha marches to point-blank and never fires):
|
|
110
|
+
;; adjacent enemy fire ground Alpha to 0, Result flipped to "defeat",
|
|
111
|
+
;; GAME_END fired, and the board froze (post-game clicks do nothing).
|
|
112
|
+
;;
|
|
113
|
+
;; MULTIPLAYER NOTE: GameState is [runtime, shared], so every connected
|
|
114
|
+
;; client watches the same skirmish on the same frame; intents serialize
|
|
115
|
+
;; through the server authority. There is no per-seat turn ownership yet —
|
|
116
|
+
;; any client can drive Alpha.
|
|
117
|
+
;;
|
|
118
|
+
;; ASSET INVENTORY (hand-authored svg, almadar-kflow-assets.web.app
|
|
119
|
+
;; /shared/ui-tanks-board/svg/flat/, generated by tools/asset-workflow
|
|
120
|
+
;; svg-generator from the sibling .md descriptions)
|
|
121
|
+
;;
|
|
122
|
+
;; Terrain terrain/ground.svg, terrain/sand.svg — full-cell flat tiles
|
|
123
|
+
;; (rounded-rect desert ground; sandy strip) drawn at
|
|
124
|
+
;; width/height 1.
|
|
125
|
+
;; Units units/{tank,tank_enemy}.svg + animation frames
|
|
126
|
+
;; .{idle-0..3, walk-0..1, attack-0, hit-0, death-0}.svg; the
|
|
127
|
+
;; frame swaps url-rewrite name.svg -> name.<anim>-<i>.svg and a
|
|
128
|
+
;; hidden warm-up layer preloads every frame so swaps never pop.
|
|
129
|
+
;; player: t1 Alpha 10hp (1,1) -> tank.svg
|
|
130
|
+
;; enemy: t2 Bravo 10hp (6,0) -> tank_enemy.svg
|
|
131
|
+
;; t3 Charlie 8hp (6,4) -> tank_enemy.svg
|
|
132
|
+
;; Features features/obstacle.svg — six sandbag-cover cells at
|
|
133
|
+
;; (2,1) (3,2) (4,3) (5,3) (5,4) (2,4), drawn from
|
|
134
|
+
;; config.features anchored "ground" at 1x1 so they sit ON their
|
|
135
|
+
;; cell. Decorative: they do not block movement (all tiles
|
|
136
|
+
;; passable).
|
|
137
|
+
;; Effects effects/hit.svg (BURST "hit" fx on every landed shell),
|
|
138
|
+
;; effects/explosion.svg (manifest-only).
|
|
139
|
+
;; UI chrome ui/panel-frame.svg = game-shell background + HUD panel.
|
|
140
|
+
;; ============================================================================
|
|
4
141
|
orbital TanksBoardOrbital {
|
|
5
142
|
uses Frame from "std/behaviors/std-tactics-board-2d"
|
|
6
143
|
uses Score from "std/behaviors/std-score"
|
|
@@ -69,13 +206,15 @@ orbital TanksBoardOrbital {
|
|
|
69
206
|
|
|
70
207
|
entity GameState [runtime, shared] {
|
|
71
208
|
id : string!
|
|
72
|
-
units : [Unit] = [ { id: "t1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "tank", name: "Alpha", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/
|
|
209
|
+
units : [Unit] = [ { id: "t1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "tank", name: "Alpha", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank.svg", role: "npc", category: "tank", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank", thumbnailUrl: "" } }, { id: "t2", position: { x: 6, y: 0 }, x: 6, y: 0, z: 0, team: "enemy", health: 10, maxHealth: 10, unitType: "tank", name: "Bravo", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank_enemy.svg", role: "npc", category: "tank_enemy", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank_enemy", thumbnailUrl: "" } }, { id: "t3", position: { x: 6, y: 4 }, x: 6, y: 4, z: 0, team: "enemy", health: 8, maxHealth: 8, unitType: "tank", name: "Charlie", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank_enemy.svg", role: "npc", category: "tank_enemy", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank_enemy", thumbnailUrl: "" } } ]
|
|
73
210
|
fx : [Fx] = []
|
|
74
211
|
tiles : [Tile] = [ { id: "t-0-0", x: 0, y: 0, terrain: "ground", passable: true }, { id: "t-1-0", x: 1, y: 0, terrain: "ground", passable: true }, { id: "t-2-0", x: 2, y: 0, terrain: "ground", passable: true }, { id: "t-3-0", x: 3, y: 0, terrain: "ground", passable: true }, { id: "t-4-0", x: 4, y: 0, terrain: "ground", passable: true }, { id: "t-5-0", x: 5, y: 0, terrain: "ground", passable: true }, { id: "t-6-0", x: 6, y: 0, terrain: "ground", passable: true }, { id: "t-7-0", x: 7, y: 0, terrain: "ground", passable: true }, { id: "t-0-1", x: 0, y: 1, terrain: "ground", passable: true }, { id: "t-1-1", x: 1, y: 1, terrain: "ground", passable: true }, { id: "t-2-1", x: 2, y: 1, terrain: "ground", passable: true }, { id: "t-3-1", x: 3, y: 1, terrain: "ground", passable: true }, { id: "t-4-1", x: 4, y: 1, terrain: "ground", passable: true }, { id: "t-5-1", x: 5, y: 1, terrain: "ground", passable: true }, { id: "t-6-1", x: 6, y: 1, terrain: "ground", passable: true }, { id: "t-7-1", x: 7, y: 1, terrain: "ground", passable: true }, { id: "t-0-2", x: 0, y: 2, terrain: "ground", passable: true }, { id: "t-1-2", x: 1, y: 2, terrain: "ground", passable: true }, { id: "t-2-2", x: 2, y: 2, terrain: "ground", passable: true }, { id: "t-3-2", x: 3, y: 2, terrain: "sand", passable: true }, { id: "t-4-2", x: 4, y: 2, terrain: "sand", passable: true }, { id: "t-5-2", x: 5, y: 2, terrain: "sand", passable: true }, { id: "t-6-2", x: 6, y: 2, terrain: "ground", passable: true }, { id: "t-7-2", x: 7, y: 2, terrain: "ground", passable: true }, { id: "t-0-3", x: 0, y: 3, terrain: "ground", passable: true }, { id: "t-1-3", x: 1, y: 3, terrain: "ground", passable: true }, { id: "t-2-3", x: 2, y: 3, terrain: "sand", passable: true }, { id: "t-3-3", x: 3, y: 3, terrain: "sand", passable: true }, { id: "t-4-3", x: 4, y: 3, terrain: "sand", passable: true }, { id: "t-5-3", x: 5, y: 3, terrain: "sand", passable: true }, { id: "t-6-3", x: 6, y: 3, terrain: "ground", passable: true }, { id: "t-7-3", x: 7, y: 3, terrain: "ground", passable: true }, { id: "t-0-4", x: 0, y: 4, terrain: "ground", passable: true }, { id: "t-1-4", x: 1, y: 4, terrain: "ground", passable: true }, { id: "t-2-4", x: 2, y: 4, terrain: "ground", 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: "ground", passable: true }, { id: "t-6-4", x: 6, y: 4, terrain: "ground", passable: true }, { id: "t-7-4", x: 7, y: 4, terrain: "ground", passable: true }, { id: "t-0-5", x: 0, y: 5, terrain: "ground", passable: true }, { id: "t-1-5", x: 1, y: 5, terrain: "ground", passable: true }, { id: "t-2-5", x: 2, y: 5, terrain: "ground", passable: true }, { id: "t-3-5", x: 3, y: 5, terrain: "ground", passable: true }, { id: "t-4-5", x: 4, y: 5, terrain: "ground", passable: true }, { id: "t-5-5", x: 5, y: 5, terrain: "ground", passable: true }, { id: "t-6-5", x: 6, y: 5, terrain: "ground", passable: true }, { id: "t-7-5", x: 7, y: 5, terrain: "ground", passable: true } ]
|
|
75
212
|
result : string = "none"
|
|
76
213
|
selectedUnitId : string = ""
|
|
77
214
|
validMoves : [ValidMove] = []
|
|
78
215
|
attackTargets : [ValidMove] = []
|
|
216
|
+
movedIds : [string] = []
|
|
217
|
+
actedIds : [string] = []
|
|
79
218
|
uiPhase : string = "observation"
|
|
80
219
|
turn : number = 0
|
|
81
220
|
score : number = 0
|
|
@@ -88,7 +227,7 @@ orbital TanksBoardOrbital {
|
|
|
88
227
|
gridWidth: 8
|
|
89
228
|
gridHeight: 6
|
|
90
229
|
attackDamage: 3
|
|
91
|
-
units: [ { id: "t1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "tank", name: "Alpha", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/
|
|
230
|
+
units: [ { id: "t1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "tank", name: "Alpha", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank.svg", role: "npc", category: "tank", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank", thumbnailUrl: "" } }, { id: "t2", position: { x: 6, y: 0 }, x: 6, y: 0, z: 0, team: "enemy", health: 10, maxHealth: 10, unitType: "tank", name: "Bravo", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank_enemy.svg", role: "npc", category: "tank_enemy", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank_enemy", thumbnailUrl: "" } }, { id: "t3", position: { x: 6, y: 4 }, x: 6, y: 4, z: 0, team: "enemy", health: 8, maxHealth: 8, unitType: "tank", name: "Charlie", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank_enemy.svg", role: "npc", category: "tank_enemy", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank_enemy", thumbnailUrl: "" } } ]
|
|
92
231
|
tiles: [ { id: "t-0-0", x: 0, y: 0, terrain: "ground", passable: true }, { id: "t-1-0", x: 1, y: 0, terrain: "ground", passable: true }, { id: "t-2-0", x: 2, y: 0, terrain: "ground", passable: true }, { id: "t-3-0", x: 3, y: 0, terrain: "ground", passable: true }, { id: "t-4-0", x: 4, y: 0, terrain: "ground", passable: true }, { id: "t-5-0", x: 5, y: 0, terrain: "ground", passable: true }, { id: "t-6-0", x: 6, y: 0, terrain: "ground", passable: true }, { id: "t-7-0", x: 7, y: 0, terrain: "ground", passable: true }, { id: "t-0-1", x: 0, y: 1, terrain: "ground", passable: true }, { id: "t-1-1", x: 1, y: 1, terrain: "ground", passable: true }, { id: "t-2-1", x: 2, y: 1, terrain: "ground", passable: true }, { id: "t-3-1", x: 3, y: 1, terrain: "ground", passable: true }, { id: "t-4-1", x: 4, y: 1, terrain: "ground", passable: true }, { id: "t-5-1", x: 5, y: 1, terrain: "ground", passable: true }, { id: "t-6-1", x: 6, y: 1, terrain: "ground", passable: true }, { id: "t-7-1", x: 7, y: 1, terrain: "ground", passable: true }, { id: "t-0-2", x: 0, y: 2, terrain: "ground", passable: true }, { id: "t-1-2", x: 1, y: 2, terrain: "ground", passable: true }, { id: "t-2-2", x: 2, y: 2, terrain: "ground", passable: true }, { id: "t-3-2", x: 3, y: 2, terrain: "sand", passable: true }, { id: "t-4-2", x: 4, y: 2, terrain: "sand", passable: true }, { id: "t-5-2", x: 5, y: 2, terrain: "sand", passable: true }, { id: "t-6-2", x: 6, y: 2, terrain: "ground", passable: true }, { id: "t-7-2", x: 7, y: 2, terrain: "ground", passable: true }, { id: "t-0-3", x: 0, y: 3, terrain: "ground", passable: true }, { id: "t-1-3", x: 1, y: 3, terrain: "ground", passable: true }, { id: "t-2-3", x: 2, y: 3, terrain: "sand", passable: true }, { id: "t-3-3", x: 3, y: 3, terrain: "sand", passable: true }, { id: "t-4-3", x: 4, y: 3, terrain: "sand", passable: true }, { id: "t-5-3", x: 5, y: 3, terrain: "sand", passable: true }, { id: "t-6-3", x: 6, y: 3, terrain: "ground", passable: true }, { id: "t-7-3", x: 7, y: 3, terrain: "ground", passable: true }, { id: "t-0-4", x: 0, y: 4, terrain: "ground", passable: true }, { id: "t-1-4", x: 1, y: 4, terrain: "ground", passable: true }, { id: "t-2-4", x: 2, y: 4, terrain: "ground", 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: "ground", passable: true }, { id: "t-6-4", x: 6, y: 4, terrain: "ground", passable: true }, { id: "t-7-4", x: 7, y: 4, terrain: "ground", passable: true }, { id: "t-0-5", x: 0, y: 5, terrain: "ground", passable: true }, { id: "t-1-5", x: 1, y: 5, terrain: "ground", passable: true }, { id: "t-2-5", x: 2, y: 5, terrain: "ground", passable: true }, { id: "t-3-5", x: 3, y: 5, terrain: "ground", passable: true }, { id: "t-4-5", x: 4, y: 5, terrain: "ground", passable: true }, { id: "t-5-5", x: 5, y: 5, terrain: "ground", passable: true }, { id: "t-6-5", x: 6, y: 5, terrain: "ground", passable: true }, { id: "t-7-5", x: 7, y: 5, terrain: "ground", passable: true } ]
|
|
93
232
|
}
|
|
94
233
|
}
|
|
@@ -114,13 +253,14 @@ orbital TanksBoardOrbital {
|
|
|
114
253
|
gridWidth: 8
|
|
115
254
|
gridHeight: 6
|
|
116
255
|
movementRange: 2
|
|
256
|
+
attackRange: 2
|
|
117
257
|
projection: "flat"
|
|
118
258
|
showMinimap: false
|
|
119
259
|
scale: 0.45
|
|
120
|
-
backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/
|
|
121
|
-
hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/
|
|
122
|
-
features: [ { id: "f1", x: 2, y: 1, type: "obstacle", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/
|
|
123
|
-
assetManifest: { terrains: { ground: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/
|
|
260
|
+
backgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/ui/panel-frame.svg", role: "ui", category: "ui", animations: [], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
261
|
+
hudBackgroundAsset: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/ui/panel-frame.svg", role: "ui", category: "ui", animations: [], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "panel-frame", thumbnailUrl: "" }
|
|
262
|
+
features: [ { id: "f1", x: 2, y: 1, type: "obstacle", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/features/obstacle.svg", role: "decoration", category: "obstacle", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "obstacle", thumbnailUrl: "" } }, { id: "f2", x: 3, y: 2, type: "obstacle", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/features/obstacle.svg", role: "decoration", category: "obstacle", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "obstacle", thumbnailUrl: "" } }, { id: "f3", x: 4, y: 3, type: "obstacle", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/features/obstacle.svg", role: "decoration", category: "obstacle", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "obstacle", thumbnailUrl: "" } }, { id: "f4", x: 5, y: 3, type: "obstacle", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/features/obstacle.svg", role: "decoration", category: "obstacle", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "obstacle", thumbnailUrl: "" } }, { id: "f5", x: 5, y: 4, type: "obstacle", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/features/obstacle.svg", role: "decoration", category: "obstacle", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "obstacle", thumbnailUrl: "" } }, { id: "f6", x: 2, y: 4, type: "obstacle", assetUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/features/obstacle.svg", role: "decoration", category: "obstacle", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "obstacle", thumbnailUrl: "" } } ]
|
|
263
|
+
assetManifest: { terrains: { ground: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/terrain/ground.svg", role: "tile", category: "ground", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "ground", thumbnailUrl: "" }, sand: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/terrain/sand.svg", role: "tile", category: "sand", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "sand", thumbnailUrl: "" } }, units: { tank: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank.svg", role: "npc", category: "tank", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank", thumbnailUrl: "" }, tank_enemy: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/units/tank_enemy.svg", role: "npc", category: "tank_enemy", animations: ["idle","walk","attack","hit","death"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "tank_enemy", thumbnailUrl: "" } }, features: { obstacle: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/features/obstacle.svg", role: "decoration", category: "obstacle", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "obstacle", thumbnailUrl: "" } }, effects: { hit: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/effects/hit.svg", role: "effect", category: "hit", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "hit", thumbnailUrl: "" }, explosion: { url: "https://almadar-kflow-assets.web.app/shared/ui-tanks-board/svg/flat/effects/explosion.svg", role: "effect", category: "explosion", animations: ["static"], style: "sci-fi", dimension: "2d", aspect: "1:1", name: "explosion", thumbnailUrl: "" } } }
|
|
124
264
|
}
|
|
125
265
|
}
|
|
126
266
|
|