@almadar/std 2.1.1 → 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 +1 -1
@@ -0,0 +1,810 @@
1
+ // behaviors/domain/game-2d-platformer.ts
2
+ var PLATFORMER_THEME = {
3
+ name: "game-platformer-red",
4
+ tokens: {
5
+ colors: {
6
+ primary: "#dc2626",
7
+ "primary-hover": "#b91c1c",
8
+ "primary-foreground": "#ffffff",
9
+ accent: "#f87171",
10
+ "accent-foreground": "#000000",
11
+ success: "#22c55e",
12
+ warning: "#f59e0b",
13
+ error: "#ef4444"
14
+ }
15
+ }
16
+ };
17
+ var platformerHudEffects = [
18
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
19
+ // Header: gamepad icon + title
20
+ { type: "stack", direction: "horizontal", justify: "space-between", children: [
21
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
22
+ { type: "icon", name: "gamepad-2", size: "lg" },
23
+ { type: "typography", variant: "h2", content: "Platformer" }
24
+ ] },
25
+ { type: "badge", label: "Active", variant: "success", icon: "zap" }
26
+ ] },
27
+ { type: "divider" },
28
+ // Stats row: lives, position, jump status
29
+ { type: "stack", direction: "horizontal", gap: "md", children: [
30
+ { type: "stats", label: "Lives", icon: "heart", entity: "PlatformerData" },
31
+ { type: "stats", label: "Level", icon: "flag", entity: "PlatformerData" },
32
+ { type: "stats", label: "Position X", icon: "map", entity: "PlatformerData" },
33
+ { type: "stats", label: "Position Y", icon: "map", entity: "PlatformerData" }
34
+ ] },
35
+ { type: "divider" },
36
+ // Character info grid
37
+ {
38
+ type: "data-grid",
39
+ entity: "PlatformerData",
40
+ cols: 2,
41
+ gap: "md",
42
+ fields: [
43
+ { name: "id", label: "Character", icon: "sword", variant: "h4" },
44
+ { name: "level", label: "Level", icon: "flag", variant: "body", format: "number" },
45
+ { name: "lives", label: "Lives", icon: "heart", variant: "body", format: "number" },
46
+ { name: "isJumping", label: "Jumping", icon: "zap", variant: "badge" }
47
+ ]
48
+ },
49
+ { type: "divider" },
50
+ // Health meter
51
+ { type: "meter", value: 0, label: "Lives Remaining", icon: "heart", entity: "PlatformerData" }
52
+ ] }]
53
+ ];
54
+ var platformerGameOverEffects = [
55
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
56
+ // Game over header
57
+ { type: "stack", direction: "horizontal", gap: "sm", justify: "center", children: [
58
+ { type: "icon", name: "trophy", size: "lg" },
59
+ { type: "typography", variant: "h1", content: "Game Over" }
60
+ ] },
61
+ { type: "divider" },
62
+ // Final stats
63
+ { type: "stack", direction: "horizontal", gap: "md", children: [
64
+ { type: "stats", label: "Final Level", icon: "flag", entity: "PlatformerData" },
65
+ { type: "stats", label: "Lives Left", icon: "heart", entity: "PlatformerData" }
66
+ ] },
67
+ { type: "divider" },
68
+ // Respawn button
69
+ { type: "button", label: "Respawn", icon: "star", variant: "primary", action: "RESPAWN" }
70
+ ] }]
71
+ ];
72
+ var PLATFORMER_BEHAVIOR = {
73
+ name: "std-platformer",
74
+ version: "1.0.0",
75
+ description: "Platform game character state with movement and gravity",
76
+ theme: PLATFORMER_THEME,
77
+ orbitals: [
78
+ {
79
+ name: "PlatformerOrbital",
80
+ entity: {
81
+ name: "PlatformerData",
82
+ persistence: "runtime",
83
+ fields: [
84
+ { name: "id", type: "string", required: true },
85
+ { name: "level", type: "number", default: 1 },
86
+ { name: "lives", type: "number", default: 3 },
87
+ { name: "x", type: "number", default: 0 },
88
+ { name: "y", type: "number", default: 0 },
89
+ { name: "isJumping", type: "boolean", default: false }
90
+ ]
91
+ },
92
+ traits: [
93
+ {
94
+ name: "Platformer",
95
+ linkedEntity: "PlatformerData",
96
+ category: "interaction",
97
+ stateMachine: {
98
+ states: [
99
+ { name: "Idle", isInitial: true },
100
+ { name: "Running" },
101
+ { name: "Jumping" },
102
+ { name: "Falling" },
103
+ { name: "Dead" }
104
+ ],
105
+ events: [
106
+ { key: "INIT", name: "Initialize" },
107
+ { key: "RUN", name: "Run", payloadSchema: [
108
+ { name: "direction", type: "number", required: true }
109
+ ] },
110
+ { key: "STOP", name: "Stop" },
111
+ { key: "JUMP", name: "Jump" },
112
+ { key: "LAND", name: "Land" },
113
+ { key: "FALL", name: "Fall" },
114
+ { key: "DIE", name: "Die" },
115
+ { key: "RESPAWN", name: "Respawn" }
116
+ ],
117
+ transitions: [
118
+ {
119
+ from: "Idle",
120
+ to: "Idle",
121
+ event: "INIT",
122
+ effects: [
123
+ ["set", "@entity.x", 0],
124
+ ["set", "@entity.y", 0],
125
+ ["set", "@entity.isJumping", false],
126
+ ...platformerHudEffects
127
+ ]
128
+ },
129
+ {
130
+ from: "Idle",
131
+ to: "Running",
132
+ event: "RUN",
133
+ effects: [
134
+ ["set", "@entity.x", ["+", "@entity.x", "@payload.direction"]],
135
+ ...platformerHudEffects
136
+ ]
137
+ },
138
+ {
139
+ from: "Running",
140
+ to: "Running",
141
+ event: "RUN",
142
+ effects: [
143
+ ["set", "@entity.x", ["+", "@entity.x", "@payload.direction"]],
144
+ ...platformerHudEffects
145
+ ]
146
+ },
147
+ {
148
+ from: "Running",
149
+ to: "Idle",
150
+ event: "STOP",
151
+ effects: [
152
+ ...platformerHudEffects
153
+ ]
154
+ },
155
+ {
156
+ from: "Idle",
157
+ to: "Jumping",
158
+ event: "JUMP",
159
+ effects: [
160
+ ["set", "@entity.isJumping", true],
161
+ ["set", "@entity.y", ["-", "@entity.y", 10]],
162
+ ...platformerHudEffects
163
+ ]
164
+ },
165
+ {
166
+ from: "Running",
167
+ to: "Jumping",
168
+ event: "JUMP",
169
+ effects: [
170
+ ["set", "@entity.isJumping", true],
171
+ ["set", "@entity.y", ["-", "@entity.y", 10]],
172
+ ...platformerHudEffects
173
+ ]
174
+ },
175
+ {
176
+ from: "Jumping",
177
+ to: "Falling",
178
+ event: "FALL",
179
+ effects: [
180
+ ...platformerHudEffects
181
+ ]
182
+ },
183
+ {
184
+ from: "Falling",
185
+ to: "Idle",
186
+ event: "LAND",
187
+ effects: [
188
+ ["set", "@entity.isJumping", false],
189
+ ...platformerHudEffects
190
+ ]
191
+ },
192
+ {
193
+ from: "Jumping",
194
+ to: "Idle",
195
+ event: "LAND",
196
+ effects: [
197
+ ["set", "@entity.isJumping", false],
198
+ ...platformerHudEffects
199
+ ]
200
+ },
201
+ {
202
+ from: "Idle",
203
+ to: "Dead",
204
+ event: "DIE",
205
+ effects: [
206
+ ["set", "@entity.lives", ["-", "@entity.lives", 1]],
207
+ ...platformerGameOverEffects
208
+ ]
209
+ },
210
+ {
211
+ from: "Running",
212
+ to: "Dead",
213
+ event: "DIE",
214
+ effects: [
215
+ ["set", "@entity.lives", ["-", "@entity.lives", 1]],
216
+ ...platformerGameOverEffects
217
+ ]
218
+ },
219
+ {
220
+ from: "Falling",
221
+ to: "Dead",
222
+ event: "DIE",
223
+ effects: [
224
+ ["set", "@entity.lives", ["-", "@entity.lives", 1]],
225
+ ...platformerGameOverEffects
226
+ ]
227
+ },
228
+ {
229
+ from: "Dead",
230
+ to: "Idle",
231
+ event: "RESPAWN",
232
+ guard: [">", "@entity.lives", 0],
233
+ effects: [
234
+ ["set", "@entity.x", 0],
235
+ ["set", "@entity.y", 0],
236
+ ["set", "@entity.isJumping", false],
237
+ ...platformerHudEffects
238
+ ]
239
+ }
240
+ ]
241
+ },
242
+ ticks: [
243
+ {
244
+ name: "GravityTick",
245
+ interval: "frame",
246
+ guard: ["and", ["=", "@state", "Falling"], ["=", "@entity.isJumping", false]],
247
+ effects: [
248
+ ["set", "@entity.y", ["+", "@entity.y", 1]]
249
+ ]
250
+ }
251
+ ]
252
+ }
253
+ ],
254
+ pages: [
255
+ {
256
+ name: "PlatformerPage",
257
+ path: "/platformer",
258
+ isInitial: true,
259
+ traits: [{ ref: "Platformer" }]
260
+ }
261
+ ]
262
+ }
263
+ ]
264
+ };
265
+ var tilemapDisplayEffects = [
266
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
267
+ // Header: map icon + title + reset button
268
+ { type: "stack", direction: "horizontal", justify: "space-between", children: [
269
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
270
+ { type: "icon", name: "map", size: "lg" },
271
+ { type: "typography", variant: "h2", content: "Tile Map" }
272
+ ] },
273
+ { type: "button", label: "Reset View", icon: "star", variant: "secondary", action: "RESET_SCROLL" }
274
+ ] },
275
+ { type: "divider" },
276
+ // Map stats row
277
+ { type: "stack", direction: "horizontal", gap: "md", children: [
278
+ { type: "stats", label: "Width", icon: "shield", entity: "TileMapData" },
279
+ { type: "stats", label: "Height", icon: "shield", entity: "TileMapData" },
280
+ { type: "stats", label: "Tile Size", icon: "gamepad-2", entity: "TileMapData" }
281
+ ] },
282
+ { type: "divider" },
283
+ // Scroll position info
284
+ {
285
+ type: "data-grid",
286
+ entity: "TileMapData",
287
+ cols: 2,
288
+ gap: "md",
289
+ fields: [
290
+ { name: "id", label: "Map ID", icon: "map", variant: "h4" },
291
+ { name: "width", label: "Width", icon: "shield", variant: "body", format: "number" },
292
+ { name: "height", label: "Height", icon: "shield", variant: "body", format: "number" },
293
+ { name: "scrollX", label: "Scroll X", icon: "zap", variant: "body", format: "number" },
294
+ { name: "scrollY", label: "Scroll Y", icon: "zap", variant: "body", format: "number" }
295
+ ]
296
+ },
297
+ { type: "divider" },
298
+ // Scroll progress meter
299
+ { type: "meter", value: 0, label: "Scroll Progress", icon: "map", entity: "TileMapData" }
300
+ ] }]
301
+ ];
302
+ var tilemapLoadingEffects = [
303
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
304
+ // Loading header
305
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
306
+ { type: "icon", name: "map", size: "lg" },
307
+ { type: "typography", variant: "h2", content: "Tile Map" }
308
+ ] },
309
+ { type: "divider" },
310
+ // Loading indicator
311
+ { type: "progress-bar", value: 0, label: "Loading Map...", icon: "map" },
312
+ // Map dimensions preview
313
+ { type: "stack", direction: "horizontal", gap: "md", children: [
314
+ { type: "stats", label: "Width", icon: "shield", entity: "TileMapData" },
315
+ { type: "stats", label: "Height", icon: "shield", entity: "TileMapData" }
316
+ ] }
317
+ ] }]
318
+ ];
319
+ var TILEMAP_BEHAVIOR = {
320
+ name: "std-tilemap",
321
+ version: "1.0.0",
322
+ description: "Tile map management with scroll and dimensions",
323
+ theme: PLATFORMER_THEME,
324
+ orbitals: [
325
+ {
326
+ name: "TileMapOrbital",
327
+ entity: {
328
+ name: "TileMapData",
329
+ persistence: "runtime",
330
+ fields: [
331
+ { name: "id", type: "string", required: true },
332
+ { name: "width", type: "number", default: 20 },
333
+ { name: "height", type: "number", default: 15 },
334
+ { name: "tileSize", type: "number", default: 32 },
335
+ { name: "scrollX", type: "number", default: 0 },
336
+ { name: "scrollY", type: "number", default: 0 }
337
+ ]
338
+ },
339
+ traits: [
340
+ {
341
+ name: "TileMap",
342
+ linkedEntity: "TileMapData",
343
+ category: "interaction",
344
+ stateMachine: {
345
+ states: [
346
+ { name: "Loading", isInitial: true },
347
+ { name: "Ready" }
348
+ ],
349
+ events: [
350
+ { key: "INIT", name: "Initialize" },
351
+ { key: "LOADED", name: "Map Loaded" },
352
+ { key: "SCROLL", name: "Scroll", payloadSchema: [
353
+ { name: "dx", type: "number", required: true },
354
+ { name: "dy", type: "number", required: true }
355
+ ] },
356
+ { key: "RESET_SCROLL", name: "Reset Scroll" }
357
+ ],
358
+ transitions: [
359
+ {
360
+ from: "Loading",
361
+ to: "Loading",
362
+ event: "INIT",
363
+ effects: [
364
+ ["fetch", "TileMapData"],
365
+ ...tilemapLoadingEffects
366
+ ]
367
+ },
368
+ {
369
+ from: "Loading",
370
+ to: "Ready",
371
+ event: "LOADED",
372
+ effects: [
373
+ ["fetch", "TileMapData"],
374
+ ...tilemapDisplayEffects
375
+ ]
376
+ },
377
+ {
378
+ from: "Ready",
379
+ to: "Ready",
380
+ event: "SCROLL",
381
+ effects: [
382
+ ["fetch", "TileMapData"],
383
+ ["set", "@entity.scrollX", ["+", "@entity.scrollX", "@payload.dx"]],
384
+ ["set", "@entity.scrollY", ["+", "@entity.scrollY", "@payload.dy"]],
385
+ ...tilemapDisplayEffects
386
+ ]
387
+ },
388
+ {
389
+ from: "Ready",
390
+ to: "Ready",
391
+ event: "RESET_SCROLL",
392
+ effects: [
393
+ ["fetch", "TileMapData"],
394
+ ["set", "@entity.scrollX", 0],
395
+ ["set", "@entity.scrollY", 0],
396
+ ...tilemapDisplayEffects
397
+ ]
398
+ }
399
+ ]
400
+ }
401
+ }
402
+ ],
403
+ pages: [
404
+ {
405
+ name: "TileMapPage",
406
+ path: "/tilemap",
407
+ isInitial: true,
408
+ traits: [{ ref: "TileMap" }]
409
+ }
410
+ ]
411
+ }
412
+ ]
413
+ };
414
+ var powerupHudEffects = [
415
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
416
+ // Header: zap icon + title
417
+ { type: "stack", direction: "horizontal", justify: "space-between", children: [
418
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
419
+ { type: "icon", name: "zap", size: "lg" },
420
+ { type: "typography", variant: "h2", content: "Power-Ups" }
421
+ ] },
422
+ { type: "badge", label: "Ready", variant: "primary", icon: "star" }
423
+ ] },
424
+ { type: "divider" },
425
+ // Power-up stats
426
+ { type: "stack", direction: "horizontal", gap: "md", children: [
427
+ { type: "stats", label: "Type", icon: "star", entity: "PowerUpData" },
428
+ { type: "stats", label: "Duration", icon: "zap", entity: "PowerUpData" },
429
+ { type: "stats", label: "Remaining", icon: "heart", entity: "PowerUpData" }
430
+ ] },
431
+ { type: "divider" },
432
+ // Power-up details grid
433
+ {
434
+ type: "data-grid",
435
+ entity: "PowerUpData",
436
+ cols: 2,
437
+ gap: "md",
438
+ fields: [
439
+ { name: "id", label: "Power-Up", icon: "star", variant: "h4" },
440
+ { name: "type", label: "Type", icon: "zap", variant: "badge" },
441
+ { name: "duration", label: "Duration", icon: "shield", variant: "body", format: "number" },
442
+ { name: "remainingTime", label: "Time Left", icon: "heart", variant: "body", format: "number" },
443
+ { name: "isActive", label: "Active", icon: "zap", variant: "badge" }
444
+ ]
445
+ },
446
+ { type: "divider" },
447
+ // Duration meter
448
+ { type: "meter", value: 0, label: "Time Remaining", icon: "zap", entity: "PowerUpData" }
449
+ ] }]
450
+ ];
451
+ var powerupActiveEffects = [
452
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
453
+ // Active header
454
+ { type: "stack", direction: "horizontal", justify: "space-between", children: [
455
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
456
+ { type: "icon", name: "zap", size: "lg" },
457
+ { type: "typography", variant: "h2", content: "Power-Ups" }
458
+ ] },
459
+ { type: "badge", label: "Active", variant: "success", icon: "zap" }
460
+ ] },
461
+ { type: "divider" },
462
+ // Active power-up stats
463
+ { type: "stack", direction: "horizontal", gap: "md", children: [
464
+ { type: "stats", label: "Type", icon: "star", entity: "PowerUpData" },
465
+ { type: "stats", label: "Remaining", icon: "heart", entity: "PowerUpData" }
466
+ ] },
467
+ { type: "divider" },
468
+ // Duration countdown bar
469
+ { type: "progress-bar", value: 0, label: "Power-Up Duration", icon: "zap", entity: "PowerUpData" },
470
+ // Details
471
+ {
472
+ type: "data-grid",
473
+ entity: "PowerUpData",
474
+ cols: 2,
475
+ gap: "md",
476
+ fields: [
477
+ { name: "type", label: "Type", icon: "star", variant: "badge" },
478
+ { name: "remainingTime", label: "Time Left", icon: "heart", variant: "body", format: "number" }
479
+ ]
480
+ }
481
+ ] }]
482
+ ];
483
+ var POWERUP_BEHAVIOR = {
484
+ name: "std-powerup",
485
+ version: "1.0.0",
486
+ description: "Power-up collection with duration countdown",
487
+ theme: PLATFORMER_THEME,
488
+ orbitals: [
489
+ {
490
+ name: "PowerUpOrbital",
491
+ entity: {
492
+ name: "PowerUpData",
493
+ persistence: "runtime",
494
+ fields: [
495
+ { name: "id", type: "string", required: true },
496
+ { name: "type", type: "string", default: "none" },
497
+ { name: "duration", type: "number", default: 300 },
498
+ { name: "isActive", type: "boolean", default: false },
499
+ { name: "remainingTime", type: "number", default: 0 }
500
+ ]
501
+ },
502
+ traits: [
503
+ {
504
+ name: "PowerUp",
505
+ linkedEntity: "PowerUpData",
506
+ category: "interaction",
507
+ stateMachine: {
508
+ states: [
509
+ { name: "Inactive", isInitial: true },
510
+ { name: "Active" },
511
+ { name: "Expired" }
512
+ ],
513
+ events: [
514
+ { key: "INIT", name: "Initialize" },
515
+ { key: "COLLECT", name: "Collect", payloadSchema: [
516
+ { name: "type", type: "string", required: true },
517
+ { name: "duration", type: "number", required: true }
518
+ ] },
519
+ { key: "EXPIRE", name: "Expire" },
520
+ { key: "RESET", name: "Reset" }
521
+ ],
522
+ transitions: [
523
+ {
524
+ from: "Inactive",
525
+ to: "Inactive",
526
+ event: "INIT",
527
+ effects: [
528
+ ["set", "@entity.isActive", false],
529
+ ["set", "@entity.remainingTime", 0],
530
+ ...powerupHudEffects
531
+ ]
532
+ },
533
+ {
534
+ from: "Inactive",
535
+ to: "Active",
536
+ event: "COLLECT",
537
+ effects: [
538
+ ["set", "@entity.type", "@payload.type"],
539
+ ["set", "@entity.duration", "@payload.duration"],
540
+ ["set", "@entity.remainingTime", "@payload.duration"],
541
+ ["set", "@entity.isActive", true],
542
+ ...powerupActiveEffects
543
+ ]
544
+ },
545
+ {
546
+ from: "Active",
547
+ to: "Expired",
548
+ event: "EXPIRE",
549
+ effects: [
550
+ ["set", "@entity.isActive", false],
551
+ ["set", "@entity.remainingTime", 0],
552
+ ...powerupHudEffects
553
+ ]
554
+ },
555
+ {
556
+ from: "Expired",
557
+ to: "Inactive",
558
+ event: "RESET",
559
+ effects: [
560
+ ["set", "@entity.type", "none"],
561
+ ...powerupHudEffects
562
+ ]
563
+ }
564
+ ]
565
+ },
566
+ ticks: [
567
+ {
568
+ name: "DurationCountdown",
569
+ interval: "frame",
570
+ guard: ["and", ["=", "@state", "Active"], [">", "@entity.remainingTime", 0]],
571
+ effects: [
572
+ ["set", "@entity.remainingTime", ["-", "@entity.remainingTime", 1]]
573
+ ]
574
+ }
575
+ ]
576
+ }
577
+ ],
578
+ pages: [
579
+ {
580
+ name: "PowerUpPage",
581
+ path: "/powerups",
582
+ isInitial: true,
583
+ traits: [{ ref: "PowerUp" }]
584
+ }
585
+ ]
586
+ }
587
+ ]
588
+ };
589
+ var enemyPatrolHudEffects = [
590
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
591
+ // Header: sword icon + title + state badge
592
+ { type: "stack", direction: "horizontal", justify: "space-between", children: [
593
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
594
+ { type: "icon", name: "sword", size: "lg" },
595
+ { type: "typography", variant: "h2", content: "Enemy AI" }
596
+ ] },
597
+ { type: "badge", label: "Patrolling", variant: "primary", icon: "shield" }
598
+ ] },
599
+ { type: "divider" },
600
+ // Enemy stats row
601
+ { type: "stack", direction: "horizontal", gap: "md", children: [
602
+ { type: "stats", label: "Position X", icon: "map", entity: "EnemyData" },
603
+ { type: "stats", label: "Position Y", icon: "map", entity: "EnemyData" },
604
+ { type: "stats", label: "Speed", icon: "zap", entity: "EnemyData" },
605
+ { type: "stats", label: "Direction", icon: "flag", entity: "EnemyData" }
606
+ ] },
607
+ { type: "divider" },
608
+ // Enemy details grid
609
+ {
610
+ type: "data-grid",
611
+ entity: "EnemyData",
612
+ cols: 2,
613
+ gap: "md",
614
+ fields: [
615
+ { name: "id", label: "Enemy", icon: "sword", variant: "h4" },
616
+ { name: "speed", label: "Speed", icon: "zap", variant: "body", format: "number" },
617
+ { name: "patrolStart", label: "Patrol Start", icon: "flag", variant: "body", format: "number" },
618
+ { name: "patrolEnd", label: "Patrol End", icon: "flag", variant: "body", format: "number" },
619
+ { name: "direction", label: "Direction", icon: "map", variant: "badge" }
620
+ ]
621
+ },
622
+ { type: "divider" },
623
+ // Patrol progress meter
624
+ { type: "meter", value: 0, label: "Patrol Progress", icon: "shield", entity: "EnemyData" }
625
+ ] }]
626
+ ];
627
+ var enemyChaseHudEffects = [
628
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
629
+ // Chase header
630
+ { type: "stack", direction: "horizontal", justify: "space-between", children: [
631
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
632
+ { type: "icon", name: "sword", size: "lg" },
633
+ { type: "typography", variant: "h2", content: "Enemy AI" }
634
+ ] },
635
+ { type: "badge", label: "Chasing", variant: "warning", icon: "zap" }
636
+ ] },
637
+ { type: "divider" },
638
+ // Chase stats
639
+ { type: "stack", direction: "horizontal", gap: "md", children: [
640
+ { type: "stats", label: "Position X", icon: "map", entity: "EnemyData" },
641
+ { type: "stats", label: "Position Y", icon: "map", entity: "EnemyData" },
642
+ { type: "stats", label: "Speed", icon: "zap", entity: "EnemyData" }
643
+ ] },
644
+ { type: "divider" },
645
+ // Enemy data
646
+ {
647
+ type: "data-grid",
648
+ entity: "EnemyData",
649
+ cols: 2,
650
+ gap: "md",
651
+ fields: [
652
+ { name: "id", label: "Enemy", icon: "sword", variant: "h4" },
653
+ { name: "speed", label: "Speed", icon: "zap", variant: "body", format: "number" },
654
+ { name: "direction", label: "Direction", icon: "map", variant: "badge" }
655
+ ]
656
+ }
657
+ ] }]
658
+ ];
659
+ var enemyStunnedHudEffects = [
660
+ ["render-ui", "main", { type: "stack", direction: "vertical", gap: "lg", children: [
661
+ // Stunned header
662
+ { type: "stack", direction: "horizontal", justify: "space-between", children: [
663
+ { type: "stack", direction: "horizontal", gap: "sm", children: [
664
+ { type: "icon", name: "sword", size: "lg" },
665
+ { type: "typography", variant: "h2", content: "Enemy AI" }
666
+ ] },
667
+ { type: "badge", label: "Stunned", variant: "error", icon: "star" }
668
+ ] },
669
+ { type: "divider" },
670
+ // Stunned stats
671
+ { type: "stack", direction: "horizontal", gap: "md", children: [
672
+ { type: "stats", label: "Position X", icon: "map", entity: "EnemyData" },
673
+ { type: "stats", label: "Position Y", icon: "map", entity: "EnemyData" }
674
+ ] },
675
+ { type: "divider" },
676
+ // Recovery button
677
+ { type: "button", label: "Recover", icon: "heart", variant: "primary", action: "RECOVER" }
678
+ ] }]
679
+ ];
680
+ var ENEMY_AI_BEHAVIOR = {
681
+ name: "std-enemy-ai",
682
+ version: "1.0.0",
683
+ description: "Enemy AI with patrol, chase, and stun behavior",
684
+ theme: PLATFORMER_THEME,
685
+ orbitals: [
686
+ {
687
+ name: "EnemyAIOrbital",
688
+ entity: {
689
+ name: "EnemyData",
690
+ persistence: "runtime",
691
+ fields: [
692
+ { name: "id", type: "string", required: true },
693
+ { name: "x", type: "number", default: 0 },
694
+ { name: "y", type: "number", default: 0 },
695
+ { name: "patrolStart", type: "number", default: 0 },
696
+ { name: "patrolEnd", type: "number", default: 100 },
697
+ { name: "speed", type: "number", default: 1 },
698
+ { name: "direction", type: "number", default: 1 }
699
+ ]
700
+ },
701
+ traits: [
702
+ {
703
+ name: "EnemyAI",
704
+ linkedEntity: "EnemyData",
705
+ category: "interaction",
706
+ stateMachine: {
707
+ states: [
708
+ { name: "Patrolling", isInitial: true },
709
+ { name: "Chasing" },
710
+ { name: "Stunned" }
711
+ ],
712
+ events: [
713
+ { key: "INIT", name: "Initialize" },
714
+ { key: "DETECT_PLAYER", name: "Detect Player" },
715
+ { key: "LOSE_PLAYER", name: "Lose Player" },
716
+ { key: "STUN", name: "Stun" },
717
+ { key: "RECOVER", name: "Recover" }
718
+ ],
719
+ transitions: [
720
+ {
721
+ from: "Patrolling",
722
+ to: "Patrolling",
723
+ event: "INIT",
724
+ effects: [
725
+ ["fetch", "EnemyData"],
726
+ ["set", "@entity.x", "@entity.patrolStart"],
727
+ ["set", "@entity.direction", 1],
728
+ ...enemyPatrolHudEffects
729
+ ]
730
+ },
731
+ {
732
+ from: "Patrolling",
733
+ to: "Chasing",
734
+ event: "DETECT_PLAYER",
735
+ effects: [
736
+ ["fetch", "EnemyData"],
737
+ ...enemyChaseHudEffects
738
+ ]
739
+ },
740
+ {
741
+ from: "Chasing",
742
+ to: "Patrolling",
743
+ event: "LOSE_PLAYER",
744
+ effects: [
745
+ ["fetch", "EnemyData"],
746
+ ...enemyPatrolHudEffects
747
+ ]
748
+ },
749
+ {
750
+ from: "Patrolling",
751
+ to: "Stunned",
752
+ event: "STUN",
753
+ effects: [
754
+ ["fetch", "EnemyData"],
755
+ ...enemyStunnedHudEffects
756
+ ]
757
+ },
758
+ {
759
+ from: "Chasing",
760
+ to: "Stunned",
761
+ event: "STUN",
762
+ effects: [
763
+ ["fetch", "EnemyData"],
764
+ ...enemyStunnedHudEffects
765
+ ]
766
+ },
767
+ {
768
+ from: "Stunned",
769
+ to: "Patrolling",
770
+ event: "RECOVER",
771
+ effects: [
772
+ ["fetch", "EnemyData"],
773
+ ...enemyPatrolHudEffects
774
+ ]
775
+ }
776
+ ]
777
+ },
778
+ ticks: [
779
+ {
780
+ name: "PatrolMovement",
781
+ interval: "frame",
782
+ guard: ["=", "@state", "Patrolling"],
783
+ effects: [
784
+ ["set", "@entity.x", ["+", "@entity.x", ["*", "@entity.speed", "@entity.direction"]]]
785
+ ]
786
+ }
787
+ ]
788
+ }
789
+ ],
790
+ pages: [
791
+ {
792
+ name: "EnemyAIPage",
793
+ path: "/enemy-ai",
794
+ isInitial: true,
795
+ traits: [{ ref: "EnemyAI" }]
796
+ }
797
+ ]
798
+ }
799
+ ]
800
+ };
801
+ var GAME_2D_PLATFORMER_BEHAVIORS = [
802
+ PLATFORMER_BEHAVIOR,
803
+ TILEMAP_BEHAVIOR,
804
+ POWERUP_BEHAVIOR,
805
+ ENEMY_AI_BEHAVIOR
806
+ ];
807
+
808
+ export { ENEMY_AI_BEHAVIOR, GAME_2D_PLATFORMER_BEHAVIORS, PLATFORMER_BEHAVIOR, POWERUP_BEHAVIOR, TILEMAP_BEHAVIOR };
809
+ //# sourceMappingURL=game-2d-platformer.js.map
810
+ //# sourceMappingURL=game-2d-platformer.js.map