@almadar/std 16.152.0 → 16.153.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +5 -1
- package/behaviors/lolo/ui/core/atoms/std-browse.lolo +1 -0
- package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +56 -0
- package/behaviors/lolo/ui/core/molecules/ui-popover.lolo +39 -0
- package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +11 -0
- package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +2 -2
- package/behaviors/lolo/ui/game/molecules/ui-canvas-2d.lolo +11 -1
- package/behaviors/lolo/ui/game/molecules/ui-canvas.lolo +10 -0
- package/behaviors/lolo/ui/game/organisms/ui-fishing-board.lolo +8 -8
- package/behaviors/lolo/ui/game/organisms/ui-physics-sandbox-board.lolo +5 -5
- package/behaviors/lolo/ui/game/organisms/ui-roguelike-board.lolo +5 -5
- package/behaviors/lolo/ui/game/organisms/ui-sokoban-board.lolo +5 -5
- package/behaviors/lolo/ui/game/organisms/ui-state-architect-board.lolo +4 -4
- package/behaviors/lolo/ui/game/organisms/ui-winter-ski-board.lolo +7 -7
- package/behaviors/registry/factory-signatures.json +6211 -2181
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +16 -8
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +17 -9
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
- package/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
- package/behaviors/registry/ml/molecules/std-escalating-decision.orb +10 -5
- package/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +4 -2
- package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
- package/behaviors/registry/ui/core/atoms/std-browse.orb +4 -0
- package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
- package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
- package/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
- package/behaviors/registry/ui/core/atoms/std-gallery.orb +18 -9
- package/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
- package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +214 -0
- package/behaviors/registry/ui/core/molecules/ui-popover.orb +112 -1
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +44 -0
- package/behaviors/registry/ui/game/atoms/std-arcade-flow.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-gather.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-gold.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-market-flow.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-objective-flow.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-patience.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-production.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-round-flow.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-score.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-survival-flow.orb +1 -0
- package/behaviors/registry/ui/game/atoms/std-xp.orb +1 -0
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +2 -2
- package/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -3
- package/behaviors/registry/ui/game/molecules/ui-canvas-2d.orb +16 -1
- package/behaviors/registry/ui/game/molecules/ui-canvas.orb +14 -0
- package/behaviors/registry/ui/game/organisms/ui-fishing-board.orb +16 -16
- package/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +10 -10
- package/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +10 -10
- package/behaviors/registry/ui/game/organisms/ui-sokoban-board.orb +10 -10
- package/behaviors/registry/ui/game/organisms/ui-state-architect-board.orb +8 -8
- package/behaviors/registry/ui/game/organisms/ui-winter-ski-board.orb +14 -14
- package/dist/behaviors/behaviors-embeddings.json +384 -380
- package/dist/behaviors/behaviors-registry.json +535 -8
- package/dist/behaviors/exports-reader.js +3409 -3101
- package/dist/behaviors/functions/index.d.ts +596 -5
- package/dist/behaviors/functions/index.js +3389 -3102
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +3410 -3102
- package/dist/behaviors/knob-embeddings.json +1 -1
- package/dist/behaviors/query.js +3409 -3101
- package/dist/behaviors/registry/factory-signatures.json +6211 -2181
- package/dist/behaviors/registry/infra/atoms/std-approval-gate.orb +16 -8
- package/dist/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
- package/dist/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
- package/dist/behaviors/registry/infra/atoms/std-data-erasure.orb +17 -9
- package/dist/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
- package/dist/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
- package/dist/behaviors/registry/ml/molecules/std-escalating-decision.orb +10 -5
- package/dist/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +4 -2
- package/dist/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
- package/dist/behaviors/registry/ui/core/atoms/std-browse.orb +4 -0
- package/dist/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
- package/dist/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
- package/dist/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
- package/dist/behaviors/registry/ui/core/atoms/std-gallery.orb +18 -9
- package/dist/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
- package/dist/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +214 -0
- package/dist/behaviors/registry/ui/core/molecules/ui-popover.orb +112 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-table-view.orb +44 -0
- package/dist/behaviors/registry/ui/game/atoms/std-arcade-flow.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-gather.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-gold.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-market-flow.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-objective-flow.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-patience.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-production.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-round-flow.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-score.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-survival-flow.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/std-xp.orb +1 -0
- package/dist/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +2 -2
- package/dist/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -3
- package/dist/behaviors/registry/ui/game/molecules/ui-canvas-2d.orb +16 -1
- package/dist/behaviors/registry/ui/game/molecules/ui-canvas.orb +14 -0
- package/dist/behaviors/registry/ui/game/organisms/ui-fishing-board.orb +16 -16
- package/dist/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +10 -10
- package/dist/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +10 -10
- package/dist/behaviors/registry/ui/game/organisms/ui-sokoban-board.orb +10 -10
- package/dist/behaviors/registry/ui/game/organisms/ui-state-architect-board.orb +8 -8
- package/dist/behaviors/registry/ui/game/organisms/ui-winter-ski-board.orb +14 -14
- package/dist/behaviors-embeddings.json +384 -380
- package/dist/behaviors-registry.json +535 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3410 -3102
- package/dist/knob-embeddings.json +1 -1
- package/dist/registry/factory-signatures.json +6211 -2181
- package/package.json +2 -2
|
@@ -211,7 +211,11 @@ orbital DataErasureOrbital {
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
state browsing {
|
|
214
|
-
|
|
214
|
+
;; Stays in `browsing`: this persist's result arms (ErasureSaved /
|
|
215
|
+
;; ErasureSaveFailed) are declared here. Leaving for `loading` landed the
|
|
216
|
+
;; save on a deaf state and wedged the panel on its spinner — the
|
|
217
|
+
;; ErasureSaved arm below is what moves to `loading` to re-fetch.
|
|
218
|
+
CANCEL_ERASURE -> browsing
|
|
215
219
|
(set @entity.id ?id)
|
|
216
220
|
(set @entity.status cancelled)
|
|
217
221
|
(persist update ErasureRequest @entity {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
app ui-emoji-picker "1.0.0"
|
|
2
|
+
"EmojiPicker — UI factory (1:1 with the @almadar/ui emoji-picker pattern)."
|
|
3
|
+
orbital EmojiPickerOrbital {
|
|
4
|
+
entity EmojiPickerItem [runtime] {
|
|
5
|
+
id : string!
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
trait EmojiPickerRender -> @rebindable EmojiPickerItem [interaction, instance] {
|
|
9
|
+
initial: idle
|
|
10
|
+
|
|
11
|
+
state idle {
|
|
12
|
+
INIT -> idle
|
|
13
|
+
(render-ui main {
|
|
14
|
+
pickEvent: @config.pickEvent
|
|
15
|
+
position: @config.position
|
|
16
|
+
triggerIcon: @config.triggerIcon
|
|
17
|
+
triggerLabel: @config.triggerLabel
|
|
18
|
+
className: @config.className
|
|
19
|
+
type: emoji-picker
|
|
20
|
+
})
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
emits {
|
|
24
|
+
@config.pickEvent -> external {
|
|
25
|
+
id : string
|
|
26
|
+
}
|
|
27
|
+
@description "Declarative event name — picking an emoji emits UI:{pickEvent} with { emoji } via eventBus"
|
|
28
|
+
@tier "essential"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
config {
|
|
32
|
+
pickEvent : string = "PICK"
|
|
33
|
+
@label "Pick Event"
|
|
34
|
+
@description "Declarative event name — picking an emoji emits UI:{pickEvent} with { emoji } via eventBus"
|
|
35
|
+
@tier "presentation"
|
|
36
|
+
position : "top" | "bottom" = top
|
|
37
|
+
@label "Position"
|
|
38
|
+
@description "Which side of the trigger the panel opens on"
|
|
39
|
+
@tier "presentation"
|
|
40
|
+
triggerIcon : icon
|
|
41
|
+
@label "Trigger Icon"
|
|
42
|
+
@description "Icon shown on the trigger button"
|
|
43
|
+
@tier "presentation"
|
|
44
|
+
triggerLabel : string = "Add emoji"
|
|
45
|
+
@label "Trigger Label"
|
|
46
|
+
@description "Accessible label for the trigger button"
|
|
47
|
+
@tier "presentation"
|
|
48
|
+
className : string
|
|
49
|
+
@label "Class Name"
|
|
50
|
+
@description "Additional CSS classes applied to the trigger button"
|
|
51
|
+
@tier "presentation"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
page "/emoji-picker" as EmojiPickerPage -> EmojiPickerRender
|
|
56
|
+
}
|
|
@@ -3,6 +3,7 @@ app ui-popover "1.0.0"
|
|
|
3
3
|
orbital PopoverOrbital {
|
|
4
4
|
entity PopoverItem [runtime] {
|
|
5
5
|
id : string!
|
|
6
|
+
open : boolean
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
trait PopoverRender -> @rebindable PopoverItem [interaction, instance] {
|
|
@@ -10,15 +11,45 @@ orbital PopoverOrbital {
|
|
|
10
11
|
|
|
11
12
|
state idle {
|
|
12
13
|
INIT -> idle
|
|
14
|
+
(set @entity.open @config.open)
|
|
13
15
|
(render-ui main {
|
|
14
16
|
content: @config.content
|
|
15
17
|
children: @config.children
|
|
16
18
|
position: @config.position
|
|
17
19
|
trigger: @config.trigger
|
|
18
20
|
showArrow: @config.showArrow
|
|
21
|
+
open: @entity.open
|
|
22
|
+
onOpenChange: @config.onOpenChange
|
|
19
23
|
className: @config.className
|
|
20
24
|
type: popover
|
|
21
25
|
})
|
|
26
|
+
OPEN_CHANGE -> idle
|
|
27
|
+
(set @entity.open ?open)
|
|
28
|
+
(render-ui main {
|
|
29
|
+
content: @config.content
|
|
30
|
+
children: @config.children
|
|
31
|
+
position: @config.position
|
|
32
|
+
trigger: @config.trigger
|
|
33
|
+
showArrow: @config.showArrow
|
|
34
|
+
open: @entity.open
|
|
35
|
+
onOpenChange: @config.onOpenChange
|
|
36
|
+
className: @config.className
|
|
37
|
+
type: popover
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
emits {
|
|
42
|
+
@config.onOpenChange -> external {
|
|
43
|
+
open : boolean
|
|
44
|
+
}
|
|
45
|
+
@description "Fired when the popover wants to change visibility (trigger click, outside click)"
|
|
46
|
+
@tier "essential"
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
listens {
|
|
50
|
+
OPEN_CHANGE {
|
|
51
|
+
open : boolean
|
|
52
|
+
}
|
|
22
53
|
}
|
|
23
54
|
|
|
24
55
|
config {
|
|
@@ -42,6 +73,14 @@ orbital PopoverOrbital {
|
|
|
42
73
|
@label "Show Arrow"
|
|
43
74
|
@description "Show arrow"
|
|
44
75
|
@tier "presentation"
|
|
76
|
+
open : boolean
|
|
77
|
+
@label "Open"
|
|
78
|
+
@description "Controlled open state. When set, the host owns visibility and the popover reports intent through onOpenChange instead of toggling itself."
|
|
79
|
+
@tier "presentation"
|
|
80
|
+
onOpenChange : string = "OPEN_CHANGE"
|
|
81
|
+
@label "On Open Change"
|
|
82
|
+
@description "Fired when the popover wants to change visibility (trigger click, outside click)"
|
|
83
|
+
@tier "presentation"
|
|
45
84
|
className : string
|
|
46
85
|
@label "Class Name"
|
|
47
86
|
@description "Additional CSS classes"
|
|
@@ -66,6 +66,7 @@ orbital TableViewOrbital {
|
|
|
66
66
|
fields: @config.fields
|
|
67
67
|
itemActions: @config.itemActions
|
|
68
68
|
maxInlineActions: @config.maxInlineActions
|
|
69
|
+
itemClickEvent: @config.itemClickEvent
|
|
69
70
|
selectable: @config.selectable
|
|
70
71
|
selectEvent: @config.selectEvent
|
|
71
72
|
selectedIds: @config.selectedIds
|
|
@@ -96,6 +97,7 @@ orbital TableViewOrbital {
|
|
|
96
97
|
fields: @config.fields
|
|
97
98
|
itemActions: @config.itemActions
|
|
98
99
|
maxInlineActions: @config.maxInlineActions
|
|
100
|
+
itemClickEvent: @config.itemClickEvent
|
|
99
101
|
selectable: @config.selectable
|
|
100
102
|
selectEvent: @config.selectEvent
|
|
101
103
|
selectedIds: @config.selectedIds
|
|
@@ -114,6 +116,11 @@ orbital TableViewOrbital {
|
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
emits {
|
|
119
|
+
@config.itemClickEvent -> external {
|
|
120
|
+
id : string
|
|
121
|
+
}
|
|
122
|
+
@description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract."
|
|
123
|
+
@tier "essential"
|
|
117
124
|
@config.selectEvent -> external {
|
|
118
125
|
id : string
|
|
119
126
|
}
|
|
@@ -184,6 +191,10 @@ orbital TableViewOrbital {
|
|
|
184
191
|
@label "Max Inline Actions"
|
|
185
192
|
@description "Max inline action buttons before the rest collapse into a '⋯' overflow menu. Omit = all inline."
|
|
186
193
|
@tier "presentation"
|
|
194
|
+
itemClickEvent : string = "ITEM_CLICK"
|
|
195
|
+
@label "Item Click Event"
|
|
196
|
+
@description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract."
|
|
197
|
+
@tier "presentation"
|
|
187
198
|
selectable : boolean = false
|
|
188
199
|
@label "Selectable"
|
|
189
200
|
@description "Render a leading checkbox column. Selection changes emit `selectEvent`."
|
|
@@ -61,11 +61,11 @@ orbital DrawSpriteOrbital {
|
|
|
61
61
|
@tier "presentation"
|
|
62
62
|
width : number
|
|
63
63
|
@label "Width"
|
|
64
|
-
@description "Draw width in world units (fractions of `projector.tileWidth`)
|
|
64
|
+
@description "Draw width in world units (fractions of `projector.tileWidth`). Omitted → one cell on tile grids (`flat`/`iso`/`hex`); native source px on `free`/`side`."
|
|
65
65
|
@tier "presentation"
|
|
66
66
|
height : number
|
|
67
67
|
@label "Height"
|
|
68
|
-
@description "Draw height in world units (fractions of `projector.tileWidth`)
|
|
68
|
+
@description "Draw height in world units (fractions of `projector.tileWidth`). Omitted → one cell on tile grids (`flat`/`iso`/`hex`); native source px on `free`/`side`."
|
|
69
69
|
@tier "presentation"
|
|
70
70
|
frame : json = {}
|
|
71
71
|
@label "Frame"
|
|
@@ -42,6 +42,8 @@ orbital Canvas2dOrbital {
|
|
|
42
42
|
keyUpMap: @config.keyUpMap
|
|
43
43
|
camera: @config.camera
|
|
44
44
|
scale: @config.scale
|
|
45
|
+
tileWidth: @config.tileWidth
|
|
46
|
+
fit: @config.fit
|
|
45
47
|
showMinimap: @config.showMinimap
|
|
46
48
|
followTarget: @config.followTarget
|
|
47
49
|
cameraPos: @config.cameraPos
|
|
@@ -130,7 +132,15 @@ orbital Canvas2dOrbital {
|
|
|
130
132
|
@tier "presentation"
|
|
131
133
|
scale : number = 0.4
|
|
132
134
|
@label "Scale"
|
|
133
|
-
@description "Render scale (
|
|
135
|
+
@description "Render scale, legacy-squared semantics: on-screen cell ≈ `256 × scale²` px (the authored contract every board tuned its value for). Converted internally to the single camera zoom against the board's native tile width, so the cell pitch follows the asset while the on-screen size stays as authored. Ignored when `fit` is on; passed through raw for `free`/`side` (world-pixel-direct)."
|
|
136
|
+
@tier "presentation"
|
|
137
|
+
tileWidth : number
|
|
138
|
+
@label "Tile Width"
|
|
139
|
+
@description "Native tile/cell width in source px for this board's asset (e.g. 16 for Kenney tiny-dungeon, ~128 for iso blocks). The grid cell pitch follows the asset, so tile textures map 1:1 (crisp, no stretch). Defaults to the detected atlas tile width, else 256."
|
|
140
|
+
@tier "presentation"
|
|
141
|
+
fit : boolean = false
|
|
142
|
+
@label "Fit"
|
|
143
|
+
@description "Auto-fit the board's grid extent to the viewport (default false — boards render at their authored `scale` and overflow → pan). Opt in for whole-board-overview boards. User wheel/pinch zoom always wins after the initial fit."
|
|
134
144
|
@tier "presentation"
|
|
135
145
|
showMinimap : boolean = true
|
|
136
146
|
@label "Show Minimap"
|
|
@@ -19,6 +19,8 @@ orbital CanvasOrbital {
|
|
|
19
19
|
isLoading: @config.isLoading
|
|
20
20
|
unitScale: @config.unitScale
|
|
21
21
|
showMinimap: @config.showMinimap
|
|
22
|
+
fit: @config.fit
|
|
23
|
+
tileWidth: @config.tileWidth
|
|
22
24
|
backgroundImage: @config.backgroundImage
|
|
23
25
|
backgroundColor: @config.backgroundColor
|
|
24
26
|
worldWidth: @config.worldWidth
|
|
@@ -104,6 +106,14 @@ orbital CanvasOrbital {
|
|
|
104
106
|
@label "Show Minimap"
|
|
105
107
|
@description "Minimap overlay (2D)."
|
|
106
108
|
@tier "presentation"
|
|
109
|
+
fit : boolean
|
|
110
|
+
@label "Fit"
|
|
111
|
+
@description "Auto-fit the board's grid extent to the viewport (2D grid layouts; default false — boards render at their authored `camera.zoom` scale)."
|
|
112
|
+
@tier "presentation"
|
|
113
|
+
tileWidth : number
|
|
114
|
+
@label "Tile Width"
|
|
115
|
+
@description "Native tile/cell width in source px of the board's asset (2D grid layouts; defaults to the detected atlas tile width, else 256)."
|
|
116
|
+
@tier "presentation"
|
|
107
117
|
backgroundImage : asset
|
|
108
118
|
@label "Background Image"
|
|
109
119
|
@description "Backdrop image (2D iso/hex/flat/free/side)."
|
|
@@ -127,7 +127,7 @@ orbital FishingBoardOrbital {
|
|
|
127
127
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: CAST, label: "Cast", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cast", thumbnailUrl: "" }, variant: primary }, { type: button, action: REEL, label: "Reel", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reel", thumbnailUrl: "" }, variant: primary } ] }
|
|
128
128
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
129
129
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
130
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
130
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
131
131
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
132
132
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
133
133
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -149,7 +149,7 @@ orbital FishingBoardOrbital {
|
|
|
149
149
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: CAST, label: "Cast", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cast", thumbnailUrl: "" }, variant: primary }, { type: button, action: REEL, label: "Reel", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reel", thumbnailUrl: "" }, variant: primary } ] }
|
|
150
150
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
151
151
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
152
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
152
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
153
153
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
154
154
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
155
155
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -176,7 +176,7 @@ orbital FishingBoardOrbital {
|
|
|
176
176
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: CAST, label: "Cast", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cast", thumbnailUrl: "" }, variant: primary }, { type: button, action: REEL, label: "Reel", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reel", thumbnailUrl: "" }, variant: primary } ] }
|
|
177
177
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
178
178
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
179
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
179
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
180
180
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
181
181
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
182
182
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -196,7 +196,7 @@ orbital FishingBoardOrbital {
|
|
|
196
196
|
overlay: { type: game-menu, title: "VICTORY", subtitle: (str/concat "Full net! Score: " @entity.score), options: [ { id: "again", label: "Play Again", event: "PLAY_AGAIN", variant: "primary" } ] }
|
|
197
197
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
198
198
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
199
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
199
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
200
200
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
201
201
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
202
202
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -224,7 +224,7 @@ orbital FishingBoardOrbital {
|
|
|
224
224
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: CAST, label: "Cast", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cast", thumbnailUrl: "" }, variant: primary }, { type: button, action: REEL, label: "Reel", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reel", thumbnailUrl: "" }, variant: primary } ] }
|
|
225
225
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
226
226
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
227
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
227
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
228
228
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
229
229
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
230
230
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -251,7 +251,7 @@ orbital FishingBoardOrbital {
|
|
|
251
251
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: CAST, label: "Cast", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cast", thumbnailUrl: "" }, variant: primary }, { type: button, action: REEL, label: "Reel", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reel", thumbnailUrl: "" }, variant: primary } ] }
|
|
252
252
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
253
253
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
254
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
254
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
255
255
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
256
256
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
257
257
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -275,7 +275,7 @@ orbital FishingBoardOrbital {
|
|
|
275
275
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: CAST, label: "Cast", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cast", thumbnailUrl: "" }, variant: primary }, { type: button, action: REEL, label: "Reel", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reel", thumbnailUrl: "" }, variant: primary } ] }
|
|
276
276
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
277
277
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
278
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
278
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
279
279
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
280
280
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
281
281
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -295,7 +295,7 @@ orbital FishingBoardOrbital {
|
|
|
295
295
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: CAST, label: "Cast", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cast", thumbnailUrl: "" }, variant: primary }, { type: button, action: REEL, label: "Reel", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector", variant: "", dimension: "2d", aspect: "1:1", name: "icon-reel", thumbnailUrl: "" }, variant: primary } ] }
|
|
296
296
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, children: [
|
|
297
297
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
298
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
298
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
299
299
|
{ type: draw-sprite-layer, items: (array/map @config.features (fn f { type: draw-sprite, position: { x: (object/get @f x), y: (object/get @f y) }, asset: (object/get @f sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
300
300
|
{ type: draw-sprite-layer, items: (array/map @entity.units (fn u { type: draw-sprite, position: (object/get @u position), asset: (object/get @u sprite), anchor: "ground", width: 0.5, height: 0.5 })) }
|
|
301
301
|
{ type: draw-shape-layer, items: (array/map @entity.units (fn u { type: draw-shape, shape: "rect", position: (object/get @u position), anchor: "ground", offsetX: -0.25, offsetY: -0.6, width: 0.5, height: 0.12, fill: "rgba(0,0,0,0.6)" })) }
|
|
@@ -79,7 +79,7 @@ orbital PhysicsSandboxBoardOrbital {
|
|
|
79
79
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: SPAWN, label: "Spawn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-spawn", thumbnailUrl: "" }, variant: primary }, { type: button, action: CYCLE_KIND, label: "Cycle Kind", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cycle-kind", thumbnailUrl: "" }, variant: secondary }, { type: button, action: CLEAR, label: "Clear", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "zoom_reset.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-clear", thumbnailUrl: "" }, variant: secondary } ] }
|
|
80
80
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, keyMap: { Space: "SPAWN" }, children: [
|
|
81
81
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
82
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
82
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
83
83
|
{ type: draw-sprite-layer, items: (array/map @entity.blocks (fn b { type: draw-sprite, position: { x: (object/get @b x), y: (object/get @b y) }, asset: (object/get @b sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
84
84
|
] } ]
|
|
85
85
|
})
|
|
@@ -97,7 +97,7 @@ orbital PhysicsSandboxBoardOrbital {
|
|
|
97
97
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: SPAWN, label: "Spawn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-spawn", thumbnailUrl: "" }, variant: primary }, { type: button, action: CYCLE_KIND, label: "Cycle Kind", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cycle-kind", thumbnailUrl: "" }, variant: secondary }, { type: button, action: CLEAR, label: "Clear", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "zoom_reset.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-clear", thumbnailUrl: "" }, variant: secondary } ] }
|
|
98
98
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, keyMap: { Space: "SPAWN" }, children: [
|
|
99
99
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
100
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
100
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
101
101
|
{ type: draw-sprite-layer, items: (array/map @entity.blocks (fn b { type: draw-sprite, position: { x: (object/get @b x), y: (object/get @b y) }, asset: (object/get @b sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
102
102
|
] } ]
|
|
103
103
|
})
|
|
@@ -113,7 +113,7 @@ orbital PhysicsSandboxBoardOrbital {
|
|
|
113
113
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: SPAWN, label: "Spawn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-spawn", thumbnailUrl: "" }, variant: primary }, { type: button, action: CYCLE_KIND, label: "Cycle Kind", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cycle-kind", thumbnailUrl: "" }, variant: secondary }, { type: button, action: CLEAR, label: "Clear", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "zoom_reset.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-clear", thumbnailUrl: "" }, variant: secondary } ] }
|
|
114
114
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, keyMap: { Space: "SPAWN" }, children: [
|
|
115
115
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
116
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
116
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
117
117
|
{ type: draw-sprite-layer, items: (array/map @entity.blocks (fn b { type: draw-sprite, position: { x: (object/get @b x), y: (object/get @b y) }, asset: (object/get @b sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
118
118
|
] } ]
|
|
119
119
|
})
|
|
@@ -133,7 +133,7 @@ orbital PhysicsSandboxBoardOrbital {
|
|
|
133
133
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: SPAWN, label: "Spawn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-spawn", thumbnailUrl: "" }, variant: primary }, { type: button, action: CYCLE_KIND, label: "Cycle Kind", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cycle-kind", thumbnailUrl: "" }, variant: secondary }, { type: button, action: CLEAR, label: "Clear", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "zoom_reset.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-clear", thumbnailUrl: "" }, variant: secondary } ] }
|
|
134
134
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, keyMap: { Space: "SPAWN" }, children: [
|
|
135
135
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
136
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
136
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
137
137
|
{ type: draw-sprite-layer, items: (array/map @entity.blocks (fn b { type: draw-sprite, position: { x: (object/get @b x), y: (object/get @b y) }, asset: (object/get @b sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
138
138
|
] } ]
|
|
139
139
|
})
|
|
@@ -156,7 +156,7 @@ orbital PhysicsSandboxBoardOrbital {
|
|
|
156
156
|
addons: { type: stack, direction: vertical, gap: sm, children: [ { type: button, action: SPAWN, label: "Spawn", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-emote-pack/ui/vector_style1.json", sprite: "emote_drop.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-spawn", thumbnailUrl: "" }, variant: primary }, { type: button, action: CYCLE_KIND, label: "Cycle Kind", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "rotate_cw.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-cycle-kind", thumbnailUrl: "" }, variant: secondary }, { type: button, action: CLEAR, label: "Clear", iconAsset: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-cursor-pack/ui/kenney-cursor-pack.generated.json", sprite: "zoom_reset.png", role: "ui", category: "ui", animations: ["static"], style: "vector-flat", variant: "", dimension: "2d", aspect: "1:1", name: "icon-clear", thumbnailUrl: "" }, variant: secondary } ] }
|
|
157
157
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @config.tiles "x") (array/max @config.tiles "y"))))), pos: { x: (/ (+ (array/min @config.tiles "x") (array/max @config.tiles "x")) 2), y: (/ (+ (array/min @config.tiles "y") (array/max @config.tiles "y")) 2) } }, projection: "flat", showMinimap: false, keyMap: { Space: "SPAWN" }, children: [
|
|
158
158
|
{ type: draw-shape-layer, items: (array/map @config.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
159
|
-
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
159
|
+
{ type: draw-sprite-layer, items: (array/map @config.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
160
160
|
{ type: draw-sprite-layer, items: (array/map @entity.blocks (fn b { type: draw-sprite, position: { x: (object/get @b x), y: (object/get @b y) }, asset: (object/get @b sprite), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
161
161
|
] } ]
|
|
162
162
|
})
|
|
@@ -127,7 +127,7 @@ orbital RoguelikeBoardOrbital {
|
|
|
127
127
|
controls: { type: control-grid, kind: "dpad", directionEvents: { up: "MOVE_UP", down: "MOVE_DOWN", left: "MOVE_LEFT", right: "MOVE_RIGHT" }, directionAssets: { up: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "30,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-up", thumbnailUrl: "" }, down: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "32,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-down", thumbnailUrl: "" }, left: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "33,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-left", thumbnailUrl: "" }, right: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "31,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-right", thumbnailUrl: "" } } }
|
|
128
128
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @entity.tiles "x") (array/max @entity.tiles "y"))))), pos: { x: (/ (+ (array/min @entity.tiles "x") (array/max @entity.tiles "x")) 2), y: (/ (+ (array/min @entity.tiles "y") (array/max @entity.tiles "y")) 2) } }, projection: "flat", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, keyMap: { ArrowUp: "MOVE_UP", KeyW: "MOVE_UP", ArrowDown: "MOVE_DOWN", KeyS: "MOVE_DOWN", ArrowLeft: "MOVE_LEFT", KeyA: "MOVE_LEFT", ArrowRight: "MOVE_RIGHT", KeyD: "MOVE_RIGHT" }, children: [
|
|
129
129
|
{ type: draw-shape-layer, items: (array/map @entity.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
130
|
-
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
130
|
+
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
131
131
|
{ type: draw-sprite-layer, items: (array/map @entity.items (fn i { type: draw-sprite, position: { x: (object/get @i x), y: (object/get @i y) }, asset: (if (== (object/get @i kind) "health_potion") (object/get (object/get @config.assetManifest features) health_potion) (if (== (object/get @i kind) "sword") (object/get (object/get @config.assetManifest features) sword) (object/get (object/get @config.assetManifest features) shield))), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
132
132
|
{ type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
|
|
133
133
|
{ type: draw-shape-layer, items: (array/map (array/filter (array/append (array/map @entity.enemies (fn e { id: @e.id, x: @e.x, y: @e.y })) { id: "player", x: (object/get @entity.player x), y: (object/get @entity.player y) }) (fn u (== (object/get @u id) @entity.selectedUnitId))) (fn u { type: draw-shape, shape: "ellipse", position: { x: (object/get @u x), y: (object/get @u y) }, radiusX: 0.5, radiusY: 0.2, stroke: "rgba(0,200,255,0.8)", strokeWidth: 3 })) }
|
|
@@ -359,7 +359,7 @@ orbital RoguelikeBoardOrbital {
|
|
|
359
359
|
controls: { type: control-grid, kind: "dpad", directionEvents: { up: "MOVE_UP", down: "MOVE_DOWN", left: "MOVE_LEFT", right: "MOVE_RIGHT" }, directionAssets: { up: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "30,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-up", thumbnailUrl: "" }, down: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "32,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-down", thumbnailUrl: "" }, left: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "33,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-left", thumbnailUrl: "" }, right: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "31,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-right", thumbnailUrl: "" } } }
|
|
360
360
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @entity.tiles "x") (array/max @entity.tiles "y"))))), pos: { x: (/ (+ (array/min @entity.tiles "x") (array/max @entity.tiles "x")) 2), y: (/ (+ (array/min @entity.tiles "y") (array/max @entity.tiles "y")) 2) } }, projection: "flat", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, keyMap: { ArrowUp: "MOVE_UP", KeyW: "MOVE_UP", ArrowDown: "MOVE_DOWN", KeyS: "MOVE_DOWN", ArrowLeft: "MOVE_LEFT", KeyA: "MOVE_LEFT", ArrowRight: "MOVE_RIGHT", KeyD: "MOVE_RIGHT" }, children: [
|
|
361
361
|
{ type: draw-shape-layer, items: (array/map @entity.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
362
|
-
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
362
|
+
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
363
363
|
{ type: draw-sprite-layer, items: (array/map @entity.items (fn i { type: draw-sprite, position: { x: (object/get @i x), y: (object/get @i y) }, asset: (if (== (object/get @i kind) "health_potion") (object/get (object/get @config.assetManifest features) health_potion) (if (== (object/get @i kind) "sword") (object/get (object/get @config.assetManifest features) sword) (object/get (object/get @config.assetManifest features) shield))), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
364
364
|
{ type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
|
|
365
365
|
{ type: draw-shape-layer, items: (array/map (array/filter (array/append (array/map @entity.enemies (fn e { id: @e.id, x: @e.x, y: @e.y })) { id: "player", x: (object/get @entity.player x), y: (object/get @entity.player y) }) (fn u (== (object/get @u id) @entity.selectedUnitId))) (fn u { type: draw-shape, shape: "ellipse", position: { x: (object/get @u x), y: (object/get @u y) }, radiusX: 0.5, radiusY: 0.2, stroke: "rgba(0,200,255,0.8)", strokeWidth: 3 })) }
|
|
@@ -381,7 +381,7 @@ orbital RoguelikeBoardOrbital {
|
|
|
381
381
|
overlay: { type: game-menu, title: (if (== @entity.result "won") "VICTORY" "DEFEAT"), subtitle: (if (== @entity.result "won") "Depth 5 conquered" "The dungeon claims another hero"), options: [ { id: "again", label: "Play Again", event: "PLAY_AGAIN", variant: "primary" } ] }
|
|
382
382
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @entity.tiles "x") (array/max @entity.tiles "y"))))), pos: { x: (/ (+ (array/min @entity.tiles "x") (array/max @entity.tiles "x")) 2), y: (/ (+ (array/min @entity.tiles "y") (array/max @entity.tiles "y")) 2) } }, projection: "flat", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, keyMap: { ArrowUp: "MOVE_UP", KeyW: "MOVE_UP", ArrowDown: "MOVE_DOWN", KeyS: "MOVE_DOWN", ArrowLeft: "MOVE_LEFT", KeyA: "MOVE_LEFT", ArrowRight: "MOVE_RIGHT", KeyD: "MOVE_RIGHT" }, children: [
|
|
383
383
|
{ type: draw-shape-layer, items: (array/map @entity.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
384
|
-
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
384
|
+
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
385
385
|
{ type: draw-sprite-layer, items: (array/map @entity.items (fn i { type: draw-sprite, position: { x: (object/get @i x), y: (object/get @i y) }, asset: (if (== (object/get @i kind) "health_potion") (object/get (object/get @config.assetManifest features) health_potion) (if (== (object/get @i kind) "sword") (object/get (object/get @config.assetManifest features) sword) (object/get (object/get @config.assetManifest features) shield))), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
386
386
|
{ type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
|
|
387
387
|
{ type: draw-shape-layer, items: (array/map (array/filter (array/append (array/map @entity.enemies (fn e { id: @e.id, x: @e.x, y: @e.y })) { id: "player", x: (object/get @entity.player x), y: (object/get @entity.player y) }) (fn u (== (object/get @u id) @entity.selectedUnitId))) (fn u { type: draw-shape, shape: "ellipse", position: { x: (object/get @u x), y: (object/get @u y) }, radiusX: 0.5, radiusY: 0.2, stroke: "rgba(0,200,255,0.8)", strokeWidth: 3 })) }
|
|
@@ -427,7 +427,7 @@ orbital RoguelikeBoardOrbital {
|
|
|
427
427
|
controls: { type: control-grid, kind: "dpad", directionEvents: { up: "MOVE_UP", down: "MOVE_DOWN", left: "MOVE_LEFT", right: "MOVE_RIGHT" }, directionAssets: { up: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "30,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-up", thumbnailUrl: "" }, down: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "32,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-down", thumbnailUrl: "" }, left: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "33,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-left", thumbnailUrl: "" }, right: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "31,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-right", thumbnailUrl: "" } } }
|
|
428
428
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @entity.tiles "x") (array/max @entity.tiles "y"))))), pos: { x: (/ (+ (array/min @entity.tiles "x") (array/max @entity.tiles "x")) 2), y: (/ (+ (array/min @entity.tiles "y") (array/max @entity.tiles "y")) 2) } }, projection: "flat", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, keyMap: { ArrowUp: "MOVE_UP", KeyW: "MOVE_UP", ArrowDown: "MOVE_DOWN", KeyS: "MOVE_DOWN", ArrowLeft: "MOVE_LEFT", KeyA: "MOVE_LEFT", ArrowRight: "MOVE_RIGHT", KeyD: "MOVE_RIGHT" }, children: [
|
|
429
429
|
{ type: draw-shape-layer, items: (array/map @entity.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
430
|
-
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
430
|
+
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
431
431
|
{ type: draw-sprite-layer, items: (array/map @entity.items (fn i { type: draw-sprite, position: { x: (object/get @i x), y: (object/get @i y) }, asset: (if (== (object/get @i kind) "health_potion") (object/get (object/get @config.assetManifest features) health_potion) (if (== (object/get @i kind) "sword") (object/get (object/get @config.assetManifest features) sword) (object/get (object/get @config.assetManifest features) shield))), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
432
432
|
{ type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
|
|
433
433
|
{ type: draw-shape-layer, items: (array/map (array/filter (array/append (array/map @entity.enemies (fn e { id: @e.id, x: @e.x, y: @e.y })) { id: "player", x: (object/get @entity.player x), y: (object/get @entity.player y) }) (fn u (== (object/get @u id) @entity.selectedUnitId))) (fn u { type: draw-shape, shape: "ellipse", position: { x: (object/get @u x), y: (object/get @u y) }, radiusX: 0.5, radiusY: 0.2, stroke: "rgba(0,200,255,0.8)", strokeWidth: 3 })) }
|
|
@@ -452,7 +452,7 @@ orbital RoguelikeBoardOrbital {
|
|
|
452
452
|
controls: { type: control-grid, kind: "dpad", directionEvents: { up: "MOVE_UP", down: "MOVE_DOWN", left: "MOVE_LEFT", right: "MOVE_RIGHT" }, directionAssets: { up: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "30,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-up", thumbnailUrl: "" }, down: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "32,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-down", thumbnailUrl: "" }, left: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "33,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-left", thumbnailUrl: "" }, right: { url: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/tilemap_packed.png", atlas: "https://almadar-kflow-assets.web.app/shared/_shared/kenney-input-prompts-pixel-16/terrain/Tilemap_tilemap_packed.tiles.json", sprite: "31,4", role: "ui", category: "ui", animations: [], style: "pixel", variant: "", dimension: "2d", aspect: "1:1", name: "key-right", thumbnailUrl: "" } } }
|
|
453
453
|
children: [ { type: canvas, camera: { zoom: (math/min 1 (/ 5 (+ 1 (math/max (array/max @entity.tiles "x") (array/max @entity.tiles "y"))))), pos: { x: (/ (+ (array/min @entity.tiles "x") (array/max @entity.tiles "x")) 2), y: (/ (+ (array/min @entity.tiles "y") (array/max @entity.tiles "y")) 2) } }, projection: "flat", showMinimap: true, tileClickEvent: TILE_CLICK, unitClickEvent: UNIT_CLICK, keyMap: { ArrowUp: "MOVE_UP", KeyW: "MOVE_UP", ArrowDown: "MOVE_DOWN", KeyS: "MOVE_DOWN", ArrowLeft: "MOVE_LEFT", KeyA: "MOVE_LEFT", ArrowRight: "MOVE_RIGHT", KeyD: "MOVE_RIGHT" }, children: [
|
|
454
454
|
{ type: draw-shape-layer, items: (array/map @entity.tiles (fn t { type: draw-shape, shape: "cell", position: { x: (object/get @t x), y: (object/get @t y) }, fill: "#5c94fc", stroke: "rgba(255,255,255,0.35)", strokeWidth: 1 })) }
|
|
455
|
-
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width:
|
|
455
|
+
{ type: draw-sprite-layer, items: (array/map @entity.tiles (fn t { type: draw-sprite, position: { x: (object/get @t x), y: (object/get @t y) }, asset: (object/get @t terrainSprite), anchor: "center", width: 1, height: 1 })) }
|
|
456
456
|
{ type: draw-sprite-layer, items: (array/map @entity.items (fn i { type: draw-sprite, position: { x: (object/get @i x), y: (object/get @i y) }, asset: (if (== (object/get @i kind) "health_potion") (object/get (object/get @config.assetManifest features) health_potion) (if (== (object/get @i kind) "sword") (object/get (object/get @config.assetManifest features) sword) (object/get (object/get @config.assetManifest features) shield))), anchor: "center", width: 0.5, height: 0.5 })) }
|
|
457
457
|
{ type: draw-shape-layer, items: (array/map @entity.validMoves (fn m { type: draw-shape, shape: "cell", position: { x: (object/get @m x), y: (object/get @m y) }, fill: "rgba(74,222,128,0.4)" })) }
|
|
458
458
|
{ type: draw-shape-layer, items: (array/map (array/filter (array/append (array/map @entity.enemies (fn e { id: @e.id, x: @e.x, y: @e.y })) { id: "player", x: (object/get @entity.player x), y: (object/get @entity.player y) }) (fn u (== (object/get @u id) @entity.selectedUnitId))) (fn u { type: draw-shape, shape: "ellipse", position: { x: (object/get @u x), y: (object/get @u y) }, radiusX: 0.5, radiusY: 0.2, stroke: "rgba(0,200,255,0.8)", strokeWidth: 3 })) }
|