@almadar/std 3.1.0 → 3.1.2

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 (256) hide show
  1. package/behaviors/exports/atoms/std-async.orb +2 -1
  2. package/behaviors/exports/atoms/std-browse.orb +2 -1
  3. package/behaviors/exports/atoms/std-cache-aside.orb +2 -1
  4. package/behaviors/exports/atoms/std-circuit-breaker.orb +2 -1
  5. package/behaviors/exports/atoms/std-collision.orb +2 -1
  6. package/behaviors/exports/atoms/std-combat-log.orb +2 -1
  7. package/behaviors/exports/atoms/std-combat.orb +2 -1
  8. package/behaviors/exports/atoms/std-confirmation.orb +2 -1
  9. package/behaviors/exports/atoms/std-dialogue-box.orb +2 -1
  10. package/behaviors/exports/atoms/std-display.orb +2 -1
  11. package/behaviors/exports/atoms/std-drawer.orb +2 -1
  12. package/behaviors/exports/atoms/std-filter.orb +2 -1
  13. package/behaviors/exports/atoms/std-game-audio.orb +2 -1
  14. package/behaviors/exports/atoms/std-game-hud.orb +2 -1
  15. package/behaviors/exports/atoms/std-game-menu.orb +2 -1
  16. package/behaviors/exports/atoms/std-game-over-screen.orb +2 -1
  17. package/behaviors/exports/atoms/std-gameflow.orb +2 -1
  18. package/behaviors/exports/atoms/std-input.orb +2 -1
  19. package/behaviors/exports/atoms/std-inventory-panel.orb +2 -1
  20. package/behaviors/exports/atoms/std-isometric-canvas.orb +2 -1
  21. package/behaviors/exports/atoms/std-loading.orb +2 -1
  22. package/behaviors/exports/atoms/std-modal.orb +2 -1
  23. package/behaviors/exports/atoms/std-movement.orb +2 -1
  24. package/behaviors/exports/atoms/std-notification.orb +2 -1
  25. package/behaviors/exports/atoms/std-overworld.orb +2 -1
  26. package/behaviors/exports/atoms/std-pagination.orb +2 -1
  27. package/behaviors/exports/atoms/std-physics2d.orb +2 -1
  28. package/behaviors/exports/atoms/std-platformer-canvas.orb +2 -1
  29. package/behaviors/exports/atoms/std-quest.orb +2 -1
  30. package/behaviors/exports/atoms/std-rate-limiter.orb +2 -1
  31. package/behaviors/exports/atoms/std-score-board.orb +2 -1
  32. package/behaviors/exports/atoms/std-score.orb +2 -1
  33. package/behaviors/exports/atoms/std-search.orb +2 -1
  34. package/behaviors/exports/atoms/std-selection.orb +2 -1
  35. package/behaviors/exports/atoms/std-simulation-canvas.orb +2 -1
  36. package/behaviors/exports/atoms/std-sort.orb +2 -1
  37. package/behaviors/exports/atoms/std-sprite.orb +2 -1
  38. package/behaviors/exports/atoms/std-tabs.orb +2 -1
  39. package/behaviors/exports/atoms/std-timer.orb +2 -1
  40. package/behaviors/exports/atoms/std-undo.orb +2 -1
  41. package/behaviors/exports/atoms/std-wizard.orb +2 -1
  42. package/behaviors/exports/molecules/std-builder-game.orb +2 -1
  43. package/behaviors/exports/molecules/std-cart.orb +2 -1
  44. package/behaviors/exports/molecules/std-classifier-game.orb +2 -1
  45. package/behaviors/exports/molecules/std-debugger-game.orb +2 -1
  46. package/behaviors/exports/molecules/std-detail.orb +2 -1
  47. package/behaviors/exports/molecules/std-event-handler-game.orb +2 -1
  48. package/behaviors/exports/molecules/std-geospatial.orb +2 -1
  49. package/behaviors/exports/molecules/std-inventory.orb +2 -1
  50. package/behaviors/exports/molecules/std-list.orb +2 -1
  51. package/behaviors/exports/molecules/std-messaging.orb +2 -1
  52. package/behaviors/exports/molecules/std-negotiator-game.orb +2 -1
  53. package/behaviors/exports/molecules/std-platformer-game.orb +2 -1
  54. package/behaviors/exports/molecules/std-puzzle-game.orb +2 -1
  55. package/behaviors/exports/molecules/std-sequencer-game.orb +2 -1
  56. package/behaviors/exports/molecules/std-simulator-game.orb +2 -1
  57. package/behaviors/exports/molecules/std-turn-based-battle.orb +2 -1
  58. package/behaviors/exports/organisms/std-api-gateway.orb +2 -1
  59. package/behaviors/exports/organisms/std-arcade-game.orb +2 -1
  60. package/behaviors/exports/organisms/std-booking-system.orb +2 -1
  61. package/behaviors/exports/organisms/std-cicd-pipeline.orb +2 -1
  62. package/behaviors/exports/organisms/std-cms.orb +2 -1
  63. package/behaviors/exports/organisms/std-coding-academy.orb +2 -1
  64. package/behaviors/exports/organisms/std-crm.orb +2 -1
  65. package/behaviors/exports/organisms/std-devops-dashboard.orb +2 -1
  66. package/behaviors/exports/organisms/std-ecommerce.orb +2 -1
  67. package/behaviors/exports/organisms/std-finance-tracker.orb +2 -1
  68. package/behaviors/exports/organisms/std-healthcare.orb +2 -1
  69. package/behaviors/exports/organisms/std-helpdesk.orb +2 -1
  70. package/behaviors/exports/organisms/std-hr-portal.orb +2 -1
  71. package/behaviors/exports/organisms/std-iot-dashboard.orb +2 -1
  72. package/behaviors/exports/organisms/std-lms.orb +2 -1
  73. package/behaviors/exports/organisms/std-logic-training.orb +2 -1
  74. package/behaviors/exports/organisms/std-platformer-app.orb +2 -1
  75. package/behaviors/exports/organisms/std-project-manager.orb +2 -1
  76. package/behaviors/exports/organisms/std-puzzle-app.orb +2 -1
  77. package/behaviors/exports/organisms/std-realtime-chat.orb +2 -1
  78. package/behaviors/exports/organisms/std-rpg-game.orb +2 -1
  79. package/behaviors/exports/organisms/std-social-feed.orb +2 -1
  80. package/behaviors/exports/organisms/std-stem-lab.orb +2 -1
  81. package/behaviors/exports/organisms/std-strategy-game.orb +2 -1
  82. package/behaviors/exports/organisms/std-trading-dashboard.orb +2 -1
  83. package/dist/behaviors/exports/atoms/std-async.orb +421 -0
  84. package/dist/behaviors/exports/atoms/std-browse.orb +174 -0
  85. package/dist/behaviors/exports/atoms/std-cache-aside.orb +882 -0
  86. package/dist/behaviors/exports/atoms/std-circuit-breaker.orb +502 -0
  87. package/dist/behaviors/exports/atoms/std-collision.orb +617 -0
  88. package/dist/behaviors/exports/atoms/std-combat-log.orb +146 -0
  89. package/dist/behaviors/exports/atoms/std-combat.orb +411 -0
  90. package/dist/behaviors/exports/atoms/std-confirmation.orb +283 -0
  91. package/dist/behaviors/exports/atoms/std-dialogue-box.orb +239 -0
  92. package/dist/behaviors/exports/atoms/std-display.orb +843 -0
  93. package/dist/behaviors/exports/atoms/std-drawer.orb +317 -0
  94. package/dist/behaviors/exports/atoms/std-filter.orb +443 -0
  95. package/dist/behaviors/exports/atoms/std-game-audio.orb +114 -0
  96. package/dist/behaviors/exports/atoms/std-game-hud.orb +152 -0
  97. package/dist/behaviors/exports/atoms/std-game-menu.orb +212 -0
  98. package/dist/behaviors/exports/atoms/std-game-over-screen.orb +196 -0
  99. package/dist/behaviors/exports/atoms/std-gameflow.orb +319 -0
  100. package/dist/behaviors/exports/atoms/std-input.orb +630 -0
  101. package/dist/behaviors/exports/atoms/std-inventory-panel.orb +256 -0
  102. package/dist/behaviors/exports/atoms/std-isometric-canvas.orb +632 -0
  103. package/dist/behaviors/exports/atoms/std-loading.orb +512 -0
  104. package/dist/behaviors/exports/atoms/std-modal.orb +271 -0
  105. package/dist/behaviors/exports/atoms/std-movement.orb +1038 -0
  106. package/dist/behaviors/exports/atoms/std-notification.orb +419 -0
  107. package/dist/behaviors/exports/atoms/std-overworld.orb +484 -0
  108. package/dist/behaviors/exports/atoms/std-pagination.orb +332 -0
  109. package/dist/behaviors/exports/atoms/std-physics2d.orb +420 -0
  110. package/dist/behaviors/exports/atoms/std-platformer-canvas.orb +258 -0
  111. package/dist/behaviors/exports/atoms/std-quest.orb +981 -0
  112. package/dist/behaviors/exports/atoms/std-rate-limiter.orb +639 -0
  113. package/dist/behaviors/exports/atoms/std-score-board.orb +239 -0
  114. package/dist/behaviors/exports/atoms/std-score.orb +467 -0
  115. package/dist/behaviors/exports/atoms/std-search.orb +374 -0
  116. package/dist/behaviors/exports/atoms/std-selection.orb +760 -0
  117. package/dist/behaviors/exports/atoms/std-simulation-canvas.orb +184 -0
  118. package/dist/behaviors/exports/atoms/std-sort.orb +579 -0
  119. package/dist/behaviors/exports/atoms/std-sprite.orb +157 -0
  120. package/dist/behaviors/exports/atoms/std-tabs.orb +275 -0
  121. package/dist/behaviors/exports/atoms/std-timer.orb +1031 -0
  122. package/dist/behaviors/exports/atoms/std-undo.orb +695 -0
  123. package/dist/behaviors/exports/atoms/std-wizard.orb +667 -0
  124. package/dist/behaviors/exports/molecules/std-builder-game.orb +184 -0
  125. package/dist/behaviors/exports/molecules/std-cart.orb +592 -0
  126. package/dist/behaviors/exports/molecules/std-classifier-game.orb +184 -0
  127. package/dist/behaviors/exports/molecules/std-debugger-game.orb +184 -0
  128. package/dist/behaviors/exports/molecules/std-detail.orb +590 -0
  129. package/dist/behaviors/exports/molecules/std-event-handler-game.orb +184 -0
  130. package/dist/behaviors/exports/molecules/std-geospatial.orb +650 -0
  131. package/dist/behaviors/exports/molecules/std-inventory.orb +854 -0
  132. package/dist/behaviors/exports/molecules/std-list.orb +955 -0
  133. package/dist/behaviors/exports/molecules/std-messaging.orb +586 -0
  134. package/dist/behaviors/exports/molecules/std-negotiator-game.orb +184 -0
  135. package/dist/behaviors/exports/molecules/std-platformer-game.orb +497 -0
  136. package/dist/behaviors/exports/molecules/std-puzzle-game.orb +528 -0
  137. package/dist/behaviors/exports/molecules/std-sequencer-game.orb +184 -0
  138. package/dist/behaviors/exports/molecules/std-simulator-game.orb +184 -0
  139. package/dist/behaviors/exports/molecules/std-turn-based-battle.orb +444 -0
  140. package/dist/behaviors/exports/organisms/std-api-gateway.orb +2297 -0
  141. package/dist/behaviors/exports/organisms/std-arcade-game.orb +834 -0
  142. package/dist/behaviors/exports/organisms/std-booking-system.orb +3978 -0
  143. package/dist/behaviors/exports/organisms/std-cicd-pipeline.orb +2215 -0
  144. package/dist/behaviors/exports/organisms/std-cms.orb +2645 -0
  145. package/dist/behaviors/exports/organisms/std-coding-academy.orb +1395 -0
  146. package/dist/behaviors/exports/organisms/std-crm.orb +3542 -0
  147. package/dist/behaviors/exports/organisms/std-devops-dashboard.orb +3135 -0
  148. package/dist/behaviors/exports/organisms/std-ecommerce.orb +3744 -0
  149. package/dist/behaviors/exports/organisms/std-finance-tracker.orb +2386 -0
  150. package/dist/behaviors/exports/organisms/std-healthcare.orb +4680 -0
  151. package/dist/behaviors/exports/organisms/std-helpdesk.orb +2565 -0
  152. package/dist/behaviors/exports/organisms/std-hr-portal.orb +4030 -0
  153. package/dist/behaviors/exports/organisms/std-iot-dashboard.orb +2298 -0
  154. package/dist/behaviors/exports/organisms/std-lms.orb +2855 -0
  155. package/dist/behaviors/exports/organisms/std-logic-training.orb +599 -0
  156. package/dist/behaviors/exports/organisms/std-platformer-app.orb +1570 -0
  157. package/dist/behaviors/exports/organisms/std-project-manager.orb +3022 -0
  158. package/dist/behaviors/exports/organisms/std-puzzle-app.orb +744 -0
  159. package/dist/behaviors/exports/organisms/std-realtime-chat.orb +2381 -0
  160. package/dist/behaviors/exports/organisms/std-rpg-game.orb +2805 -0
  161. package/dist/behaviors/exports/organisms/std-social-feed.orb +1222 -0
  162. package/dist/behaviors/exports/organisms/std-stem-lab.orb +1211 -0
  163. package/dist/behaviors/exports/organisms/std-strategy-game.orb +1762 -0
  164. package/dist/behaviors/exports/organisms/std-trading-dashboard.orb +2218 -0
  165. package/dist/behaviors/exports-reader.d.ts +2 -0
  166. package/dist/behaviors/exports-reader.js +5 -3
  167. package/dist/behaviors/exports-reader.js.map +1 -1
  168. package/dist/behaviors/index.js +5 -3
  169. package/dist/behaviors/index.js.map +1 -1
  170. package/dist/exports/atoms/std-async.orb +421 -0
  171. package/dist/exports/atoms/std-browse.orb +174 -0
  172. package/dist/exports/atoms/std-cache-aside.orb +882 -0
  173. package/dist/exports/atoms/std-circuit-breaker.orb +502 -0
  174. package/dist/exports/atoms/std-collision.orb +617 -0
  175. package/dist/exports/atoms/std-combat-log.orb +146 -0
  176. package/dist/exports/atoms/std-combat.orb +411 -0
  177. package/dist/exports/atoms/std-confirmation.orb +283 -0
  178. package/dist/exports/atoms/std-dialogue-box.orb +239 -0
  179. package/dist/exports/atoms/std-display.orb +843 -0
  180. package/dist/exports/atoms/std-drawer.orb +317 -0
  181. package/dist/exports/atoms/std-filter.orb +443 -0
  182. package/dist/exports/atoms/std-game-audio.orb +114 -0
  183. package/dist/exports/atoms/std-game-hud.orb +152 -0
  184. package/dist/exports/atoms/std-game-menu.orb +212 -0
  185. package/dist/exports/atoms/std-game-over-screen.orb +196 -0
  186. package/dist/exports/atoms/std-gameflow.orb +319 -0
  187. package/dist/exports/atoms/std-input.orb +630 -0
  188. package/dist/exports/atoms/std-inventory-panel.orb +256 -0
  189. package/dist/exports/atoms/std-isometric-canvas.orb +632 -0
  190. package/dist/exports/atoms/std-loading.orb +512 -0
  191. package/dist/exports/atoms/std-modal.orb +271 -0
  192. package/dist/exports/atoms/std-movement.orb +1038 -0
  193. package/dist/exports/atoms/std-notification.orb +419 -0
  194. package/dist/exports/atoms/std-overworld.orb +484 -0
  195. package/dist/exports/atoms/std-pagination.orb +332 -0
  196. package/dist/exports/atoms/std-physics2d.orb +420 -0
  197. package/dist/exports/atoms/std-platformer-canvas.orb +258 -0
  198. package/dist/exports/atoms/std-quest.orb +981 -0
  199. package/dist/exports/atoms/std-rate-limiter.orb +639 -0
  200. package/dist/exports/atoms/std-score-board.orb +239 -0
  201. package/dist/exports/atoms/std-score.orb +467 -0
  202. package/dist/exports/atoms/std-search.orb +374 -0
  203. package/dist/exports/atoms/std-selection.orb +760 -0
  204. package/dist/exports/atoms/std-simulation-canvas.orb +184 -0
  205. package/dist/exports/atoms/std-sort.orb +579 -0
  206. package/dist/exports/atoms/std-sprite.orb +157 -0
  207. package/dist/exports/atoms/std-tabs.orb +275 -0
  208. package/dist/exports/atoms/std-timer.orb +1031 -0
  209. package/dist/exports/atoms/std-undo.orb +695 -0
  210. package/dist/exports/atoms/std-wizard.orb +667 -0
  211. package/dist/exports/molecules/std-builder-game.orb +184 -0
  212. package/dist/exports/molecules/std-cart.orb +592 -0
  213. package/dist/exports/molecules/std-classifier-game.orb +184 -0
  214. package/dist/exports/molecules/std-debugger-game.orb +184 -0
  215. package/dist/exports/molecules/std-detail.orb +590 -0
  216. package/dist/exports/molecules/std-event-handler-game.orb +184 -0
  217. package/dist/exports/molecules/std-geospatial.orb +650 -0
  218. package/dist/exports/molecules/std-inventory.orb +854 -0
  219. package/dist/exports/molecules/std-list.orb +955 -0
  220. package/dist/exports/molecules/std-messaging.orb +586 -0
  221. package/dist/exports/molecules/std-negotiator-game.orb +184 -0
  222. package/dist/exports/molecules/std-platformer-game.orb +497 -0
  223. package/dist/exports/molecules/std-puzzle-game.orb +528 -0
  224. package/dist/exports/molecules/std-sequencer-game.orb +184 -0
  225. package/dist/exports/molecules/std-simulator-game.orb +184 -0
  226. package/dist/exports/molecules/std-turn-based-battle.orb +444 -0
  227. package/dist/exports/organisms/std-api-gateway.orb +2297 -0
  228. package/dist/exports/organisms/std-arcade-game.orb +834 -0
  229. package/dist/exports/organisms/std-booking-system.orb +3978 -0
  230. package/dist/exports/organisms/std-cicd-pipeline.orb +2215 -0
  231. package/dist/exports/organisms/std-cms.orb +2645 -0
  232. package/dist/exports/organisms/std-coding-academy.orb +1395 -0
  233. package/dist/exports/organisms/std-crm.orb +3542 -0
  234. package/dist/exports/organisms/std-devops-dashboard.orb +3135 -0
  235. package/dist/exports/organisms/std-ecommerce.orb +3744 -0
  236. package/dist/exports/organisms/std-finance-tracker.orb +2386 -0
  237. package/dist/exports/organisms/std-healthcare.orb +4680 -0
  238. package/dist/exports/organisms/std-helpdesk.orb +2565 -0
  239. package/dist/exports/organisms/std-hr-portal.orb +4030 -0
  240. package/dist/exports/organisms/std-iot-dashboard.orb +2298 -0
  241. package/dist/exports/organisms/std-lms.orb +2855 -0
  242. package/dist/exports/organisms/std-logic-training.orb +599 -0
  243. package/dist/exports/organisms/std-platformer-app.orb +1570 -0
  244. package/dist/exports/organisms/std-project-manager.orb +3022 -0
  245. package/dist/exports/organisms/std-puzzle-app.orb +744 -0
  246. package/dist/exports/organisms/std-realtime-chat.orb +2381 -0
  247. package/dist/exports/organisms/std-rpg-game.orb +2805 -0
  248. package/dist/exports/organisms/std-social-feed.orb +1222 -0
  249. package/dist/exports/organisms/std-stem-lab.orb +1211 -0
  250. package/dist/exports/organisms/std-strategy-game.orb +1762 -0
  251. package/dist/exports/organisms/std-trading-dashboard.orb +2218 -0
  252. package/dist/index.js +5 -3
  253. package/dist/index.js.map +1 -1
  254. package/package.json +1 -1
  255. package/behaviors/exports/atoms/std-game-canvas-2d.orb +0 -135
  256. package/behaviors/exports/atoms/std-game-canvas-3d.orb +0 -224
