@almadar/std 16.210.0 → 16.212.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +5 -2
  2. package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +6 -0
  3. package/behaviors/lolo/infra/atoms/std-calendar-sync.lolo +8 -5
  4. package/behaviors/lolo/infra/atoms/std-cascade-on-delete.lolo +8 -1
  5. package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +5 -3
  6. package/behaviors/lolo/infra/atoms/std-cross-reference.lolo +2 -0
  7. package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +3 -0
  8. package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +2 -0
  9. package/behaviors/lolo/infra/atoms/std-migration-job.lolo +12 -0
  10. package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +1 -0
  11. package/behaviors/lolo/infra/atoms/std-notification-center.lolo +2 -0
  12. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +5 -0
  13. package/behaviors/lolo/infra/atoms/std-reminder-scheduler.lolo +2 -0
  14. package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -0
  15. package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +1 -0
  16. package/behaviors/lolo/ml/atoms/std-ml-infer.lolo +1 -0
  17. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +1 -0
  18. package/behaviors/lolo/ui/core/atoms/std-board.lolo +6 -0
  19. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +10 -1
  20. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +6 -1
  21. package/behaviors/lolo/ui/core/atoms/std-confirmation.lolo +2 -0
  22. package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +2 -2
  23. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +2 -0
  24. package/behaviors/lolo/ui/core/atoms/std-gallery.lolo +8 -1
  25. package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +1 -1
  26. package/behaviors/lolo/ui/core/atoms/std-list.lolo +8 -1
  27. package/behaviors/lolo/ui/core/atoms/std-modal.lolo +3 -1
  28. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +8 -1
  29. package/behaviors/lolo/ui/core/atoms/std-stats.lolo +1 -1
  30. package/behaviors/lolo/ui/core/atoms/std-step-flow.lolo +4 -3
  31. package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +1 -0
  32. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +17 -4
  33. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +33 -30
  34. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +1 -1
  35. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +36 -0
  36. package/behaviors/lolo/ui/core/atoms/ui-badge.lolo +1 -1
  37. package/behaviors/lolo/ui/core/atoms/ui-button.lolo +1 -1
  38. package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +22 -2
  39. package/behaviors/lolo/ui/core/atoms/ui-game-icon.lolo +1 -1
  40. package/behaviors/lolo/ui/core/atoms/ui-radio.lolo +1 -1
  41. package/behaviors/lolo/ui/core/atoms/ui-range-slider.lolo +1 -1
  42. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +6 -2
  43. package/behaviors/lolo/ui/core/atoms/ui-switch.lolo +1 -1
  44. package/behaviors/lolo/ui/core/atoms/ui-text-highlight.lolo +1 -1
  45. package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +3 -1
  46. package/behaviors/lolo/ui/core/atoms/ui-time-slot-cell.lolo +1 -1
  47. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +2 -2
  48. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +2 -2
  49. package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +2 -2
  50. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +2 -2
  51. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +1 -1
  52. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +1 -1
  53. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +1 -1
  54. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +1 -1
  55. package/behaviors/lolo/ui/core/molecules/ui-number-stepper.lolo +1 -1
  56. package/behaviors/lolo/ui/core/molecules/ui-pagination.lolo +1 -1
  57. package/behaviors/lolo/ui/core/molecules/ui-popover.lolo +1 -1
  58. package/behaviors/lolo/ui/core/molecules/ui-relation-select.lolo +1 -1
  59. package/behaviors/lolo/ui/core/molecules/ui-rich-text-editor.lolo +1 -1
  60. package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +1 -1
  61. package/behaviors/lolo/ui/core/molecules/ui-sidebar.lolo +1 -1
  62. package/behaviors/lolo/ui/core/molecules/ui-star-rating.lolo +1 -1
  63. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +2 -2
  64. package/behaviors/lolo/ui/core/molecules/ui-wizard-navigation.lolo +2 -2
  65. package/behaviors/lolo/ui/core/organisms/ui-split-pane.lolo +1 -1
  66. package/behaviors/lolo/ui/game/atoms/std-tutorial-overlay.lolo +6 -0
  67. package/behaviors/lolo/ui/game/atoms/ui-action-palette.lolo +1 -1
  68. package/behaviors/lolo/ui/game/atoms/ui-action-tile.lolo +1 -1
  69. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +1 -1
  70. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +1 -1
  71. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +2 -2
  72. package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +1 -1
  73. package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +1 -1
  74. package/behaviors/lolo/ui/game/atoms/ui-draw-skinned-mesh.lolo +131 -0
  75. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite-layer.lolo +1 -1
  76. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +1 -1
  77. package/behaviors/lolo/ui/game/atoms/ui-game-audio-toggle.lolo +2 -2
  78. package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +5 -5
  79. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +1 -1
  80. package/behaviors/lolo/ui/game/atoms/ui-health-bar.lolo +2 -2
  81. package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +1 -1
  82. package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +2 -2
  83. package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +2 -2
  84. package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +5 -5
  85. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +10 -10
  86. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +10 -10
  87. package/behaviors/lolo/ui/game/organisms/std-dungeon-board-2d.lolo +36 -36
  88. package/behaviors/lolo/ui/game/organisms/std-market-board-3d.lolo +36 -36
  89. package/behaviors/lolo/ui/game/organisms/std-objective-board-3d.lolo +34 -34
  90. package/behaviors/lolo/ui/game/organisms/std-survival-board-3d.lolo +10 -10
  91. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +12 -12
  92. package/behaviors/lolo/ui/game/organisms/std-tactics-board-3d.lolo +12 -12
  93. package/behaviors/lolo/ui/game/organisms/std-worldmap-board-2d.lolo +20 -20
  94. package/behaviors/registry/infra/atoms/std-approval-gate.orb +76 -27
  95. package/behaviors/registry/infra/atoms/std-cache-aside.orb +76 -32
  96. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +51 -0
  97. package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +48 -0
  98. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +43 -14
  99. package/behaviors/registry/infra/atoms/std-cross-reference.orb +41 -15
  100. package/behaviors/registry/infra/atoms/std-data-erasure.orb +52 -0
  101. package/behaviors/registry/infra/atoms/std-lifecycle.orb +36 -0
  102. package/behaviors/registry/infra/atoms/std-migration-job.orb +108 -0
  103. package/behaviors/registry/infra/atoms/std-mod-queue.orb +20 -0
  104. package/behaviors/registry/infra/atoms/std-notification-center.orb +88 -24
  105. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +82 -6
  106. package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +36 -0
  107. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +20 -0
  108. package/behaviors/registry/ml/atoms/std-ml-classify.orb +18 -0
  109. package/behaviors/registry/ml/atoms/std-ml-infer.orb +18 -0
  110. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +20 -0
  111. package/behaviors/registry/ui/core/atoms/std-board.orb +58 -0
  112. package/behaviors/registry/ui/core/atoms/std-browse.orb +35 -1
  113. package/behaviors/registry/ui/core/atoms/std-calendar.orb +9 -1
  114. package/behaviors/registry/ui/core/atoms/std-confirmation.orb +44 -18
  115. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +44 -18
  116. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +19 -8
  117. package/behaviors/registry/ui/core/atoms/std-event-log.orb +26 -0
  118. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +20 -9
  119. package/behaviors/registry/ui/core/atoms/std-gallery.orb +35 -1
  120. package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -0
  121. package/behaviors/registry/ui/core/atoms/std-list.orb +35 -1
  122. package/behaviors/registry/ui/core/atoms/std-modal.orb +52 -24
  123. package/behaviors/registry/ui/core/atoms/std-selection.orb +35 -1
  124. package/behaviors/registry/ui/core/atoms/std-stats.orb +1 -0
  125. package/behaviors/registry/ui/core/atoms/std-step-flow.orb +0 -3
  126. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +20 -0
  127. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +58 -9
  128. package/behaviors/registry/ui/core/atoms/std-thread.orb +134 -40
  129. package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -0
  130. package/behaviors/registry/ui/core/atoms/std-wizard.orb +77 -0
  131. package/behaviors/registry/ui/core/atoms/ui-badge.orb +4 -1
  132. package/behaviors/registry/ui/core/atoms/ui-button.orb +4 -1
  133. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +78 -2
  134. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +4 -1
  135. package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -0
  136. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +1 -0
  137. package/behaviors/registry/ui/core/atoms/ui-select.orb +28 -0
  138. package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -0
  139. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +1 -0
  140. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +14 -0
  141. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -0
  142. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +2 -0
  143. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +2 -28
  144. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +2 -0
  145. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +2 -0
  146. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -0
  147. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -20
  148. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -14
  149. package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -24
  150. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +1 -0
  151. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +1 -0
  152. package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -0
  153. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -0
  154. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +1 -0
  155. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +1 -0
  156. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +1 -0
  157. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +1 -0
  158. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +8 -2
  159. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +2 -0
  160. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +1 -0
  161. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +44 -0
  162. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +4 -1
  163. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +4 -1
  164. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +4 -1
  165. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +4 -1
  166. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +8 -2
  167. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +4 -1
  168. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +4 -1
  169. package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +697 -0
  170. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +4 -1
  171. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +4 -1
  172. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +8 -2
  173. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +20 -5
  174. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +4 -1
  175. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +8 -2
  176. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +4 -1
  177. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +4 -1
  178. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +8 -2
  179. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +9 -2
  180. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +10 -30
  181. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +10 -30
  182. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +36 -108
  183. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +36 -108
  184. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +34 -102
  185. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +10 -30
  186. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +12 -36
  187. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +12 -36
  188. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +20 -60
  189. package/dist/behaviors/exports-reader.js +3136 -2291
  190. package/dist/behaviors/functions/index.d.ts +148 -40
  191. package/dist/behaviors/functions/index.js +3134 -2290
  192. package/dist/behaviors/index.d.ts +1 -1
  193. package/dist/behaviors/index.js +3137 -2292
  194. package/dist/behaviors/query.js +3136 -2291
  195. package/dist/behaviors-embeddings.hash.json +3 -3
  196. package/dist/behaviors-embeddings.json +25 -21
  197. package/dist/behaviors-registry.json +2296 -1209
  198. package/dist/index.d.ts +1 -1
  199. package/dist/index.js +3137 -2292
  200. package/dist/knob-embeddings.hash.json +3 -3
  201. package/dist/knob-embeddings.json +1 -1
  202. package/dist/registry/factory-signatures.json +1 -1
  203. package/package.json +2 -2
