@almadar/std 2.1.0 → 2.4.1

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 (86) hide show
  1. package/dist/behaviors/async.d.ts +12 -7
  2. package/dist/behaviors/async.js +1085 -312
  3. package/dist/behaviors/async.js.map +1 -1
  4. package/dist/behaviors/data-management.d.ts +27 -13
  5. package/dist/behaviors/data-management.js +600 -244
  6. package/dist/behaviors/data-management.js.map +1 -1
  7. package/dist/behaviors/domain/commerce.d.ts +51 -0
  8. package/dist/behaviors/domain/commerce.js +1093 -0
  9. package/dist/behaviors/domain/commerce.js.map +1 -0
  10. package/dist/behaviors/domain/content.d.ts +51 -0
  11. package/dist/behaviors/domain/content.js +1294 -0
  12. package/dist/behaviors/domain/content.js.map +1 -0
  13. package/dist/behaviors/domain/dashboard.d.ts +45 -0
  14. package/dist/behaviors/domain/dashboard.js +783 -0
  15. package/dist/behaviors/domain/dashboard.js.map +1 -0
  16. package/dist/behaviors/domain/education.d.ts +41 -0
  17. package/dist/behaviors/domain/education.js +738 -0
  18. package/dist/behaviors/domain/education.js.map +1 -0
  19. package/dist/behaviors/domain/finance.d.ts +49 -0
  20. package/dist/behaviors/domain/finance.js +660 -0
  21. package/dist/behaviors/domain/finance.js.map +1 -0
  22. package/dist/behaviors/domain/game-2d-platformer.d.ts +50 -0
  23. package/dist/behaviors/domain/game-2d-platformer.js +810 -0
  24. package/dist/behaviors/domain/game-2d-platformer.js.map +1 -0
  25. package/dist/behaviors/domain/game-2d-puzzle.d.ts +42 -0
  26. package/dist/behaviors/domain/game-2d-puzzle.js +622 -0
  27. package/dist/behaviors/domain/game-2d-puzzle.js.map +1 -0
  28. package/dist/behaviors/domain/game-2d-rpg.d.ts +48 -0
  29. package/dist/behaviors/domain/game-2d-rpg.js +860 -0
  30. package/dist/behaviors/domain/game-2d-rpg.js.map +1 -0
  31. package/dist/behaviors/domain/game-2d-strategy.d.ts +48 -0
  32. package/dist/behaviors/domain/game-2d-strategy.js +692 -0
  33. package/dist/behaviors/domain/game-2d-strategy.js.map +1 -0
  34. package/dist/behaviors/domain/geospatial.d.ts +35 -0
  35. package/dist/behaviors/domain/geospatial.js +634 -0
  36. package/dist/behaviors/domain/geospatial.js.map +1 -0
  37. package/dist/behaviors/domain/healthcare.d.ts +36 -0
  38. package/dist/behaviors/domain/healthcare.js +1068 -0
  39. package/dist/behaviors/domain/healthcare.js.map +1 -0
  40. package/dist/behaviors/domain/iot.d.ts +45 -0
  41. package/dist/behaviors/domain/iot.js +589 -0
  42. package/dist/behaviors/domain/iot.js.map +1 -0
  43. package/dist/behaviors/domain/media.d.ts +41 -0
  44. package/dist/behaviors/domain/media.js +771 -0
  45. package/dist/behaviors/domain/media.js.map +1 -0
  46. package/dist/behaviors/domain/scheduling.d.ts +41 -0
  47. package/dist/behaviors/domain/scheduling.js +930 -0
  48. package/dist/behaviors/domain/scheduling.js.map +1 -0
  49. package/dist/behaviors/domain/simulation.d.ts +36 -0
  50. package/dist/behaviors/domain/simulation.js +706 -0
  51. package/dist/behaviors/domain/simulation.js.map +1 -0
  52. package/dist/behaviors/domain/social.d.ts +41 -0
  53. package/dist/behaviors/domain/social.js +840 -0
  54. package/dist/behaviors/domain/social.js.map +1 -0
  55. package/dist/behaviors/domain/workflow.d.ts +41 -0
  56. package/dist/behaviors/domain/workflow.js +879 -0
  57. package/dist/behaviors/domain/workflow.js.map +1 -0
  58. package/dist/behaviors/feedback.d.ts +10 -5
  59. package/dist/behaviors/feedback.js +279 -194
  60. package/dist/behaviors/feedback.js.map +1 -1
  61. package/dist/behaviors/game-core.d.ts +15 -8
  62. package/dist/behaviors/game-core.js +412 -80
  63. package/dist/behaviors/game-core.js.map +1 -1
  64. package/dist/behaviors/game-entity.d.ts +17 -10
  65. package/dist/behaviors/game-entity.js +544 -237
  66. package/dist/behaviors/game-entity.js.map +1 -1
  67. package/dist/behaviors/game-ui.d.ts +16 -8
  68. package/dist/behaviors/game-ui.js +451 -316
  69. package/dist/behaviors/game-ui.js.map +1 -1
  70. package/dist/behaviors/index.d.ts +18 -1
  71. package/dist/behaviors/index.js +18905 -2140
  72. package/dist/behaviors/index.js.map +1 -1
  73. package/dist/behaviors/infrastructure.d.ts +9 -8
  74. package/dist/behaviors/infrastructure.js +597 -169
  75. package/dist/behaviors/infrastructure.js.map +1 -1
  76. package/dist/behaviors/registry.d.ts +11 -11
  77. package/dist/behaviors/registry.js +18904 -2139
  78. package/dist/behaviors/registry.js.map +1 -1
  79. package/dist/behaviors/types.d.ts +19 -2
  80. package/dist/behaviors/types.js.map +1 -1
  81. package/dist/behaviors/ui-interaction.d.ts +20 -14
  82. package/dist/behaviors/ui-interaction.js +928 -518
  83. package/dist/behaviors/ui-interaction.js.map +1 -1
  84. package/dist/index.js +18906 -2141
  85. package/dist/index.js.map +1 -1
  86. package/package.json +4 -1
