@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
@@ -129,6 +129,12 @@ orbital TutorialOverlayOrbital {
129
129
  (render-ui overlay null)
130
130
  (emit TUTORIAL_DEMO_STOP {})
131
131
  (emit TUTORIAL_DONE { id: "tutorial" })
132
+
133
+ CLOSE -> hidden
134
+ (set @entity.done true)
135
+ (render-ui overlay null)
136
+ (emit TUTORIAL_DEMO_STOP {})
137
+ (emit TUTORIAL_DONE { id: "tutorial" })
132
138
  }
133
139
 
134
140
  emits {
@@ -18,7 +18,7 @@ orbital ActionPaletteOrbital {
18
18
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
19
19
  variant : string
20
20
  dimension : "2d" | "3d"
21
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
21
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
22
22
  atlas : asset
23
23
  sprite : string
24
24
  name : string
@@ -24,7 +24,7 @@ orbital ActionTileOrbital {
24
24
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
25
25
  variant : string
26
26
  dimension : "2d" | "3d"
27
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
27
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
28
28
  atlas : asset
29
29
  sprite : string
30
30
  name : string
@@ -9,7 +9,7 @@ orbital ChoiceButtonOrbital {
9
9
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
10
10
  variant : string
11
11
  dimension : "2d" | "3d"
12
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
12
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
13
13
  atlas : asset
14
14
  sprite : string
15
15
  name : string
@@ -9,7 +9,7 @@ orbital ControlButtonOrbital {
9
9
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
10
10
  variant : string
11
11
  dimension : "2d" | "3d"
12
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
12
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
13
13
  atlas : asset
14
14
  sprite : string
15
15
  name : string
@@ -16,7 +16,7 @@ orbital ControlGridOrbital {
16
16
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
17
17
  variant : string
18
18
  dimension : "2d" | "3d"
19
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
19
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
20
20
  atlas : asset
21
21
  sprite : string
22
22
  name : string
@@ -30,7 +30,7 @@ orbital ControlGridOrbital {
30
30
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
31
31
  variant : string
32
32
  dimension : "2d" | "3d"
33
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
33
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
34
34
  atlas : asset
35
35
  sprite : string
36
36
  name : string
@@ -9,7 +9,7 @@ orbital DialogueBubbleOrbital {
9
9
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
10
10
  variant : string
11
11
  dimension : "2d" | "3d"
12
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
12
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
13
13
  atlas : asset
14
14
  sprite : string
15
15
  name : string
@@ -52,7 +52,7 @@ orbital DrawFxLayerOrbital {
52
52
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
53
53
  variant : string
54
54
  dimension : "2d" | "3d"
55
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
55
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
56
56
  atlas : asset
57
57
  sprite : string
58
58
  name : string
@@ -0,0 +1,131 @@
1
+ app ui-draw-skinned-mesh "1.0.0"
2
+ "DrawSkinnedMesh — UI factory (1:1 with the @almadar/ui draw-skinned-mesh pattern)."
3
+ orbital DrawSkinnedMeshOrbital {
4
+ type DrawSkinnedMeshPosition = {
5
+ x : number!
6
+ y : number!
7
+ z : number
8
+ }
9
+ type DrawSkinnedMeshAsset = {
10
+ url : asset!
11
+ role : string!
12
+ category : string!
13
+ animations : [string]
14
+ style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
15
+ variant : string
16
+ dimension : "2d" | "3d"
17
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
18
+ atlas : asset
19
+ sprite : string
20
+ name : string
21
+ thumbnailUrl : string
22
+ }
23
+ type DrawSkinnedMeshMesh = {
24
+ vertices : [DrawSkinnedMeshMeshVerticesItem]!
25
+ triangles : [[number]]!
26
+ }
27
+ type DrawSkinnedMeshMeshVerticesItem = {
28
+ x : number!
29
+ y : number!
30
+ u : number!
31
+ v : number!
32
+ weights : [DrawSkinnedMeshMeshVerticesItemWeightsItem]!
33
+ }
34
+ type DrawSkinnedMeshMeshVerticesItemWeightsItem = {
35
+ bone : number!
36
+ w : number!
37
+ }
38
+ type DrawSkinnedMeshBonesItem = {
39
+ name : string!
40
+ parent : string!
41
+ pivot : [number]!
42
+ tip : [number]!
43
+ }
44
+ type DrawSkinnedMeshClip = {
45
+ frames : [Map string number]!
46
+ }
47
+ type DrawSkinnedMeshGhost = {
48
+ frame : number!
49
+ opacity : number!
50
+ }
51
+
52
+ entity DrawSkinnedMeshItem [runtime] {
53
+ id : string!
54
+ }
55
+
56
+ trait DrawSkinnedMeshRender -> @rebindable DrawSkinnedMeshItem [interaction, instance] {
57
+ initial: idle
58
+
59
+ state idle {
60
+ INIT -> idle
61
+ (render-ui main {
62
+ position: @config.position
63
+ asset: @config.asset
64
+ mesh: @config.mesh
65
+ meshUrl: @config.meshUrl
66
+ bones: @config.bones
67
+ pose: @config.pose
68
+ clip: @config.clip
69
+ clipName: @config.clipName
70
+ frame: @config.frame
71
+ opacity: @config.opacity
72
+ weightsOverlay: @config.weightsOverlay
73
+ ghost: @config.ghost
74
+ type: draw-skinned-mesh
75
+ })
76
+ }
77
+
78
+ config {
79
+ position : DrawSkinnedMeshPosition = { x: 1, y: 1, z: 1 }
80
+ @label "Position"
81
+ @description "Logical scene position; mesh local coords are world units relative to its projected top-left."
82
+ @tier "presentation"
83
+ asset : DrawSkinnedMeshAsset
84
+ @label "Asset"
85
+ @description "The texture the mesh UVs cut into."
86
+ @tier "presentation"
87
+ mesh : DrawSkinnedMeshMesh
88
+ @label "Mesh"
89
+ @description "Inline bind mesh; wins over `meshUrl`."
90
+ @tier "presentation"
91
+ meshUrl : string
92
+ @label "Mesh Url"
93
+ @description "URL of a JSON `SkinMesh` (fetched + cached); used when `mesh` is absent."
94
+ @tier "presentation"
95
+ bones : [DrawSkinnedMeshBonesItem] = [{ name: "Name", parent: "Parent", pivot: [1, 2], tip: [1, 2] }, { name: "Name 2", parent: "Parent 2", pivot: [1, 2], tip: [1, 2] }]
96
+ @label "Bones"
97
+ @description "The skeleton (bind pose; FK chain via `parent` names). Falls back to the rigbundle's `bones` when empty."
98
+ @tier "presentation"
99
+ pose : Map string number = { item: 1 }
100
+ @label "Pose"
101
+ @description "Static pose (bone name → degrees relative to bind). Overridden by `clip` + `frame`."
102
+ @tier "presentation"
103
+ clip : DrawSkinnedMeshClip
104
+ @label "Clip"
105
+ @description "Pose animation clip; with `frame`, pose = `frames[frame % frames.length]`."
106
+ @tier "presentation"
107
+ clipName : string
108
+ @label "Clip Name"
109
+ @description "Named clip inside the rigbundle at `meshUrl` (`clips[clipName].frames`); used when `clip` is absent. Empty/unknown = no clip."
110
+ @tier "presentation"
111
+ frame : number
112
+ @label "Frame"
113
+ @description "Clip frame counter (host-driven paint clock frame)."
114
+ @tier "presentation"
115
+ opacity : number
116
+ @label "Opacity"
117
+ @description "0..1 opacity."
118
+ @tier "presentation"
119
+ weightsOverlay : boolean
120
+ @label "Weights Overlay"
121
+ @description "Paint per-triangle dominant-bone colors instead of the texture (rig inspection)."
122
+ @tier "presentation"
123
+ ghost : DrawSkinnedMeshGhost
124
+ @label "Ghost"
125
+ @description "Onion skin: render the mesh at this clip frame underneath, at this opacity."
126
+ @tier "presentation"
127
+ }
128
+ }
129
+
130
+ page "/draw-skinned-mesh" as DrawSkinnedMeshPage -> DrawSkinnedMeshRender
131
+ }
@@ -31,7 +31,7 @@ orbital DrawSpriteLayerOrbital {
31
31
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
32
32
  variant : string
33
33
  dimension : "2d" | "3d"
34
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
34
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
35
35
  atlas : asset
36
36
  sprite : string
37
37
  name : string
@@ -14,7 +14,7 @@ orbital DrawSpriteOrbital {
14
14
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
15
15
  variant : string
16
16
  dimension : "2d" | "3d"
17
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
17
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
18
18
  atlas : asset
19
19
  sprite : string
20
20
  name : string
@@ -15,7 +15,7 @@ orbital GameAudioToggleOrbital {
15
15
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
16
16
  variant : string
17
17
  dimension : "2d" | "3d"
18
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
18
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
19
19
  atlas : asset
20
20
  sprite : string
21
21
  name : string
@@ -29,7 +29,7 @@ orbital GameAudioToggleOrbital {
29
29
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
30
30
  variant : string
31
31
  dimension : "2d" | "3d"
32
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
32
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
33
33
  atlas : asset
34
34
  sprite : string
35
35
  name : string
@@ -22,7 +22,7 @@ orbital GameHudOrbital {
22
22
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
23
23
  variant : string
24
24
  dimension : "2d" | "3d"
25
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
25
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
26
26
  atlas : asset
27
27
  sprite : string
28
28
  name : string
@@ -36,7 +36,7 @@ orbital GameHudOrbital {
36
36
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
37
37
  variant : string
38
38
  dimension : "2d" | "3d"
39
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
39
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
40
40
  atlas : asset
41
41
  sprite : string
42
42
  name : string
@@ -63,7 +63,7 @@ orbital GameHudOrbital {
63
63
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
64
64
  variant : string
65
65
  dimension : "2d" | "3d"
66
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
66
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
67
67
  atlas : asset
68
68
  sprite : string
69
69
  name : string
@@ -77,7 +77,7 @@ orbital GameHudOrbital {
77
77
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
78
78
  variant : string
79
79
  dimension : "2d" | "3d"
80
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
80
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
81
81
  atlas : asset
82
82
  sprite : string
83
83
  name : string
@@ -102,7 +102,7 @@ orbital GameHudOrbital {
102
102
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
103
103
  variant : string
104
104
  dimension : "2d" | "3d"
105
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
105
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
106
106
  atlas : asset
107
107
  sprite : string
108
108
  name : string
@@ -27,7 +27,7 @@ orbital GameMenuOrbital {
27
27
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
28
28
  variant : string
29
29
  dimension : "2d" | "3d"
30
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
30
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
31
31
  atlas : asset
32
32
  sprite : string
33
33
  name : string
@@ -9,7 +9,7 @@ orbital HealthBarOrbital {
9
9
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
10
10
  variant : string
11
11
  dimension : "2d" | "3d"
12
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
12
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
13
13
  atlas : asset
14
14
  sprite : string
15
15
  name : string
@@ -23,7 +23,7 @@ orbital HealthBarOrbital {
23
23
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
24
24
  variant : string
25
25
  dimension : "2d" | "3d"
26
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
26
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
27
27
  atlas : asset
28
28
  sprite : string
29
29
  name : string
@@ -9,7 +9,7 @@ orbital ScoreDisplayOrbital {
9
9
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
10
10
  variant : string
11
11
  dimension : "2d" | "3d"
12
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
12
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
13
13
  atlas : asset
14
14
  sprite : string
15
15
  name : string
@@ -18,7 +18,7 @@ orbital SequenceBarOrbital {
18
18
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
19
19
  variant : string
20
20
  dimension : "2d" | "3d"
21
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
21
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
22
22
  atlas : asset
23
23
  sprite : string
24
24
  name : string
@@ -58,7 +58,7 @@ orbital SequenceBarOrbital {
58
58
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
59
59
  variant : string
60
60
  dimension : "2d" | "3d"
61
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
61
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
62
62
  atlas : asset
63
63
  sprite : string
64
64
  name : string
@@ -9,7 +9,7 @@ orbital StatBadgeOrbital {
9
9
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
10
10
  variant : string
11
11
  dimension : "2d" | "3d"
12
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
12
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
13
13
  atlas : asset
14
14
  sprite : string
15
15
  name : string
@@ -23,7 +23,7 @@ orbital StatBadgeOrbital {
23
23
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
24
24
  variant : string
25
25
  dimension : "2d" | "3d"
26
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
26
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
27
27
  atlas : asset
28
28
  sprite : string
29
29
  name : string
@@ -18,7 +18,7 @@ orbital TraitSlotOrbital {
18
18
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
19
19
  variant : string
20
20
  dimension : "2d" | "3d"
21
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
21
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
22
22
  atlas : asset
23
23
  sprite : string
24
24
  name : string
@@ -49,7 +49,7 @@ orbital TraitSlotOrbital {
49
49
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
50
50
  variant : string
51
51
  dimension : "2d" | "3d"
52
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
52
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
53
53
  atlas : asset
54
54
  sprite : string
55
55
  name : string
@@ -78,7 +78,7 @@ orbital TraitSlotOrbital {
78
78
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
79
79
  variant : string
80
80
  dimension : "2d" | "3d"
81
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
81
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
82
82
  atlas : asset
83
83
  sprite : string
84
84
  name : string
@@ -114,7 +114,7 @@ orbital TraitSlotOrbital {
114
114
  style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
115
115
  variant : string
116
116
  dimension : "2d" | "3d"
117
- aspect : "1:1" | "16:9" | "5:7" | "8:1"
117
+ aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
118
118
  atlas : asset
119
119
  sprite : string
120
120
  name : string
@@ -136,7 +136,7 @@ orbital TraitSlotOrbital {
136
136
 
137
137
  entity TraitSlotItem [runtime] {
138
138
  id : string!
139
- slotNumber : number = 1
139
+ slotNumber : number @intrinsic = 1
140
140
  }
141
141
 
142
142
  trait TraitSlotRender -> @rebindable TraitSlotItem [interaction, instance] {
@@ -104,13 +104,13 @@ orbital ArcadeBoard3DFrameOrbital {
104
104
  entity GameState [runtime, shared] {
105
105
  id : string!
106
106
  units : [Unit] = [
107
- { id: "hero", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "hero", name: "Hero", 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: "" } }
107
+ { id: "hero", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "hero", name: "Hero", 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: "" } }
108
108
  ]
109
109
  tiles : [Tile] = [
110
- { 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: "" } },
111
- { 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: "" } },
112
- { 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: "" } },
113
- { 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: "" } }
110
+ { 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: "" } },
111
+ { 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: "" } },
112
+ { 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: "" } },
113
+ { 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: "" } }
114
114
  ]
115
115
  movesLeft : number = 0
116
116
  features : [Feature] = []
@@ -133,13 +133,13 @@ orbital ArcadeBoard3DFrameOrbital {
133
133
  gridHeight: 2
134
134
  moveBudget: 9999
135
135
  units: [
136
- { id: "hero", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "hero", name: "Hero", 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: "" } }
136
+ { id: "hero", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 1, maxHealth: 1, unitType: "hero", name: "Hero", 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: "" } }
137
137
  ]
138
138
  tiles: [
139
- { 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: "" } },
140
- { 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: "" } },
141
- { 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: "" } },
142
- { 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: "" } }
139
+ { 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: "" } },
140
+ { 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: "" } },
141
+ { 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: "" } },
142
+ { 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: "" } }
143
143
  ]
144
144
  }
145
145
  }
@@ -96,13 +96,13 @@ orbital CrewBoard2DOrbital {
96
96
  entity GameState [runtime, shared] {
97
97
  id : string!
98
98
  units : [Unit] = [
99
- { id: "c1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "crew", name: "Crew", 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: "crew-unit", thumbnailUrl: "" } }
99
+ { id: "c1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "crew", name: "Crew", 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: "crew-unit", thumbnailUrl: "" } }
100
100
  ]
101
101
  tiles : [Tile] = [
102
- { 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: "" } },
103
- { 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: "" } },
104
- { 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: "" } },
105
- { 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: "" } }
102
+ { 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: "" } },
103
+ { 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: "" } },
104
+ { 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: "" } },
105
+ { 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: "" } }
106
106
  ]
107
107
  movesLeft : number = 0
108
108
  fx : [Fx] = []
@@ -124,12 +124,12 @@ orbital CrewBoard2DOrbital {
124
124
  gridWidth: 7
125
125
  gridHeight: 7
126
126
  moveBudget: 999999
127
- units: [ { id: "c1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "crew", name: "Crew", 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: "crew-unit", thumbnailUrl: "" } } ]
127
+ units: [ { id: "c1", position: { x: 1, y: 1 }, x: 1, y: 1, z: 0, team: "player", health: 10, maxHealth: 10, unitType: "crew", name: "Crew", 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: "crew-unit", thumbnailUrl: "" } } ]
128
128
  tiles: [
129
- { 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: "" } },
130
- { 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: "" } },
131
- { 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: "" } },
132
- { 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: "" } }
129
+ { 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: "" } },
130
+ { 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: "" } },
131
+ { 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: "" } },
132
+ { 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: "" } }
133
133
  ]
134
134
  }
135
135
  }