@@ -99,13 +99,13 @@ orbital SurvivalBoard3DOrbital {
99
99
  entity GameState [runtime, shared] {
100
100
  id : string!
101
101
  units : [Unit] = [
102
- { id: "survivor", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "survivor", name: "Survivor", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } }
102
+ { id: "survivor", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "survivor", name: "Survivor", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } }
103
103
  ]
104
104
  tiles : [Tile] = [
105
- { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
106
- { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
107
- { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
108
- { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
105
+ { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
106
+ { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
107
+ { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
108
+ { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
109
109
  ]
110
110
  movesLeft : number = 0
111
111
  features : [Feature] = []
@@ -125,13 +125,13 @@ orbital SurvivalBoard3DOrbital {
125
125
  gridHeight: 2
126
126
  moveBudget: 100
127
127
  units: [
128
- { id: "survivor", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "survivor", name: "Survivor", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } }
128
+ { id: "survivor", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "survivor", name: "Survivor", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } }
129
129
  ]
130
130
  tiles: [
131
- { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
132
- { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
133
- { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
134
- { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
131
+ { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
132
+ { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
133
+ { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
134
+ { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
135
135
  ]
136
136
  }
137
137
  }
@@ -111,15 +111,15 @@ orbital TacticsBoard2DOrbital {
111
111
  entity GameState [runtime, shared] {
112
112
  id : string!
113
113
  units : [Unit] = [
114
- { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
115
- { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "red_body_square.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
114
+ { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
115
+ { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
116
116
  ]
117
117
  fx : [Fx] = []
118
118
  tiles : [Tile] = [
119
- { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
120
- { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
121
- { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
122
- { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
119
+ { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
120
+ { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
121
+ { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
122
+ { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
123
123
  ]
124
124
  result : string = "none"
125
125
  selectedUnitId : string = ""
@@ -148,14 +148,14 @@ orbital TacticsBoard2DOrbital {
148
148
  gridHeight: 2
149
149
  attackDamage: 3
150
150
  units: [
151
- { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
152
- { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "red_body_square.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
151
+ { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
152
+ { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
153
153
  ]
154
154
  tiles: [
155
- { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
156
- { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
157
- { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
158
- { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
155
+ { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
156
+ { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
157
+ { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
158
+ { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
159
159
  ]
160
160
  }
161
161
  }
@@ -128,15 +128,15 @@ orbital TacticsBoard3DOrbital {
128
128
  entity GameState [runtime, shared] {
129
129
  id : string!
130
130
  units : [Unit] = [
131
- { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
132
- { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "red_body_square.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
131
+ { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
132
+ { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
133
133
  ]
134
134
  fx : [Fx] = []
135
135
  tiles : [Tile] = [
136
- { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
137
- { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
138
- { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
139
- { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
136
+ { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
137
+ { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
138
+ { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
139
+ { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
140
140
  ]
141
141
  result : string = "none"
142
142
  selectedUnitId : string = ""
@@ -154,14 +154,14 @@ orbital TacticsBoard3DOrbital {
154
154
  gridHeight: 2
155
155
  attackDamage: 3
156
156
  units: [
157
- { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
158
- { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "red_body_square.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
157
+ { id: "p1", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "unit", name: "Player", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
158
+ { id: "e1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "enemy", health: 2, maxHealth: 2, unitType: "unit", name: "Enemy", modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
159
159
  ]
160
160
  tiles: [
161
- { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
162
- { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
163
- { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
164
- { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
161
+ { id: "t-0-0", x: 0, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
162
+ { id: "t-0-1", x: 0, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
163
+ { id: "t-1-0", x: 1, y: 0, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
164
+ { id: "t-1-1", x: 1, y: 1, z: 0, terrain: "grass", passable: true, modelUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
165
165
  ]
166
166
  }
167
167
  }
@@ -77,26 +77,26 @@ orbital WorldMapBoard2DOrbital {
77
77
  entity GameState [runtime, shared] {
78
78
  id : string!
79
79
  units : [Unit] = [
80
- { id: "hero", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "hero", name: "Hero", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
81
- { id: "guard", position: { x: 3, y: 3 }, x: 3, y: 3, z: 0, team: "enemy", health: 3, maxHealth: 3, unitType: "guard", name: "Guard", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "red_body_square.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
80
+ { id: "hero", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "hero", name: "Hero", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
81
+ { id: "guard", position: { x: 3, y: 3 }, x: 3, y: 3, z: 0, team: "enemy", health: 3, maxHealth: 3, unitType: "guard", name: "Guard", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
82
82
  ]
83
83
  tiles : [Tile] = [
84
- { id: "t-0-0", x: 0, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
85
- { id: "t-0-1", x: 0, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
86
- { id: "t-0-2", x: 0, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
87
- { id: "t-0-3", x: 0, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
88
- { id: "t-1-0", x: 1, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
89
- { id: "t-1-1", x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
90
- { id: "t-1-2", x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
91
- { id: "t-1-3", x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
92
- { id: "t-2-0", x: 2, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
93
- { id: "t-2-1", x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
94
- { id: "t-2-2", x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
95
- { id: "t-2-3", x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
96
- { id: "t-3-0", x: 3, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
97
- { id: "t-3-1", x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
98
- { id: "t-3-2", x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
99
- { id: "t-3-3", x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.png", atlas: "https://almadar-kflow-assets.web.app/shared/ui-boardgame-board/kenney-puzzle-assets-2/terrain/spritesheet_tilesBlue.json", sprite: "tileBlue_01.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
84
+ { id: "t-0-0", x: 0, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
85
+ { id: "t-0-1", x: 0, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
86
+ { id: "t-0-2", x: 0, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
87
+ { id: "t-0-3", x: 0, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
88
+ { id: "t-1-0", x: 1, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
89
+ { id: "t-1-1", x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
90
+ { id: "t-1-2", x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
91
+ { id: "t-1-3", x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
92
+ { id: "t-2-0", x: 2, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
93
+ { id: "t-2-1", x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
94
+ { id: "t-2-2", x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
95
+ { id: "t-2-3", x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
96
+ { id: "t-3-0", x: 3, y: 0, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
97
+ { id: "t-3-1", x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
98
+ { id: "t-3-2", x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } },
99
+ { id: "t-3-3", x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png", role: "tile", category: "terrain", animations: ["static"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "grass", thumbnailUrl: "" } }
100
100
  ]
101
101
  result : string = "none"
102
102
  gold : number = 0
@@ -114,8 +114,8 @@ orbital WorldMapBoard2DOrbital {
114
114
  gridHeight: 4
115
115
  attackDamage: 1
116
116
  units: [
117
- { id: "hero", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "hero", name: "Hero", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "blue_body_square.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
118
- { id: "guard", position: { x: 3, y: 3 }, x: 3, y: 3, z: 0, team: "enemy", health: 3, maxHealth: 3, unitType: "guard", name: "Guard", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-shape-characters/units/spritesheet_default.json", sprite: "red_body_square.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
117
+ { id: "hero", position: { x: 0, y: 0 }, x: 0, y: 0, z: 0, team: "player", health: 3, maxHealth: 3, unitType: "hero", name: "Hero", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "player", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "player-unit", thumbnailUrl: "" } },
118
+ { id: "guard", position: { x: 3, y: 3 }, x: 3, y: 3, z: 0, team: "enemy", health: 3, maxHealth: 3, unitType: "guard", name: "Guard", animation: "idle", frame: 0, sprite: { url: "https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png", role: "enemy", category: "unit", animations: ["idle"], style: "vector", variant: "default", dimension: "2d", aspect: "1:1", name: "enemy-unit", thumbnailUrl: "" } }
119
119
  ]
120
120
  tiles: []
121
121
  }
@@ -649,9 +649,6 @@
649
649
  "kind": "fetch",
650
650
  "resource": "ApprovalRequest"
651
651
  },
652
- {
653
- "kind": "notify"
654
- },
655
652
  {
656
653
  "kind": "persist",
657
654
  "resource": "ApprovalRequest"
@@ -661,6 +658,10 @@
661
658
  "resolved": false,
662
659
  "resource": "@config.reviewSlot"
663
660
  },
661
+ {
662
+ "kind": "render-ui",
663
+ "resource": "toast"
664
+ },
664
665
  {
665
666
  "kind": "set",
666
667
  "resource": "@entity.decidedAt"
@@ -1196,6 +1197,24 @@
1196
1197
  "synonyms": "replay failed, apply failed, approval rollback",
1197
1198
  "tier": "domain"
1198
1199
  },
1200
+ {
1201
+ "description": "Indicates a failure to load or process an approval request for review.",
1202
+ "id": "evt_01KXG04EZ0HX0YV7MH4PXFQCM0",
1203
+ "key": "ApprovalRequestReviewFailed",
1204
+ "name": "ApprovalRequest review failed",
1205
+ "payloadSchema": [
1206
+ {
1207
+ "name": "error",
1208
+ "type": "string"
1209
+ },
1210
+ {
1211
+ "name": "code",
1212
+ "type": "string"
1213
+ }
1214
+ ],
1215
+ "synonyms": "load error, failed review, processing failure",
1216
+ "tier": "internal"
1217
+ },
1199
1218
  {
1200
1219
  "description": "Summons the review queue (host nav/affordance requests it).",
1201
1220
  "id": "evt_01KXG04EZ05HP9JSWYNV5XV2QW",
@@ -1399,24 +1418,6 @@
1399
1418
  "synonyms": "reviewed, processed, examined",
1400
1419
  "tier": "internal"
1401
1420
  },
1402
- {
1403
- "description": "Indicates a failure to load or process an approval request for review.",
1404
- "id": "evt_01KXG04EZ0HX0YV7MH4PXFQCM0",
1405
- "key": "ApprovalRequestReviewFailed",
1406
- "name": "ApprovalRequest review failed",
1407
- "payloadSchema": [
1408
- {
1409
- "name": "error",
1410
- "type": "string"
1411
- },
1412
- {
1413
- "name": "code",
1414
- "type": "string"
1415
- }
1416
- ],
1417
- "synonyms": "load error, failed review, processing failure",
1418
- "tier": "internal"
1419
- },
1420
1421
  {
1421
1422
  "description": "The deny form committed; data carries the request id + the written reason.",
1422
1423
  "id": "evt_01M169J81GZWG6Q9MYCQT7F92E",
@@ -1540,6 +1541,22 @@
1540
1541
  "to": "idle"
1541
1542
  },
1542
1543
  {
1544
+ "effects": [
1545
+ [
1546
+ "render-ui",
1547
+ "toast",
1548
+ {
1549
+ "dismissible": true,
1550
+ "message": [
1551
+ "str/concat",
1552
+ "Couldn't load the approval request — ",
1553
+ "@payload.error"
1554
+ ],
1555
+ "type": "alert",
1556
+ "variant": "error"
1557
+ }
1558
+ ]
1559
+ ],
1543
1560
  "event": "ApprovalRequestLoadFailed",
1544
1561
  "eventId": "evt_01KXG04EZ0ZFHMHXT4NN21VK6N",
1545
1562
  "from": "idle",
@@ -1580,9 +1597,14 @@
1580
1597
  }
1581
1598
  ],
1582
1599
  [
1583
- "notify",
1584
- "Approval could not be applied — the request was reopened.",
1585
- "error"
1600
+ "render-ui",
1601
+ "toast",
1602
+ {
1603
+ "dismissible": true,
1604
+ "message": "Approval could not be applied — the request was reopened.",
1605
+ "type": "alert",
1606
+ "variant": "error"
1607
+ }
1586
1608
  ]
1587
1609
  ],
1588
1610
  "event": "APPROVAL_REPLAY_FAILED",
@@ -1590,6 +1612,28 @@
1590
1612
  "from": "idle",
1591
1613
  "to": "idle"
1592
1614
  },
1615
+ {
1616
+ "effects": [
1617
+ [
1618
+ "render-ui",
1619
+ "toast",
1620
+ {
1621
+ "dismissible": true,
1622
+ "message": [
1623
+ "str/concat",
1624
+ "Couldn't reopen the approval request — ",
1625
+ "@payload.error"
1626
+ ],
1627
+ "type": "alert",
1628
+ "variant": "error"
1629
+ }
1630
+ ]
1631
+ ],
1632
+ "event": "ApprovalRequestReviewFailed",
1633
+ "eventId": "evt_01KXG04EZ0HX0YV7MH4PXFQCM0",
1634
+ "from": "idle",
1635
+ "to": "idle"
1636
+ },
1593
1637
  {
1594
1638
  "effects": [
1595
1639
  [
@@ -2003,9 +2047,14 @@
2003
2047
  }
2004
2048
  ],
2005
2049
  [
2006
- "notify",
2007
- "Approval could not be applied — the request was reopened.",
2008
- "error"
2050
+ "render-ui",
2051
+ "toast",
2052
+ {
2053
+ "dismissible": true,
2054
+ "message": "Approval could not be applied — the request was reopened.",
2055
+ "type": "alert",
2056
+ "variant": "error"
2057
+ }
2009
2058
  ]
2010
2059
  ],
2011
2060
  "event": "APPROVAL_REPLAY_FAILED",
@@ -729,6 +729,10 @@
729
729
  {
730
730
  "kind": "render-ui",
731
731
  "resource": "main"
732
+ },
733
+ {
734
+ "kind": "render-ui",
735
+ "resource": "toast"
732
736
  }
733
737
  ],
734
738
  "emits": [
@@ -961,6 +965,38 @@
961
965
  "synonyms": "error, failure, miss, not found",
962
966
  "tier": "internal"
963
967
  },
968
+ {
969
+ "description": "Indicates a failure to update a cached entry.",
970
+ "id": "evt_01KXG04F59V9CZZME6DBPAT052",
971
+ "key": "CacheEntryUpdateFailed",
972
+ "name": "CacheEntry update failed",
973
+ "payloadSchema": [
974
+ {
975
+ "name": "error",
976
+ "type": "string"
977
+ },
978
+ {
979
+ "name": "code",
980
+ "type": "string"
981
+ }
982
+ ],
983
+ "synonyms": "error, failure, problem, unsuccessful",
984
+ "tier": "internal"
985
+ },
986
+ {
987
+ "description": "Signals that a cached entry's data has been modified.",
988
+ "id": "evt_01KXG04F59YV599S886ZN4BA5E",
989
+ "key": "CacheEntryUpdated",
990
+ "name": "CacheEntry updated",
991
+ "payloadSchema": [
992
+ {
993
+ "name": "id",
994
+ "type": "string"
995
+ }
996
+ ],
997
+ "synonyms": "modified, refreshed, changed, updated",
998
+ "tier": "presentation"
999
+ },
964
1000
  {
965
1001
  "id": "evt_01KXG04F59871HBKNA1CFXHGC8",
966
1002
  "key": "INVALIDATE",
@@ -1017,38 +1053,6 @@
1017
1053
  "id": "evt_01KXG04F59548SN2QBGQCZG3PS",
1018
1054
  "key": "REFRESH",
1019
1055
  "name": "Refresh"
1020
- },
1021
- {
1022
- "description": "Signals that a cached entry's data has been modified.",
1023
- "id": "evt_01KXG04F59YV599S886ZN4BA5E",
1024
- "key": "CacheEntryUpdated",
1025
- "name": "CacheEntry updated",
1026
- "payloadSchema": [
1027
- {
1028
- "name": "id",
1029
- "type": "string"
1030
- }
1031
- ],
1032
- "synonyms": "modified, refreshed, changed, updated",
1033
- "tier": "presentation"
1034
- },
1035
- {
1036
- "description": "Indicates a failure to update a cached entry.",
1037
- "id": "evt_01KXG04F59V9CZZME6DBPAT052",
1038
- "key": "CacheEntryUpdateFailed",
1039
- "name": "CacheEntry update failed",
1040
- "payloadSchema": [
1041
- {
1042
- "name": "error",
1043
- "type": "string"
1044
- },
1045
- {
1046
- "name": "code",
1047
- "type": "string"
1048
- }
1049
- ],
1050
- "synonyms": "error, failure, problem, unsuccessful",
1051
- "tier": "internal"
1052
1056
  }
1053
1057
  ],
1054
1058
  "states": [
@@ -1251,6 +1255,46 @@
1251
1255
  "from": "loading",
1252
1256
  "to": "error"
1253
1257
  },
1258
+ {
1259
+ "effects": [
1260
+ [
1261
+ "render-ui",
1262
+ "toast",
1263
+ {
1264
+ "dismissible": true,
1265
+ "message": [
1266
+ "str/concat",
1267
+ "Couldn't update the cache entry — ",
1268
+ "@payload.error"
1269
+ ],
1270
+ "type": "alert",
1271
+ "variant": "error"
1272
+ }
1273
+ ]
1274
+ ],
1275
+ "event": "CacheEntryUpdateFailed",
1276
+ "eventId": "evt_01KXG04F59V9CZZME6DBPAT052",
1277
+ "from": "loading",
1278
+ "to": "loading"
1279
+ },
1280
+ {
1281
+ "effects": [
1282
+ [
1283
+ "fetch",
1284
+ "CacheEntry",
1285
+ {
1286
+ "emit": {
1287
+ "failure": "CacheEntryLoadFailed",
1288
+ "success": "CacheEntryLoaded"
1289
+ }
1290
+ }
1291
+ ]
1292
+ ],
1293
+ "event": "CacheEntryUpdated",
1294
+ "eventId": "evt_01KXG04F59YV599S886ZN4BA5E",
1295
+ "from": "loading",
1296
+ "to": "loading"
1297
+ },
1254
1298
  {
1255
1299
  "effects": [
1256
1300
  [