@@ -0,0 +1,692 @@
1
+ // behaviors/domain/game-2d-strategy.ts
2
+ var STRATEGY_THEME = {
3
+ name: "game-strategy-emerald",
4
+ tokens: {
5
+ colors: {
6
+ primary: "#059669",
7
+ "primary-hover": "#047857",
8
+ "primary-foreground": "#ffffff",
9
+ accent: "#34d399",
10
+ "accent-foreground": "#000000",
11
+ success: "#22c55e",
12
+ warning: "#f59e0b",
13
+ error: "#ef4444"
14
+ }
15
+ }
16
+ };
17
+ var KFLOW_ASSETS = "https://almadar-kflow-assets.web.app/shared";
18
+ var GAME_MANIFEST = {
19
+ terrain: {
20
+ stone: "/terrain/Isometric/stoneSide_N.png",
21
+ dirt: "/terrain/Isometric/dirt_N.png",
22
+ bridge: "/terrain/Isometric/stoneStep_N.png",
23
+ wall: "/terrain/Isometric/stoneWallArchway_N.png"
24
+ },
25
+ units: {
26
+ guardian: "/sprite-sheets/guardian-sprite-sheet-se.png",
27
+ breaker: "/sprite-sheets/breaker-sprite-sheet-se.png",
28
+ archivist: "/sprite-sheets/archivist-sprite-sheet-se.png"
29
+ },
30
+ features: {
31
+ gold_mine: "/world-map/gold_mine.png",
32
+ portal: "/world-map/portal_open.png",
33
+ treasure: "/world-map/treasure_chest_closed.png",
34
+ battle_marker: "/world-map/battle_marker.png",
35
+ power_node: "/world-map/power_node.png"
36
+ }
37
+ };
38
+ var TILES_8X6 = [];
39
+ for (let y = 0; y < 6; y++) {
40
+ for (let x = 0; x < 8; x++) {
41
+ TILES_8X6.push({ x, y, terrain: (x + y) % 3 === 0 ? "stone" : (x + y) % 3 === 1 ? "dirt" : "bridge" });
42
+ }
43
+ }
44
+ var turnCanvasView = ["render-ui", "main", {
45
+ type: "isometric-canvas",
46
+ tiles: TILES_8X6,
47
+ units: [
48
+ { id: "player1", x: 1, y: 2, unitType: "guardian" },
49
+ { id: "player2", x: 5, y: 3, unitType: "breaker" }
50
+ ],
51
+ scale: 0.4,
52
+ boardWidth: 8,
53
+ boardHeight: 6,
54
+ enableCamera: true,
55
+ assetBaseUrl: KFLOW_ASSETS,
56
+ assetManifest: GAME_MANIFEST
57
+ }];
58
+ var turnHudOverlay = ["render-ui", "overlay", {
59
+ type: "stack",
60
+ direction: "vertical",
61
+ gap: "md",
62
+ children: [
63
+ { type: "game-hud", position: "top", elements: [
64
+ { label: "Turn", value: "@entity.turnNumber", icon: "layers" },
65
+ { label: "Player", value: "@entity.currentPlayer", icon: "users" },
66
+ { label: "Phase", value: "@entity.phase", icon: "flag" }
67
+ ] },
68
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
69
+ { type: "button", label: "Begin Turn", action: "BEGIN_TURN", icon: "sword", variant: "primary" },
70
+ { type: "button", label: "End Actions", action: "END_ACTIONS", icon: "shield", variant: "secondary" },
71
+ { type: "button", label: "Next Turn", action: "NEXT_TURN", icon: "castle", variant: "secondary" }
72
+ ] }
73
+ ]
74
+ }];
75
+ var TURN_SYSTEM_BEHAVIOR = {
76
+ name: "std-turn-system",
77
+ version: "1.0.0",
78
+ description: "Turn-based game cycle with phases",
79
+ theme: STRATEGY_THEME,
80
+ orbitals: [
81
+ {
82
+ name: "TurnSystemOrbital",
83
+ entity: {
84
+ name: "TurnData",
85
+ persistence: "runtime",
86
+ fields: [
87
+ { name: "id", type: "string", required: true },
88
+ { name: "currentPlayer", type: "number", default: 1 },
89
+ { name: "turnNumber", type: "number", default: 1 },
90
+ { name: "phase", type: "string", default: "waiting" }
91
+ ]
92
+ },
93
+ traits: [
94
+ {
95
+ name: "TurnSystem",
96
+ linkedEntity: "TurnData",
97
+ category: "interaction",
98
+ stateMachine: {
99
+ states: [
100
+ { name: "Waiting", isInitial: true },
101
+ { name: "Acting" },
102
+ { name: "Resolving" }
103
+ ],
104
+ events: [
105
+ { key: "INIT", name: "Initialize" },
106
+ { key: "BEGIN_TURN", name: "Begin Turn" },
107
+ { key: "END_ACTIONS", name: "End Actions" },
108
+ { key: "RESOLVE", name: "Resolve" },
109
+ { key: "NEXT_TURN", name: "Next Turn" }
110
+ ],
111
+ transitions: [
112
+ {
113
+ from: "Waiting",
114
+ to: "Waiting",
115
+ event: "INIT",
116
+ effects: [
117
+ ["fetch", "TurnData"],
118
+ ["set", "@entity.currentPlayer", 1],
119
+ ["set", "@entity.turnNumber", 1],
120
+ ["set", "@entity.phase", "waiting"],
121
+ turnCanvasView,
122
+ turnHudOverlay
123
+ ]
124
+ },
125
+ {
126
+ from: "Waiting",
127
+ to: "Acting",
128
+ event: "BEGIN_TURN",
129
+ effects: [
130
+ ["fetch", "TurnData"],
131
+ ["set", "@entity.phase", "acting"],
132
+ turnCanvasView,
133
+ turnHudOverlay
134
+ ]
135
+ },
136
+ {
137
+ from: "Acting",
138
+ to: "Resolving",
139
+ event: "END_ACTIONS",
140
+ effects: [
141
+ ["fetch", "TurnData"],
142
+ ["set", "@entity.phase", "resolving"],
143
+ turnCanvasView,
144
+ turnHudOverlay
145
+ ]
146
+ },
147
+ {
148
+ from: "Resolving",
149
+ to: "Waiting",
150
+ event: "RESOLVE",
151
+ effects: [
152
+ ["fetch", "TurnData"],
153
+ ["set", "@entity.phase", "waiting"],
154
+ turnCanvasView,
155
+ turnHudOverlay
156
+ ]
157
+ },
158
+ {
159
+ from: "Resolving",
160
+ to: "Waiting",
161
+ event: "NEXT_TURN",
162
+ effects: [
163
+ ["fetch", "TurnData"],
164
+ ["set", "@entity.turnNumber", ["+", "@entity.turnNumber", 1]],
165
+ ["set", "@entity.currentPlayer", ["if", ["=", "@entity.currentPlayer", 1], 2, 1]],
166
+ ["set", "@entity.phase", "waiting"],
167
+ turnCanvasView,
168
+ turnHudOverlay
169
+ ]
170
+ }
171
+ ]
172
+ }
173
+ }
174
+ ],
175
+ pages: [
176
+ {
177
+ name: "TurnSystemPage",
178
+ path: "/turn-system",
179
+ isInitial: true,
180
+ traits: [{ ref: "TurnSystem" }]
181
+ }
182
+ ]
183
+ }
184
+ ]
185
+ };
186
+ var unitCommandCanvasView = ["render-ui", "main", {
187
+ type: "isometric-canvas",
188
+ tiles: TILES_8X6,
189
+ units: [
190
+ { id: "unit1", x: 2, y: 1, unitType: "guardian" },
191
+ { id: "unit2", x: 4, y: 3, unitType: "breaker" },
192
+ { id: "unit3", x: 6, y: 2, unitType: "archivist" }
193
+ ],
194
+ scale: 0.4,
195
+ boardWidth: 8,
196
+ boardHeight: 6,
197
+ enableCamera: true,
198
+ unitClickEvent: "SELECT_UNIT",
199
+ tileClickEvent: "ISSUE_COMMAND",
200
+ assetBaseUrl: KFLOW_ASSETS,
201
+ assetManifest: GAME_MANIFEST
202
+ }];
203
+ var unitCommandHudOverlay = ["render-ui", "overlay", {
204
+ type: "stack",
205
+ direction: "vertical",
206
+ gap: "md",
207
+ children: [
208
+ { type: "game-hud", position: "top", elements: [
209
+ { label: "Unit", value: "@entity.unitId", icon: "users" },
210
+ { label: "Command", value: "@entity.commandType", icon: "map" },
211
+ { label: "Target X", value: "@entity.targetX", icon: "target" },
212
+ { label: "Target Y", value: "@entity.targetY", icon: "target" }
213
+ ] },
214
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
215
+ { type: "button", label: "Select Unit", action: "SELECT_UNIT", icon: "users", variant: "primary" },
216
+ { type: "button", label: "Issue Command", action: "ISSUE_COMMAND", icon: "sword", variant: "primary" },
217
+ { type: "button", label: "Execute", action: "EXECUTE", icon: "shield", variant: "secondary" },
218
+ { type: "button", label: "Deselect", action: "DESELECT", icon: "target", variant: "secondary" }
219
+ ] }
220
+ ]
221
+ }];
222
+ var UNIT_COMMAND_BEHAVIOR = {
223
+ name: "std-unit-command",
224
+ version: "1.0.0",
225
+ description: "Unit selection and command issuing for strategy games",
226
+ theme: STRATEGY_THEME,
227
+ orbitals: [
228
+ {
229
+ name: "UnitCommandOrbital",
230
+ entity: {
231
+ name: "UnitCommand",
232
+ persistence: "runtime",
233
+ fields: [
234
+ { name: "id", type: "string", required: true },
235
+ { name: "unitId", type: "string", default: "" },
236
+ { name: "commandType", type: "string", default: "" },
237
+ { name: "targetX", type: "number", default: 0 },
238
+ { name: "targetY", type: "number", default: 0 }
239
+ ]
240
+ },
241
+ traits: [
242
+ {
243
+ name: "UnitCommander",
244
+ linkedEntity: "UnitCommand",
245
+ category: "interaction",
246
+ stateMachine: {
247
+ states: [
248
+ { name: "Idle", isInitial: true },
249
+ { name: "Selected" },
250
+ { name: "Commanding" }
251
+ ],
252
+ events: [
253
+ { key: "INIT", name: "Initialize" },
254
+ { key: "SELECT_UNIT", name: "Select Unit", payloadSchema: [
255
+ { name: "unitId", type: "string", required: true }
256
+ ] },
257
+ { key: "ISSUE_COMMAND", name: "Issue Command", payloadSchema: [
258
+ { name: "commandType", type: "string", required: true },
259
+ { name: "targetX", type: "number", required: true },
260
+ { name: "targetY", type: "number", required: true }
261
+ ] },
262
+ { key: "EXECUTE", name: "Execute Command" },
263
+ { key: "DESELECT", name: "Deselect" }
264
+ ],
265
+ transitions: [
266
+ {
267
+ from: "Idle",
268
+ to: "Idle",
269
+ event: "INIT",
270
+ effects: [
271
+ ["fetch", "UnitCommand"],
272
+ ["set", "@entity.unitId", ""],
273
+ ["set", "@entity.commandType", ""],
274
+ unitCommandCanvasView,
275
+ unitCommandHudOverlay
276
+ ]
277
+ },
278
+ {
279
+ from: "Idle",
280
+ to: "Selected",
281
+ event: "SELECT_UNIT",
282
+ effects: [
283
+ ["fetch", "UnitCommand"],
284
+ ["set", "@entity.unitId", "@payload.unitId"],
285
+ unitCommandCanvasView,
286
+ unitCommandHudOverlay
287
+ ]
288
+ },
289
+ {
290
+ from: "Selected",
291
+ to: "Commanding",
292
+ event: "ISSUE_COMMAND",
293
+ effects: [
294
+ ["fetch", "UnitCommand"],
295
+ ["set", "@entity.commandType", "@payload.commandType"],
296
+ ["set", "@entity.targetX", "@payload.targetX"],
297
+ ["set", "@entity.targetY", "@payload.targetY"],
298
+ unitCommandCanvasView,
299
+ unitCommandHudOverlay
300
+ ]
301
+ },
302
+ {
303
+ from: "Commanding",
304
+ to: "Idle",
305
+ event: "EXECUTE",
306
+ effects: [
307
+ ["fetch", "UnitCommand"],
308
+ ["set", "@entity.unitId", ""],
309
+ ["set", "@entity.commandType", ""],
310
+ unitCommandCanvasView,
311
+ unitCommandHudOverlay
312
+ ]
313
+ },
314
+ {
315
+ from: "Selected",
316
+ to: "Idle",
317
+ event: "DESELECT",
318
+ effects: [
319
+ ["fetch", "UnitCommand"],
320
+ ["set", "@entity.unitId", ""],
321
+ unitCommandCanvasView,
322
+ unitCommandHudOverlay
323
+ ]
324
+ }
325
+ ]
326
+ }
327
+ }
328
+ ],
329
+ pages: [
330
+ {
331
+ name: "UnitCommandPage",
332
+ path: "/unit-command",
333
+ isInitial: true,
334
+ traits: [{ ref: "UnitCommander" }]
335
+ }
336
+ ]
337
+ }
338
+ ]
339
+ };
340
+ var fogCanvasView = ["render-ui", "main", {
341
+ type: "isometric-canvas",
342
+ tiles: TILES_8X6,
343
+ units: [{ id: "scout", x: 3, y: 2, unitType: "guardian" }],
344
+ features: [
345
+ { id: "mine", x: 1, y: 1, featureType: "gold_mine" },
346
+ { id: "node", x: 6, y: 4, featureType: "power_node" }
347
+ ],
348
+ scale: 0.4,
349
+ boardWidth: 8,
350
+ boardHeight: 6,
351
+ enableCamera: true,
352
+ assetBaseUrl: KFLOW_ASSETS,
353
+ assetManifest: GAME_MANIFEST
354
+ }];
355
+ var fogHudOverlay = ["render-ui", "overlay", {
356
+ type: "stack",
357
+ direction: "vertical",
358
+ gap: "md",
359
+ children: [
360
+ { type: "game-hud", position: "top", elements: [
361
+ { label: "Visible", value: "@entity.visibleTiles", icon: "target" },
362
+ { label: "Explored", value: "@entity.exploredTiles", icon: "map" },
363
+ { label: "Radius", value: "@entity.revealRadius", icon: "layers" }
364
+ ] },
365
+ { type: "progress-bar", value: "@entity.visibleTiles", max: "@entity.exploredTiles", label: "Visibility Coverage" },
366
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
367
+ { type: "button", label: "Reveal Area", action: "REVEAL", icon: "target", variant: "primary" },
368
+ { type: "button", label: "Explore", action: "EXPLORE", icon: "map", variant: "primary" },
369
+ { type: "button", label: "Reveal All", action: "REVEAL_ALL", icon: "layers", variant: "secondary" },
370
+ { type: "button", label: "Reset Fog", action: "RESET_FOG", icon: "shield", variant: "secondary" }
371
+ ] }
372
+ ]
373
+ }];
374
+ var FOG_OF_WAR_BEHAVIOR = {
375
+ name: "std-fog-of-war",
376
+ version: "1.0.0",
377
+ description: "Map visibility and fog of war management",
378
+ theme: STRATEGY_THEME,
379
+ orbitals: [
380
+ {
381
+ name: "FogOfWarOrbital",
382
+ entity: {
383
+ name: "FogData",
384
+ persistence: "runtime",
385
+ fields: [
386
+ { name: "id", type: "string", required: true },
387
+ { name: "visibleTiles", type: "number", default: 0 },
388
+ { name: "exploredTiles", type: "number", default: 0 },
389
+ { name: "revealRadius", type: "number", default: 3 }
390
+ ]
391
+ },
392
+ traits: [
393
+ {
394
+ name: "FogOfWar",
395
+ linkedEntity: "FogData",
396
+ category: "interaction",
397
+ stateMachine: {
398
+ states: [
399
+ { name: "Hidden", isInitial: true },
400
+ { name: "Partial" },
401
+ { name: "Revealed" }
402
+ ],
403
+ events: [
404
+ { key: "INIT", name: "Initialize" },
405
+ { key: "REVEAL", name: "Reveal Area", payloadSchema: [
406
+ { name: "tiles", type: "number", required: true }
407
+ ] },
408
+ { key: "EXPLORE", name: "Explore" },
409
+ { key: "REVEAL_ALL", name: "Reveal All" },
410
+ { key: "RESET_FOG", name: "Reset Fog" }
411
+ ],
412
+ transitions: [
413
+ {
414
+ from: "Hidden",
415
+ to: "Hidden",
416
+ event: "INIT",
417
+ effects: [
418
+ ["fetch", "FogData"],
419
+ ["set", "@entity.visibleTiles", 0],
420
+ ["set", "@entity.exploredTiles", 0],
421
+ fogCanvasView,
422
+ fogHudOverlay
423
+ ]
424
+ },
425
+ {
426
+ from: "Hidden",
427
+ to: "Partial",
428
+ event: "REVEAL",
429
+ effects: [
430
+ ["fetch", "FogData"],
431
+ ["set", "@entity.visibleTiles", "@payload.tiles"],
432
+ ["set", "@entity.exploredTiles", "@payload.tiles"],
433
+ fogCanvasView,
434
+ fogHudOverlay
435
+ ]
436
+ },
437
+ {
438
+ from: "Partial",
439
+ to: "Partial",
440
+ event: "REVEAL",
441
+ effects: [
442
+ ["fetch", "FogData"],
443
+ ["set", "@entity.visibleTiles", "@payload.tiles"],
444
+ ["set", "@entity.exploredTiles", ["+", "@entity.exploredTiles", "@payload.tiles"]],
445
+ fogCanvasView,
446
+ fogHudOverlay
447
+ ]
448
+ },
449
+ {
450
+ from: "Partial",
451
+ to: "Partial",
452
+ event: "EXPLORE",
453
+ effects: [
454
+ ["fetch", "FogData"],
455
+ ["set", "@entity.exploredTiles", ["+", "@entity.exploredTiles", "@entity.revealRadius"]],
456
+ fogCanvasView,
457
+ fogHudOverlay
458
+ ]
459
+ },
460
+ {
461
+ from: "Partial",
462
+ to: "Revealed",
463
+ event: "REVEAL_ALL",
464
+ effects: [
465
+ ["fetch", "FogData"],
466
+ ["set", "@entity.visibleTiles", "@entity.exploredTiles"],
467
+ fogCanvasView,
468
+ fogHudOverlay
469
+ ]
470
+ },
471
+ {
472
+ from: "Revealed",
473
+ to: "Hidden",
474
+ event: "RESET_FOG",
475
+ effects: [
476
+ ["fetch", "FogData"],
477
+ ["set", "@entity.visibleTiles", 0],
478
+ ["set", "@entity.exploredTiles", 0],
479
+ fogCanvasView,
480
+ fogHudOverlay
481
+ ]
482
+ }
483
+ ]
484
+ }
485
+ }
486
+ ],
487
+ pages: [
488
+ {
489
+ name: "FogOfWarPage",
490
+ path: "/fog-of-war",
491
+ isInitial: true,
492
+ traits: [{ ref: "FogOfWar" }]
493
+ }
494
+ ]
495
+ }
496
+ ]
497
+ };
498
+ var resourceCanvasView = ["render-ui", "main", {
499
+ type: "isometric-canvas",
500
+ tiles: TILES_8X6,
501
+ units: [{ id: "gatherer", x: 3, y: 2, unitType: "guardian" }],
502
+ features: [
503
+ { id: "mine", x: 1, y: 1, featureType: "gold_mine" },
504
+ { id: "node", x: 6, y: 4, featureType: "power_node" },
505
+ { id: "chest", x: 4, y: 0, featureType: "treasure" }
506
+ ],
507
+ scale: 0.4,
508
+ boardWidth: 8,
509
+ boardHeight: 6,
510
+ enableCamera: true,
511
+ assetBaseUrl: KFLOW_ASSETS,
512
+ assetManifest: GAME_MANIFEST
513
+ }];
514
+ var resourceHudOverlay = ["render-ui", "overlay", {
515
+ type: "stack",
516
+ direction: "vertical",
517
+ gap: "md",
518
+ children: [
519
+ { type: "game-hud", position: "top", elements: [
520
+ { label: "Gold", value: "@entity.gold", icon: "coins" },
521
+ { label: "Wood", value: "@entity.wood", icon: "layers" },
522
+ { label: "Stone", value: "@entity.stone", icon: "castle" },
523
+ { label: "Food", value: "@entity.food", icon: "shield" }
524
+ ] },
525
+ { type: "progress-bar", value: "@entity.gold", max: "@entity.capacity", label: "Gold Capacity" },
526
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
527
+ { type: "button", label: "Gather", action: "GATHER", icon: "coins", variant: "primary" },
528
+ { type: "button", label: "Spend", action: "SPEND", icon: "sword", variant: "secondary" },
529
+ { type: "button", label: "Check Status", action: "CHECK_STATUS", icon: "flag", variant: "secondary" }
530
+ ] }
531
+ ]
532
+ }];
533
+ var RESOURCE_BEHAVIOR = {
534
+ name: "std-resource",
535
+ version: "1.0.0",
536
+ description: "Strategy game resource management",
537
+ theme: STRATEGY_THEME,
538
+ orbitals: [
539
+ {
540
+ name: "ResourceOrbital",
541
+ entity: {
542
+ name: "ResourceData",
543
+ persistence: "runtime",
544
+ fields: [
545
+ { name: "id", type: "string", required: true },
546
+ { name: "gold", type: "number", default: 100 },
547
+ { name: "wood", type: "number", default: 50 },
548
+ { name: "stone", type: "number", default: 30 },
549
+ { name: "food", type: "number", default: 80 },
550
+ { name: "capacity", type: "number", default: 500 }
551
+ ]
552
+ },
553
+ traits: [
554
+ {
555
+ name: "ResourceManager",
556
+ linkedEntity: "ResourceData",
557
+ category: "interaction",
558
+ stateMachine: {
559
+ states: [
560
+ { name: "Stable", isInitial: true },
561
+ { name: "Surplus" },
562
+ { name: "Deficit" }
563
+ ],
564
+ events: [
565
+ { key: "INIT", name: "Initialize" },
566
+ { key: "GATHER", name: "Gather Resources", payloadSchema: [
567
+ { name: "amount", type: "number", required: true }
568
+ ] },
569
+ { key: "SPEND", name: "Spend Resources", payloadSchema: [
570
+ { name: "amount", type: "number", required: true }
571
+ ] },
572
+ { key: "CHECK_STATUS", name: "Check Status" },
573
+ { key: "STABILIZE", name: "Stabilize" }
574
+ ],
575
+ transitions: [
576
+ {
577
+ from: "Stable",
578
+ to: "Stable",
579
+ event: "INIT",
580
+ effects: [
581
+ ["set", "@entity.gold", 100],
582
+ ["set", "@entity.wood", 50],
583
+ ["set", "@entity.stone", 30],
584
+ ["set", "@entity.food", 80],
585
+ resourceCanvasView,
586
+ resourceHudOverlay
587
+ ]
588
+ },
589
+ {
590
+ from: "Stable",
591
+ to: "Stable",
592
+ event: "GATHER",
593
+ effects: [
594
+ ["set", "@entity.gold", ["+", "@entity.gold", "@payload.amount"]],
595
+ resourceCanvasView,
596
+ resourceHudOverlay
597
+ ]
598
+ },
599
+ {
600
+ from: "Stable",
601
+ to: "Stable",
602
+ event: "SPEND",
603
+ guard: [">=", "@entity.gold", "@payload.amount"],
604
+ effects: [
605
+ ["set", "@entity.gold", ["-", "@entity.gold", "@payload.amount"]],
606
+ resourceCanvasView,
607
+ resourceHudOverlay
608
+ ]
609
+ },
610
+ {
611
+ from: "Stable",
612
+ to: "Surplus",
613
+ event: "CHECK_STATUS",
614
+ guard: [">", "@entity.gold", "@entity.capacity"],
615
+ effects: [
616
+ resourceCanvasView,
617
+ resourceHudOverlay
618
+ ]
619
+ },
620
+ {
621
+ from: "Stable",
622
+ to: "Deficit",
623
+ event: "CHECK_STATUS",
624
+ guard: ["<", "@entity.food", 10],
625
+ effects: [
626
+ resourceCanvasView,
627
+ resourceHudOverlay
628
+ ]
629
+ },
630
+ {
631
+ from: "Surplus",
632
+ to: "Stable",
633
+ event: "STABILIZE",
634
+ effects: [
635
+ resourceCanvasView,
636
+ resourceHudOverlay
637
+ ]
638
+ },
639
+ {
640
+ from: "Deficit",
641
+ to: "Stable",
642
+ event: "STABILIZE",
643
+ effects: [
644
+ resourceCanvasView,
645
+ resourceHudOverlay
646
+ ]
647
+ },
648
+ {
649
+ from: "Surplus",
650
+ to: "Surplus",
651
+ event: "GATHER",
652
+ effects: [
653
+ ["set", "@entity.gold", ["+", "@entity.gold", "@payload.amount"]],
654
+ resourceCanvasView,
655
+ resourceHudOverlay
656
+ ]
657
+ },
658
+ {
659
+ from: "Deficit",
660
+ to: "Deficit",
661
+ event: "GATHER",
662
+ effects: [
663
+ ["set", "@entity.gold", ["+", "@entity.gold", "@payload.amount"]],
664
+ resourceCanvasView,
665
+ resourceHudOverlay
666
+ ]
667
+ }
668
+ ]
669
+ }
670
+ }
671
+ ],
672
+ pages: [
673
+ {
674
+ name: "ResourcePage",
675
+ path: "/resources",
676
+ isInitial: true,
677
+ traits: [{ ref: "ResourceManager" }]
678
+ }
679
+ ]
680
+ }
681
+ ]
682
+ };
683
+ var GAME_2D_STRATEGY_BEHAVIORS = [
684
+ TURN_SYSTEM_BEHAVIOR,
685
+ UNIT_COMMAND_BEHAVIOR,
686
+ FOG_OF_WAR_BEHAVIOR,
687
+ RESOURCE_BEHAVIOR
688
+ ];
689
+
690
+ export { FOG_OF_WAR_BEHAVIOR, GAME_2D_STRATEGY_BEHAVIORS, RESOURCE_BEHAVIOR, TURN_SYSTEM_BEHAVIOR, UNIT_COMMAND_BEHAVIOR };
691
+ //# sourceMappingURL=game-2d-strategy.js.map
692
+ //# sourceMappingURL=game-2d-strategy.js.map