@@ -0,0 +1,1762 @@
1
+ {
2
+ "name": "Strategy Game",
3
+ "version": "1.0.0",
4
+ "orbitals": [
5
+ {
6
+ "name": "ArmyBattleOrbital",
7
+ "entity": {
8
+ "name": "ArmyBattle",
9
+ "persistence": "runtime",
10
+ "fields": [
11
+ {
12
+ "name": "id",
13
+ "type": "string",
14
+ "required": true
15
+ },
16
+ {
17
+ "name": "turn",
18
+ "type": "number",
19
+ "default": 0
20
+ },
21
+ {
22
+ "name": "score",
23
+ "type": "number",
24
+ "default": 0
25
+ },
26
+ {
27
+ "name": "armySize",
28
+ "type": "number",
29
+ "default": 10
30
+ },
31
+ {
32
+ "name": "morale",
33
+ "type": "number",
34
+ "default": 100
35
+ }
36
+ ]
37
+ },
38
+ "traits": [
39
+ {
40
+ "name": "ArmyBattleBattleFlow",
41
+ "linkedEntity": "ArmyBattle",
42
+ "category": "interaction",
43
+ "stateMachine": {
44
+ "states": [
45
+ {
46
+ "name": "menu",
47
+ "isInitial": true
48
+ },
49
+ {
50
+ "name": "playing"
51
+ },
52
+ {
53
+ "name": "paused"
54
+ },
55
+ {
56
+ "name": "gameover"
57
+ }
58
+ ],
59
+ "events": [
60
+ {
61
+ "key": "INIT",
62
+ "name": "Initialize"
63
+ },
64
+ {
65
+ "key": "START",
66
+ "name": "Start Battle"
67
+ },
68
+ {
69
+ "key": "END_TURN",
70
+ "name": "End Turn"
71
+ },
72
+ {
73
+ "key": "PAUSE",
74
+ "name": "Pause"
75
+ },
76
+ {
77
+ "key": "RESUME",
78
+ "name": "Resume"
79
+ },
80
+ {
81
+ "key": "GAME_OVER",
82
+ "name": "Game Over"
83
+ },
84
+ {
85
+ "key": "RESTART",
86
+ "name": "Restart"
87
+ },
88
+ {
89
+ "key": "CLOSE",
90
+ "name": "Close"
91
+ },
92
+ {
93
+ "key": "NAVIGATE",
94
+ "name": "Navigate"
95
+ }
96
+ ],
97
+ "transitions": [
98
+ {
99
+ "from": "menu",
100
+ "to": "menu",
101
+ "event": "INIT",
102
+ "effects": [
103
+ [
104
+ "fetch",
105
+ "ArmyBattle"
106
+ ],
107
+ [
108
+ "render-ui",
109
+ "main",
110
+ {
111
+ "type": "game-menu",
112
+ "title": "Army Battle",
113
+ "subtitle": "Turn-Based Strategy",
114
+ "menuItems": [
115
+ {
116
+ "label": "Start Battle",
117
+ "event": "START",
118
+ "variant": "primary"
119
+ }
120
+ ]
121
+ }
122
+ ]
123
+ ]
124
+ },
125
+ {
126
+ "from": "menu",
127
+ "to": "playing",
128
+ "event": "START",
129
+ "effects": [
130
+ [
131
+ "render-ui",
132
+ "main",
133
+ {
134
+ "type": "game-hud",
135
+ "stats": [
136
+ {
137
+ "label": "Turn",
138
+ "value": "@entity.turn"
139
+ },
140
+ {
141
+ "label": "Score",
142
+ "value": "@entity.score"
143
+ }
144
+ ]
145
+ }
146
+ ]
147
+ ]
148
+ },
149
+ {
150
+ "from": "playing",
151
+ "to": "playing",
152
+ "event": "END_TURN",
153
+ "effects": [
154
+ [
155
+ "set",
156
+ "@entity.turn",
157
+ [
158
+ "+",
159
+ "@entity.turn",
160
+ 1
161
+ ]
162
+ ],
163
+ [
164
+ "render-ui",
165
+ "main",
166
+ {
167
+ "type": "game-hud",
168
+ "stats": [
169
+ {
170
+ "label": "Turn",
171
+ "value": "@entity.turn"
172
+ },
173
+ {
174
+ "label": "Score",
175
+ "value": "@entity.score"
176
+ }
177
+ ]
178
+ }
179
+ ]
180
+ ]
181
+ },
182
+ {
183
+ "from": "menu",
184
+ "to": "menu",
185
+ "event": "NAVIGATE",
186
+ "effects": []
187
+ },
188
+ {
189
+ "from": "paused",
190
+ "to": "paused",
191
+ "event": "NAVIGATE",
192
+ "effects": []
193
+ },
194
+ {
195
+ "from": "playing",
196
+ "to": "paused",
197
+ "event": "PAUSE",
198
+ "effects": [
199
+ [
200
+ "render-ui",
201
+ "modal",
202
+ {
203
+ "type": "game-menu",
204
+ "title": "Paused",
205
+ "menuItems": [
206
+ {
207
+ "label": "Resume",
208
+ "event": "RESUME",
209
+ "variant": "primary"
210
+ },
211
+ {
212
+ "label": "Quit",
213
+ "event": "RESTART",
214
+ "variant": "ghost"
215
+ }
216
+ ]
217
+ }
218
+ ]
219
+ ]
220
+ },
221
+ {
222
+ "from": "paused",
223
+ "to": "playing",
224
+ "event": "RESUME",
225
+ "effects": [
226
+ [
227
+ "render-ui",
228
+ "modal",
229
+ null
230
+ ]
231
+ ]
232
+ },
233
+ {
234
+ "from": "paused",
235
+ "to": "playing",
236
+ "event": "CLOSE",
237
+ "effects": [
238
+ [
239
+ "render-ui",
240
+ "modal",
241
+ null
242
+ ]
243
+ ]
244
+ },
245
+ {
246
+ "from": "playing",
247
+ "to": "gameover",
248
+ "event": "GAME_OVER",
249
+ "effects": [
250
+ [
251
+ "render-ui",
252
+ "main",
253
+ {
254
+ "type": "game-over-screen",
255
+ "title": "Battle Over",
256
+ "stats": [
257
+ {
258
+ "label": "Turns",
259
+ "value": "@entity.turn"
260
+ },
261
+ {
262
+ "label": "Score",
263
+ "value": "@entity.score"
264
+ }
265
+ ],
266
+ "menuItems": [
267
+ {
268
+ "label": "Play Again",
269
+ "event": "RESTART",
270
+ "variant": "primary"
271
+ },
272
+ {
273
+ "label": "Main Menu",
274
+ "event": "RESTART",
275
+ "variant": "secondary"
276
+ }
277
+ ]
278
+ }
279
+ ]
280
+ ]
281
+ },
282
+ {
283
+ "from": "gameover",
284
+ "to": "menu",
285
+ "event": "RESTART",
286
+ "effects": [
287
+ [
288
+ "render-ui",
289
+ "main",
290
+ {
291
+ "type": "game-menu",
292
+ "title": "Army Battle",
293
+ "subtitle": "Turn-Based Strategy",
294
+ "menuItems": [
295
+ {
296
+ "label": "Start Battle",
297
+ "event": "START",
298
+ "variant": "primary"
299
+ }
300
+ ]
301
+ }
302
+ ]
303
+ ]
304
+ },
305
+ {
306
+ "from": "paused",
307
+ "to": "menu",
308
+ "event": "RESTART",
309
+ "effects": [
310
+ [
311
+ "render-ui",
312
+ "modal",
313
+ null
314
+ ],
315
+ [
316
+ "render-ui",
317
+ "main",
318
+ {
319
+ "type": "game-menu",
320
+ "title": "Army Battle",
321
+ "subtitle": "Turn-Based Strategy",
322
+ "menuItems": [
323
+ {
324
+ "label": "Start Battle",
325
+ "event": "START",
326
+ "variant": "primary"
327
+ }
328
+ ]
329
+ }
330
+ ]
331
+ ]
332
+ }
333
+ ]
334
+ }
335
+ },
336
+ {
337
+ "name": "ArmyBattleCombatLog",
338
+ "linkedEntity": "ArmyBattle",
339
+ "category": "interaction",
340
+ "stateMachine": {
341
+ "states": [
342
+ {
343
+ "name": "idle",
344
+ "isInitial": true
345
+ }
346
+ ],
347
+ "events": [
348
+ {
349
+ "key": "INIT",
350
+ "name": "Initialize"
351
+ },
352
+ {
353
+ "key": "LOG_EVENT",
354
+ "name": "Log Event",
355
+ "payload": [
356
+ {
357
+ "name": "data",
358
+ "type": "object",
359
+ "required": true
360
+ }
361
+ ]
362
+ },
363
+ {
364
+ "key": "CLEAR",
365
+ "name": "Clear"
366
+ }
367
+ ],
368
+ "transitions": [
369
+ {
370
+ "from": "idle",
371
+ "to": "idle",
372
+ "event": "INIT",
373
+ "effects": [
374
+ [
375
+ "fetch",
376
+ "ArmyBattle"
377
+ ]
378
+ ]
379
+ },
380
+ {
381
+ "from": "idle",
382
+ "to": "idle",
383
+ "event": "LOG_EVENT",
384
+ "effects": [
385
+ [
386
+ "render-ui",
387
+ "main",
388
+ {
389
+ "type": "combat-log",
390
+ "events": "@ArmyBattle",
391
+ "maxVisible": 10,
392
+ "autoScroll": true,
393
+ "showTimestamps": true,
394
+ "title": "Combat Log"
395
+ }
396
+ ]
397
+ ]
398
+ },
399
+ {
400
+ "from": "idle",
401
+ "to": "idle",
402
+ "event": "CLEAR",
403
+ "effects": [
404
+ [
405
+ "render-ui",
406
+ "main",
407
+ {
408
+ "type": "combat-log",
409
+ "events": "@ArmyBattle",
410
+ "maxVisible": 10,
411
+ "autoScroll": true,
412
+ "showTimestamps": true,
413
+ "title": "Combat Log"
414
+ }
415
+ ]
416
+ ]
417
+ }
418
+ ]
419
+ }
420
+ }
421
+ ],
422
+ "pages": [
423
+ {
424
+ "name": "BattlePage",
425
+ "path": "/battle",
426
+ "traits": [
427
+ {
428
+ "ref": "ArmyBattleBattleFlow"
429
+ },
430
+ {
431
+ "ref": "ArmyBattleCombatLog"
432
+ }
433
+ ]
434
+ }
435
+ ]
436
+ },
437
+ {
438
+ "name": "TerritoryOrbital",
439
+ "entity": {
440
+ "name": "Territory",
441
+ "persistence": "runtime",
442
+ "fields": [
443
+ {
444
+ "name": "id",
445
+ "type": "string",
446
+ "required": true
447
+ },
448
+ {
449
+ "name": "name",
450
+ "type": "string",
451
+ "required": true
452
+ },
453
+ {
454
+ "name": "owner",
455
+ "type": "string"
456
+ },
457
+ {
458
+ "name": "defense",
459
+ "type": "number",
460
+ "default": 0
461
+ },
462
+ {
463
+ "name": "explored",
464
+ "type": "boolean",
465
+ "default": false
466
+ }
467
+ ]
468
+ },
469
+ "traits": [
470
+ {
471
+ "name": "TerritoryNavigation",
472
+ "linkedEntity": "Territory",
473
+ "category": "interaction",
474
+ "stateMachine": {
475
+ "states": [
476
+ {
477
+ "name": "exploring",
478
+ "isInitial": true
479
+ },
480
+ {
481
+ "name": "transitioning"
482
+ },
483
+ {
484
+ "name": "entered"
485
+ }
486
+ ],
487
+ "events": [
488
+ {
489
+ "key": "INIT",
490
+ "name": "Initialize"
491
+ },
492
+ {
493
+ "key": "TRAVEL",
494
+ "name": "Travel",
495
+ "payload": [
496
+ {
497
+ "name": "zoneId",
498
+ "type": "string",
499
+ "required": true
500
+ }
501
+ ]
502
+ },
503
+ {
504
+ "key": "ARRIVE",
505
+ "name": "Arrive"
506
+ },
507
+ {
508
+ "key": "BACK",
509
+ "name": "Back"
510
+ }
511
+ ],
512
+ "transitions": [
513
+ {
514
+ "from": "exploring",
515
+ "to": "exploring",
516
+ "event": "INIT",
517
+ "effects": [
518
+ [
519
+ "fetch",
520
+ "Territory"
521
+ ],
522
+ [
523
+ "render-ui",
524
+ "main",
525
+ {
526
+ "type": "stack",
527
+ "direction": "vertical",
528
+ "gap": "lg",
529
+ "children": [
530
+ {
531
+ "type": "stack",
532
+ "direction": "horizontal",
533
+ "gap": "md",
534
+ "justify": "space-between",
535
+ "children": [
536
+ {
537
+ "type": "stack",
538
+ "direction": "horizontal",
539
+ "gap": "md",
540
+ "children": [
541
+ {
542
+ "type": "icon",
543
+ "name": "map",
544
+ "size": "lg"
545
+ },
546
+ {
547
+ "type": "typography",
548
+ "content": "Territory Map",
549
+ "variant": "h2"
550
+ }
551
+ ]
552
+ },
553
+ {
554
+ "type": "badge",
555
+ "label": "Exploring"
556
+ }
557
+ ]
558
+ },
559
+ {
560
+ "type": "divider"
561
+ },
562
+ {
563
+ "type": "data-grid",
564
+ "entity": "Territory",
565
+ "emptyIcon": "compass",
566
+ "emptyTitle": "No territorys discovered",
567
+ "emptyDescription": "Explore to discover new territorys.",
568
+ "itemActions": [
569
+ {
570
+ "label": "Travel",
571
+ "event": "TRAVEL"
572
+ }
573
+ ],
574
+ "children": [
575
+ {
576
+ "type": "stack",
577
+ "direction": "vertical",
578
+ "gap": "sm",
579
+ "children": [
580
+ {
581
+ "type": "stack",
582
+ "direction": "horizontal",
583
+ "justify": "space-between",
584
+ "align": "center",
585
+ "children": [
586
+ {
587
+ "type": "stack",
588
+ "direction": "horizontal",
589
+ "gap": "sm",
590
+ "align": "center",
591
+ "children": [
592
+ {
593
+ "type": "icon",
594
+ "name": "map-pin",
595
+ "size": "sm"
596
+ },
597
+ {
598
+ "type": "typography",
599
+ "variant": "h4",
600
+ "content": "@entity.name"
601
+ }
602
+ ]
603
+ },
604
+ {
605
+ "type": "badge",
606
+ "label": "@entity.owner"
607
+ }
608
+ ]
609
+ },
610
+ {
611
+ "type": "typography",
612
+ "variant": "caption",
613
+ "content": "@entity.defense"
614
+ }
615
+ ]
616
+ }
617
+ ]
618
+ }
619
+ ]
620
+ }
621
+ ]
622
+ ]
623
+ },
624
+ {
625
+ "from": "exploring",
626
+ "to": "transitioning",
627
+ "event": "TRAVEL",
628
+ "effects": [
629
+ [
630
+ "render-ui",
631
+ "main",
632
+ {
633
+ "type": "stack",
634
+ "direction": "vertical",
635
+ "gap": "lg",
636
+ "align": "center",
637
+ "children": [
638
+ {
639
+ "type": "stack",
640
+ "direction": "horizontal",
641
+ "gap": "md",
642
+ "children": [
643
+ {
644
+ "type": "icon",
645
+ "name": "loader",
646
+ "size": "lg"
647
+ },
648
+ {
649
+ "type": "typography",
650
+ "content": "Traveling...",
651
+ "variant": "h2"
652
+ }
653
+ ]
654
+ },
655
+ {
656
+ "type": "divider"
657
+ },
658
+ {
659
+ "type": "typography",
660
+ "content": "Traveling to the destination territorys map.",
661
+ "variant": "body"
662
+ }
663
+ ]
664
+ }
665
+ ]
666
+ ]
667
+ },
668
+ {
669
+ "from": "transitioning",
670
+ "to": "entered",
671
+ "event": "ARRIVE",
672
+ "effects": [
673
+ [
674
+ "fetch",
675
+ "Territory"
676
+ ],
677
+ [
678
+ "render-ui",
679
+ "main",
680
+ {
681
+ "type": "stack",
682
+ "direction": "vertical",
683
+ "gap": "lg",
684
+ "children": [
685
+ {
686
+ "type": "stack",
687
+ "direction": "horizontal",
688
+ "gap": "md",
689
+ "justify": "space-between",
690
+ "children": [
691
+ {
692
+ "type": "stack",
693
+ "direction": "horizontal",
694
+ "gap": "md",
695
+ "children": [
696
+ {
697
+ "type": "icon",
698
+ "name": "map",
699
+ "size": "lg"
700
+ },
701
+ {
702
+ "type": "typography",
703
+ "content": "Territorys Map",
704
+ "variant": "h2"
705
+ }
706
+ ]
707
+ },
708
+ {
709
+ "type": "badge",
710
+ "label": "Entered"
711
+ }
712
+ ]
713
+ },
714
+ {
715
+ "type": "divider"
716
+ },
717
+ {
718
+ "type": "data-grid",
719
+ "entity": "Territory",
720
+ "emptyIcon": "inbox",
721
+ "emptyTitle": "Nothing here",
722
+ "emptyDescription": "This zone is empty.",
723
+ "children": [
724
+ {
725
+ "type": "stack",
726
+ "direction": "vertical",
727
+ "gap": "sm",
728
+ "children": [
729
+ {
730
+ "type": "stack",
731
+ "direction": "horizontal",
732
+ "justify": "space-between",
733
+ "align": "center",
734
+ "children": [
735
+ {
736
+ "type": "stack",
737
+ "direction": "horizontal",
738
+ "gap": "sm",
739
+ "align": "center",
740
+ "children": [
741
+ {
742
+ "type": "icon",
743
+ "name": "map-pin",
744
+ "size": "sm"
745
+ },
746
+ {
747
+ "type": "typography",
748
+ "variant": "h4",
749
+ "content": "@entity.name"
750
+ }
751
+ ]
752
+ },
753
+ {
754
+ "type": "badge",
755
+ "label": "@entity.owner"
756
+ }
757
+ ]
758
+ },
759
+ {
760
+ "type": "typography",
761
+ "variant": "caption",
762
+ "content": "@entity.defense"
763
+ }
764
+ ]
765
+ }
766
+ ]
767
+ },
768
+ {
769
+ "type": "divider"
770
+ },
771
+ {
772
+ "type": "stack",
773
+ "direction": "horizontal",
774
+ "gap": "sm",
775
+ "justify": "end",
776
+ "children": [
777
+ {
778
+ "type": "button",
779
+ "label": "Back to Map",
780
+ "event": "BACK",
781
+ "variant": "ghost",
782
+ "icon": "arrow-left"
783
+ }
784
+ ]
785
+ }
786
+ ]
787
+ }
788
+ ]
789
+ ]
790
+ },
791
+ {
792
+ "from": "entered",
793
+ "to": "exploring",
794
+ "event": "BACK",
795
+ "effects": [
796
+ [
797
+ "fetch",
798
+ "Territory"
799
+ ],
800
+ [
801
+ "render-ui",
802
+ "main",
803
+ {
804
+ "type": "stack",
805
+ "direction": "vertical",
806
+ "gap": "lg",
807
+ "children": [
808
+ {
809
+ "type": "stack",
810
+ "direction": "horizontal",
811
+ "gap": "md",
812
+ "justify": "space-between",
813
+ "children": [
814
+ {
815
+ "type": "stack",
816
+ "direction": "horizontal",
817
+ "gap": "md",
818
+ "children": [
819
+ {
820
+ "type": "icon",
821
+ "name": "map",
822
+ "size": "lg"
823
+ },
824
+ {
825
+ "type": "typography",
826
+ "content": "Territory Map",
827
+ "variant": "h2"
828
+ }
829
+ ]
830
+ },
831
+ {
832
+ "type": "badge",
833
+ "label": "Exploring"
834
+ }
835
+ ]
836
+ },
837
+ {
838
+ "type": "divider"
839
+ },
840
+ {
841
+ "type": "data-grid",
842
+ "entity": "Territory",
843
+ "emptyIcon": "compass",
844
+ "emptyTitle": "No territorys discovered",
845
+ "emptyDescription": "Explore to discover new territorys.",
846
+ "itemActions": [
847
+ {
848
+ "label": "Travel",
849
+ "event": "TRAVEL"
850
+ }
851
+ ],
852
+ "children": [
853
+ {
854
+ "type": "stack",
855
+ "direction": "vertical",
856
+ "gap": "sm",
857
+ "children": [
858
+ {
859
+ "type": "stack",
860
+ "direction": "horizontal",
861
+ "justify": "space-between",
862
+ "align": "center",
863
+ "children": [
864
+ {
865
+ "type": "stack",
866
+ "direction": "horizontal",
867
+ "gap": "sm",
868
+ "align": "center",
869
+ "children": [
870
+ {
871
+ "type": "icon",
872
+ "name": "map-pin",
873
+ "size": "sm"
874
+ },
875
+ {
876
+ "type": "typography",
877
+ "variant": "h4",
878
+ "content": "@entity.name"
879
+ }
880
+ ]
881
+ },
882
+ {
883
+ "type": "badge",
884
+ "label": "@entity.owner"
885
+ }
886
+ ]
887
+ },
888
+ {
889
+ "type": "typography",
890
+ "variant": "caption",
891
+ "content": "@entity.defense"
892
+ }
893
+ ]
894
+ }
895
+ ]
896
+ }
897
+ ]
898
+ }
899
+ ]
900
+ ]
901
+ }
902
+ ]
903
+ }
904
+ }
905
+ ],
906
+ "pages": [
907
+ {
908
+ "name": "MapPage",
909
+ "path": "/map",
910
+ "isInitial": true,
911
+ "traits": [
912
+ {
913
+ "ref": "TerritoryNavigation"
914
+ }
915
+ ]
916
+ }
917
+ ]
918
+ },
919
+ {
920
+ "name": "ResourceOrbital",
921
+ "entity": {
922
+ "name": "Resource",
923
+ "persistence": "runtime",
924
+ "fields": [
925
+ {
926
+ "name": "id",
927
+ "type": "string",
928
+ "required": true
929
+ },
930
+ {
931
+ "name": "gold",
932
+ "type": "number",
933
+ "default": 0
934
+ },
935
+ {
936
+ "name": "food",
937
+ "type": "number",
938
+ "default": 0
939
+ },
940
+ {
941
+ "name": "wood",
942
+ "type": "number",
943
+ "default": 0
944
+ },
945
+ {
946
+ "name": "iron",
947
+ "type": "number",
948
+ "default": 0
949
+ }
950
+ ]
951
+ },
952
+ "traits": [
953
+ {
954
+ "name": "ResourceDisplay",
955
+ "linkedEntity": "Resource",
956
+ "category": "interaction",
957
+ "stateMachine": {
958
+ "states": [
959
+ {
960
+ "name": "loading",
961
+ "isInitial": true
962
+ },
963
+ {
964
+ "name": "displaying"
965
+ },
966
+ {
967
+ "name": "refreshing"
968
+ }
969
+ ],
970
+ "events": [
971
+ {
972
+ "key": "INIT",
973
+ "name": "Initialize"
974
+ },
975
+ {
976
+ "key": "LOADED",
977
+ "name": "Loaded"
978
+ },
979
+ {
980
+ "key": "REFRESH",
981
+ "name": "Refresh"
982
+ },
983
+ {
984
+ "key": "REFRESHED",
985
+ "name": "Refreshed"
986
+ }
987
+ ],
988
+ "transitions": [
989
+ {
990
+ "from": "loading",
991
+ "to": "displaying",
992
+ "event": "INIT",
993
+ "effects": [
994
+ [
995
+ "fetch",
996
+ "Resource"
997
+ ],
998
+ [
999
+ "render-ui",
1000
+ "main",
1001
+ {
1002
+ "type": "stack",
1003
+ "direction": "vertical",
1004
+ "gap": "lg",
1005
+ "children": [
1006
+ {
1007
+ "type": "stack",
1008
+ "direction": "horizontal",
1009
+ "gap": "md",
1010
+ "justify": "space-between",
1011
+ "children": [
1012
+ {
1013
+ "type": "stack",
1014
+ "direction": "horizontal",
1015
+ "gap": "md",
1016
+ "children": [
1017
+ {
1018
+ "type": "icon",
1019
+ "name": "database",
1020
+ "size": "lg"
1021
+ },
1022
+ {
1023
+ "type": "typography",
1024
+ "content": "Resources",
1025
+ "variant": "h2"
1026
+ }
1027
+ ]
1028
+ },
1029
+ {
1030
+ "type": "button",
1031
+ "label": "Refresh",
1032
+ "event": "REFRESH",
1033
+ "variant": "secondary",
1034
+ "icon": "refresh-cw"
1035
+ }
1036
+ ]
1037
+ },
1038
+ {
1039
+ "type": "divider"
1040
+ },
1041
+ {
1042
+ "type": "simple-grid",
1043
+ "columns": 3,
1044
+ "children": [
1045
+ {
1046
+ "type": "card",
1047
+ "children": [
1048
+ {
1049
+ "type": "stack",
1050
+ "direction": "vertical",
1051
+ "gap": "sm",
1052
+ "children": [
1053
+ {
1054
+ "type": "typography",
1055
+ "variant": "caption",
1056
+ "content": "Gold"
1057
+ },
1058
+ {
1059
+ "type": "typography",
1060
+ "variant": "h3",
1061
+ "content": "@entity.gold"
1062
+ }
1063
+ ]
1064
+ }
1065
+ ]
1066
+ },
1067
+ {
1068
+ "type": "card",
1069
+ "children": [
1070
+ {
1071
+ "type": "stack",
1072
+ "direction": "vertical",
1073
+ "gap": "sm",
1074
+ "children": [
1075
+ {
1076
+ "type": "typography",
1077
+ "variant": "caption",
1078
+ "content": "Food"
1079
+ },
1080
+ {
1081
+ "type": "typography",
1082
+ "variant": "h3",
1083
+ "content": "@entity.food"
1084
+ }
1085
+ ]
1086
+ }
1087
+ ]
1088
+ },
1089
+ {
1090
+ "type": "card",
1091
+ "children": [
1092
+ {
1093
+ "type": "stack",
1094
+ "direction": "vertical",
1095
+ "gap": "sm",
1096
+ "children": [
1097
+ {
1098
+ "type": "typography",
1099
+ "variant": "caption",
1100
+ "content": "Wood"
1101
+ },
1102
+ {
1103
+ "type": "typography",
1104
+ "variant": "h3",
1105
+ "content": "@entity.wood"
1106
+ }
1107
+ ]
1108
+ }
1109
+ ]
1110
+ },
1111
+ {
1112
+ "type": "card",
1113
+ "children": [
1114
+ {
1115
+ "type": "stack",
1116
+ "direction": "vertical",
1117
+ "gap": "sm",
1118
+ "children": [
1119
+ {
1120
+ "type": "typography",
1121
+ "variant": "caption",
1122
+ "content": "Iron"
1123
+ },
1124
+ {
1125
+ "type": "typography",
1126
+ "variant": "h3",
1127
+ "content": "@entity.iron"
1128
+ }
1129
+ ]
1130
+ }
1131
+ ]
1132
+ }
1133
+ ]
1134
+ }
1135
+ ]
1136
+ }
1137
+ ]
1138
+ ]
1139
+ },
1140
+ {
1141
+ "from": "loading",
1142
+ "to": "displaying",
1143
+ "event": "LOADED",
1144
+ "effects": [
1145
+ [
1146
+ "fetch",
1147
+ "Resource"
1148
+ ],
1149
+ [
1150
+ "render-ui",
1151
+ "main",
1152
+ {
1153
+ "type": "stack",
1154
+ "direction": "vertical",
1155
+ "gap": "lg",
1156
+ "children": [
1157
+ {
1158
+ "type": "stack",
1159
+ "direction": "horizontal",
1160
+ "gap": "md",
1161
+ "justify": "space-between",
1162
+ "children": [
1163
+ {
1164
+ "type": "stack",
1165
+ "direction": "horizontal",
1166
+ "gap": "md",
1167
+ "children": [
1168
+ {
1169
+ "type": "icon",
1170
+ "name": "database",
1171
+ "size": "lg"
1172
+ },
1173
+ {
1174
+ "type": "typography",
1175
+ "content": "Resources",
1176
+ "variant": "h2"
1177
+ }
1178
+ ]
1179
+ },
1180
+ {
1181
+ "type": "button",
1182
+ "label": "Refresh",
1183
+ "event": "REFRESH",
1184
+ "variant": "secondary",
1185
+ "icon": "refresh-cw"
1186
+ }
1187
+ ]
1188
+ },
1189
+ {
1190
+ "type": "divider"
1191
+ },
1192
+ {
1193
+ "type": "simple-grid",
1194
+ "columns": 3,
1195
+ "children": [
1196
+ {
1197
+ "type": "card",
1198
+ "children": [
1199
+ {
1200
+ "type": "stack",
1201
+ "direction": "vertical",
1202
+ "gap": "sm",
1203
+ "children": [
1204
+ {
1205
+ "type": "typography",
1206
+ "variant": "caption",
1207
+ "content": "Gold"
1208
+ },
1209
+ {
1210
+ "type": "typography",
1211
+ "variant": "h3",
1212
+ "content": "@entity.gold"
1213
+ }
1214
+ ]
1215
+ }
1216
+ ]
1217
+ },
1218
+ {
1219
+ "type": "card",
1220
+ "children": [
1221
+ {
1222
+ "type": "stack",
1223
+ "direction": "vertical",
1224
+ "gap": "sm",
1225
+ "children": [
1226
+ {
1227
+ "type": "typography",
1228
+ "variant": "caption",
1229
+ "content": "Food"
1230
+ },
1231
+ {
1232
+ "type": "typography",
1233
+ "variant": "h3",
1234
+ "content": "@entity.food"
1235
+ }
1236
+ ]
1237
+ }
1238
+ ]
1239
+ },
1240
+ {
1241
+ "type": "card",
1242
+ "children": [
1243
+ {
1244
+ "type": "stack",
1245
+ "direction": "vertical",
1246
+ "gap": "sm",
1247
+ "children": [
1248
+ {
1249
+ "type": "typography",
1250
+ "variant": "caption",
1251
+ "content": "Wood"
1252
+ },
1253
+ {
1254
+ "type": "typography",
1255
+ "variant": "h3",
1256
+ "content": "@entity.wood"
1257
+ }
1258
+ ]
1259
+ }
1260
+ ]
1261
+ },
1262
+ {
1263
+ "type": "card",
1264
+ "children": [
1265
+ {
1266
+ "type": "stack",
1267
+ "direction": "vertical",
1268
+ "gap": "sm",
1269
+ "children": [
1270
+ {
1271
+ "type": "typography",
1272
+ "variant": "caption",
1273
+ "content": "Iron"
1274
+ },
1275
+ {
1276
+ "type": "typography",
1277
+ "variant": "h3",
1278
+ "content": "@entity.iron"
1279
+ }
1280
+ ]
1281
+ }
1282
+ ]
1283
+ }
1284
+ ]
1285
+ }
1286
+ ]
1287
+ }
1288
+ ]
1289
+ ]
1290
+ },
1291
+ {
1292
+ "from": "displaying",
1293
+ "to": "displaying",
1294
+ "event": "INIT",
1295
+ "effects": [
1296
+ [
1297
+ "fetch",
1298
+ "Resource"
1299
+ ],
1300
+ [
1301
+ "render-ui",
1302
+ "main",
1303
+ {
1304
+ "type": "stack",
1305
+ "direction": "vertical",
1306
+ "gap": "lg",
1307
+ "children": [
1308
+ {
1309
+ "type": "stack",
1310
+ "direction": "horizontal",
1311
+ "gap": "md",
1312
+ "justify": "space-between",
1313
+ "children": [
1314
+ {
1315
+ "type": "stack",
1316
+ "direction": "horizontal",
1317
+ "gap": "md",
1318
+ "children": [
1319
+ {
1320
+ "type": "icon",
1321
+ "name": "database",
1322
+ "size": "lg"
1323
+ },
1324
+ {
1325
+ "type": "typography",
1326
+ "content": "Resources",
1327
+ "variant": "h2"
1328
+ }
1329
+ ]
1330
+ },
1331
+ {
1332
+ "type": "button",
1333
+ "label": "Refresh",
1334
+ "event": "REFRESH",
1335
+ "variant": "secondary",
1336
+ "icon": "refresh-cw"
1337
+ }
1338
+ ]
1339
+ },
1340
+ {
1341
+ "type": "divider"
1342
+ },
1343
+ {
1344
+ "type": "simple-grid",
1345
+ "columns": 3,
1346
+ "children": [
1347
+ {
1348
+ "type": "card",
1349
+ "children": [
1350
+ {
1351
+ "type": "stack",
1352
+ "direction": "vertical",
1353
+ "gap": "sm",
1354
+ "children": [
1355
+ {
1356
+ "type": "typography",
1357
+ "variant": "caption",
1358
+ "content": "Gold"
1359
+ },
1360
+ {
1361
+ "type": "typography",
1362
+ "variant": "h3",
1363
+ "content": "@entity.gold"
1364
+ }
1365
+ ]
1366
+ }
1367
+ ]
1368
+ },
1369
+ {
1370
+ "type": "card",
1371
+ "children": [
1372
+ {
1373
+ "type": "stack",
1374
+ "direction": "vertical",
1375
+ "gap": "sm",
1376
+ "children": [
1377
+ {
1378
+ "type": "typography",
1379
+ "variant": "caption",
1380
+ "content": "Food"
1381
+ },
1382
+ {
1383
+ "type": "typography",
1384
+ "variant": "h3",
1385
+ "content": "@entity.food"
1386
+ }
1387
+ ]
1388
+ }
1389
+ ]
1390
+ },
1391
+ {
1392
+ "type": "card",
1393
+ "children": [
1394
+ {
1395
+ "type": "stack",
1396
+ "direction": "vertical",
1397
+ "gap": "sm",
1398
+ "children": [
1399
+ {
1400
+ "type": "typography",
1401
+ "variant": "caption",
1402
+ "content": "Wood"
1403
+ },
1404
+ {
1405
+ "type": "typography",
1406
+ "variant": "h3",
1407
+ "content": "@entity.wood"
1408
+ }
1409
+ ]
1410
+ }
1411
+ ]
1412
+ },
1413
+ {
1414
+ "type": "card",
1415
+ "children": [
1416
+ {
1417
+ "type": "stack",
1418
+ "direction": "vertical",
1419
+ "gap": "sm",
1420
+ "children": [
1421
+ {
1422
+ "type": "typography",
1423
+ "variant": "caption",
1424
+ "content": "Iron"
1425
+ },
1426
+ {
1427
+ "type": "typography",
1428
+ "variant": "h3",
1429
+ "content": "@entity.iron"
1430
+ }
1431
+ ]
1432
+ }
1433
+ ]
1434
+ }
1435
+ ]
1436
+ }
1437
+ ]
1438
+ }
1439
+ ]
1440
+ ]
1441
+ },
1442
+ {
1443
+ "from": "displaying",
1444
+ "to": "refreshing",
1445
+ "event": "REFRESH",
1446
+ "effects": [
1447
+ [
1448
+ "fetch",
1449
+ "Resource"
1450
+ ],
1451
+ [
1452
+ "render-ui",
1453
+ "main",
1454
+ {
1455
+ "type": "stack",
1456
+ "direction": "vertical",
1457
+ "gap": "lg",
1458
+ "children": [
1459
+ {
1460
+ "type": "stack",
1461
+ "direction": "horizontal",
1462
+ "gap": "md",
1463
+ "justify": "space-between",
1464
+ "children": [
1465
+ {
1466
+ "type": "stack",
1467
+ "direction": "horizontal",
1468
+ "gap": "md",
1469
+ "children": [
1470
+ {
1471
+ "type": "icon",
1472
+ "name": "database",
1473
+ "size": "lg"
1474
+ },
1475
+ {
1476
+ "type": "typography",
1477
+ "content": "Resources",
1478
+ "variant": "h2"
1479
+ }
1480
+ ]
1481
+ },
1482
+ {
1483
+ "type": "button",
1484
+ "label": "Refresh",
1485
+ "event": "REFRESH",
1486
+ "variant": "secondary",
1487
+ "icon": "refresh-cw"
1488
+ }
1489
+ ]
1490
+ },
1491
+ {
1492
+ "type": "divider"
1493
+ },
1494
+ {
1495
+ "type": "simple-grid",
1496
+ "columns": 3,
1497
+ "children": [
1498
+ {
1499
+ "type": "card",
1500
+ "children": [
1501
+ {
1502
+ "type": "stack",
1503
+ "direction": "vertical",
1504
+ "gap": "sm",
1505
+ "children": [
1506
+ {
1507
+ "type": "typography",
1508
+ "variant": "caption",
1509
+ "content": "Gold"
1510
+ },
1511
+ {
1512
+ "type": "typography",
1513
+ "variant": "h3",
1514
+ "content": "@entity.gold"
1515
+ }
1516
+ ]
1517
+ }
1518
+ ]
1519
+ },
1520
+ {
1521
+ "type": "card",
1522
+ "children": [
1523
+ {
1524
+ "type": "stack",
1525
+ "direction": "vertical",
1526
+ "gap": "sm",
1527
+ "children": [
1528
+ {
1529
+ "type": "typography",
1530
+ "variant": "caption",
1531
+ "content": "Food"
1532
+ },
1533
+ {
1534
+ "type": "typography",
1535
+ "variant": "h3",
1536
+ "content": "@entity.food"
1537
+ }
1538
+ ]
1539
+ }
1540
+ ]
1541
+ },
1542
+ {
1543
+ "type": "card",
1544
+ "children": [
1545
+ {
1546
+ "type": "stack",
1547
+ "direction": "vertical",
1548
+ "gap": "sm",
1549
+ "children": [
1550
+ {
1551
+ "type": "typography",
1552
+ "variant": "caption",
1553
+ "content": "Wood"
1554
+ },
1555
+ {
1556
+ "type": "typography",
1557
+ "variant": "h3",
1558
+ "content": "@entity.wood"
1559
+ }
1560
+ ]
1561
+ }
1562
+ ]
1563
+ },
1564
+ {
1565
+ "type": "card",
1566
+ "children": [
1567
+ {
1568
+ "type": "stack",
1569
+ "direction": "vertical",
1570
+ "gap": "sm",
1571
+ "children": [
1572
+ {
1573
+ "type": "typography",
1574
+ "variant": "caption",
1575
+ "content": "Iron"
1576
+ },
1577
+ {
1578
+ "type": "typography",
1579
+ "variant": "h3",
1580
+ "content": "@entity.iron"
1581
+ }
1582
+ ]
1583
+ }
1584
+ ]
1585
+ }
1586
+ ]
1587
+ }
1588
+ ]
1589
+ }
1590
+ ]
1591
+ ]
1592
+ },
1593
+ {
1594
+ "from": "refreshing",
1595
+ "to": "displaying",
1596
+ "event": "REFRESHED",
1597
+ "effects": [
1598
+ [
1599
+ "fetch",
1600
+ "Resource"
1601
+ ],
1602
+ [
1603
+ "render-ui",
1604
+ "main",
1605
+ {
1606
+ "type": "stack",
1607
+ "direction": "vertical",
1608
+ "gap": "lg",
1609
+ "children": [
1610
+ {
1611
+ "type": "stack",
1612
+ "direction": "horizontal",
1613
+ "gap": "md",
1614
+ "justify": "space-between",
1615
+ "children": [
1616
+ {
1617
+ "type": "stack",
1618
+ "direction": "horizontal",
1619
+ "gap": "md",
1620
+ "children": [
1621
+ {
1622
+ "type": "icon",
1623
+ "name": "database",
1624
+ "size": "lg"
1625
+ },
1626
+ {
1627
+ "type": "typography",
1628
+ "content": "Resources",
1629
+ "variant": "h2"
1630
+ }
1631
+ ]
1632
+ },
1633
+ {
1634
+ "type": "button",
1635
+ "label": "Refresh",
1636
+ "event": "REFRESH",
1637
+ "variant": "secondary",
1638
+ "icon": "refresh-cw"
1639
+ }
1640
+ ]
1641
+ },
1642
+ {
1643
+ "type": "divider"
1644
+ },
1645
+ {
1646
+ "type": "simple-grid",
1647
+ "columns": 3,
1648
+ "children": [
1649
+ {
1650
+ "type": "card",
1651
+ "children": [
1652
+ {
1653
+ "type": "stack",
1654
+ "direction": "vertical",
1655
+ "gap": "sm",
1656
+ "children": [
1657
+ {
1658
+ "type": "typography",
1659
+ "variant": "caption",
1660
+ "content": "Gold"
1661
+ },
1662
+ {
1663
+ "type": "typography",
1664
+ "variant": "h3",
1665
+ "content": "@entity.gold"
1666
+ }
1667
+ ]
1668
+ }
1669
+ ]
1670
+ },
1671
+ {
1672
+ "type": "card",
1673
+ "children": [
1674
+ {
1675
+ "type": "stack",
1676
+ "direction": "vertical",
1677
+ "gap": "sm",
1678
+ "children": [
1679
+ {
1680
+ "type": "typography",
1681
+ "variant": "caption",
1682
+ "content": "Food"
1683
+ },
1684
+ {
1685
+ "type": "typography",
1686
+ "variant": "h3",
1687
+ "content": "@entity.food"
1688
+ }
1689
+ ]
1690
+ }
1691
+ ]
1692
+ },
1693
+ {
1694
+ "type": "card",
1695
+ "children": [
1696
+ {
1697
+ "type": "stack",
1698
+ "direction": "vertical",
1699
+ "gap": "sm",
1700
+ "children": [
1701
+ {
1702
+ "type": "typography",
1703
+ "variant": "caption",
1704
+ "content": "Wood"
1705
+ },
1706
+ {
1707
+ "type": "typography",
1708
+ "variant": "h3",
1709
+ "content": "@entity.wood"
1710
+ }
1711
+ ]
1712
+ }
1713
+ ]
1714
+ },
1715
+ {
1716
+ "type": "card",
1717
+ "children": [
1718
+ {
1719
+ "type": "stack",
1720
+ "direction": "vertical",
1721
+ "gap": "sm",
1722
+ "children": [
1723
+ {
1724
+ "type": "typography",
1725
+ "variant": "caption",
1726
+ "content": "Iron"
1727
+ },
1728
+ {
1729
+ "type": "typography",
1730
+ "variant": "h3",
1731
+ "content": "@entity.iron"
1732
+ }
1733
+ ]
1734
+ }
1735
+ ]
1736
+ }
1737
+ ]
1738
+ }
1739
+ ]
1740
+ }
1741
+ ]
1742
+ ]
1743
+ }
1744
+ ]
1745
+ }
1746
+ }
1747
+ ],
1748
+ "pages": [
1749
+ {
1750
+ "name": "ResourcesPage",
1751
+ "path": "/resources",
1752
+ "traits": [
1753
+ {
1754
+ "ref": "ResourceDisplay"
1755
+ }
1756
+ ]
1757
+ }
1758
+ ]
1759
+ }
1760
+ ],
1761
+ "description": "Strategy game organism. Composes: stdTurnBasedBattle(ArmyBattle) + stdOverworld(Territory) + stdDisplay(Resource) Pages: /battle, /map (initial), /resources"
1762
+ }