@almadar/std 1.0.0 → 1.0.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 (40) hide show
  1. package/dist/behaviors/async.d.ts +8 -8
  2. package/dist/behaviors/async.js +548 -500
  3. package/dist/behaviors/async.js.map +1 -1
  4. package/dist/behaviors/data-management.d.ts +11 -19
  5. package/dist/behaviors/data-management.js +468 -449
  6. package/dist/behaviors/data-management.js.map +1 -1
  7. package/dist/behaviors/feedback.d.ts +6 -6
  8. package/dist/behaviors/feedback.js +312 -278
  9. package/dist/behaviors/feedback.js.map +1 -1
  10. package/dist/behaviors/game-core.d.ts +11 -12
  11. package/dist/behaviors/game-core.js +357 -406
  12. package/dist/behaviors/game-core.js.map +1 -1
  13. package/dist/behaviors/game-entity.d.ts +13 -14
  14. package/dist/behaviors/game-entity.js +622 -592
  15. package/dist/behaviors/game-entity.js.map +1 -1
  16. package/dist/behaviors/game-ui.d.ts +9 -10
  17. package/dist/behaviors/game-ui.js +522 -459
  18. package/dist/behaviors/game-ui.js.map +1 -1
  19. package/dist/behaviors/index.d.ts +3 -3
  20. package/dist/behaviors/index.js +3876 -3843
  21. package/dist/behaviors/index.js.map +1 -1
  22. package/dist/behaviors/registry.d.ts +14 -24
  23. package/dist/behaviors/registry.js +3868 -3803
  24. package/dist/behaviors/registry.js.map +1 -1
  25. package/dist/behaviors/types.d.ts +14 -138
  26. package/dist/behaviors/types.js +10 -47
  27. package/dist/behaviors/types.js.map +1 -1
  28. package/dist/behaviors/ui-interaction.d.ts +13 -20
  29. package/dist/behaviors/ui-interaction.js +961 -1043
  30. package/dist/behaviors/ui-interaction.js.map +1 -1
  31. package/dist/index.d.ts +44 -11
  32. package/dist/index.js +3913 -3870
  33. package/dist/index.js.map +1 -1
  34. package/dist/modules/index.js +11 -0
  35. package/dist/modules/index.js.map +1 -1
  36. package/dist/modules/str.js +11 -0
  37. package/dist/modules/str.js.map +1 -1
  38. package/dist/registry.js +11 -0
  39. package/dist/registry.js.map +1 -1
  40. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../behaviors/game-entity.ts"],"names":[],"mappings":"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","file":"game-entity.js","sourcesContent":["/**\n * Game Entity Behaviors\n *\n * Entity state behaviors: health, score, movement, combat, inventory.\n * These use the Trait architecture with stateMachine and ticks.\n *\n * @packageDocumentation\n */\n\nimport type { StandardBehavior } from './types.js';\n\n// ============================================================================\n// std/Health - Entity Health System\n// ============================================================================\n\n/**\n * std/Health - Manages entity health with damage, healing, and death.\n *\n * States: Alive → Damaged → Dead\n */\nexport const HEALTH_BEHAVIOR: StandardBehavior = {\n name: 'std/Health',\n category: 'game-entity',\n description: 'Entity health with damage, healing, invulnerability, and death',\n suggestedFor: [\n 'Player characters',\n 'Enemies',\n 'Destructible objects',\n 'Bosses',\n ],\n\n dataEntities: [\n {\n name: 'HealthState',\n runtime: true,\n fields: [\n { name: 'currentHealth', type: 'number', default: 100 },\n { name: 'maxHealth', type: 'number', default: 100 },\n { name: 'isInvulnerable', type: 'boolean', default: false },\n { name: 'lastDamageTime', type: 'number', default: 0 },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Alive',\n states: [\n { name: 'Alive', isInitial: true },\n { name: 'Damaged' },\n { name: 'Invulnerable' },\n { name: 'Dead' },\n ],\n events: [\n { key: 'INIT' },\n { key: 'DAMAGE' },\n { key: 'HEAL' },\n { key: 'DIE' },\n { key: 'RESPAWN' },\n { key: 'INVULNERABILITY_END' },\n ],\n transitions: [\n {\n from: '*',\n to: 'Alive',\n event: 'INIT',\n effects: [\n ['set', '@entity.currentHealth', '@config.maxHealth'],\n ['set', '@entity.maxHealth', '@config.maxHealth'],\n ['set', '@entity.isInvulnerable', false],\n ['render', 'hud.health', 'health-bar', {\n current: '@entity.currentHealth',\n max: '@entity.maxHealth',\n }],\n ],\n },\n {\n from: 'Alive',\n to: 'Damaged',\n event: 'DAMAGE',\n guard: ['not', '@entity.isInvulnerable'],\n effects: [\n ['set', '@entity.currentHealth', ['math/max', 0, ['-', '@entity.currentHealth', '@payload.amount']]],\n ['set', '@entity.lastDamageTime', '@now'],\n ['if', ['<=', '@entity.currentHealth', 0],\n ['emit', 'DIE'],\n ['do',\n ['set', '@entity.isInvulnerable', true],\n ['render', 'entity.flash', 'damage-flash', {}]]],\n ],\n },\n {\n from: ['Damaged', 'Invulnerable'],\n to: 'Alive',\n event: 'INVULNERABILITY_END',\n effects: [\n ['set', '@entity.isInvulnerable', false],\n ],\n },\n {\n from: ['Alive', 'Damaged', 'Invulnerable'],\n event: 'HEAL',\n effects: [\n ['set', '@entity.currentHealth', ['math/min', '@entity.maxHealth', ['+', '@entity.currentHealth', '@payload.amount']]],\n ['render', 'entity.effect', 'heal-effect', {}],\n ],\n },\n {\n from: ['Alive', 'Damaged', 'Invulnerable'],\n to: 'Dead',\n event: 'DIE',\n effects: [\n ['set', '@entity.currentHealth', 0],\n ['emit', '@config.onDeath', { entityId: '@entity.id' }],\n ['render', 'entity.sprite', 'death-animation', {}],\n ],\n },\n {\n from: 'Dead',\n to: 'Alive',\n event: 'RESPAWN',\n effects: [\n ['emit', 'INIT'],\n ],\n },\n ],\n },\n\n ticks: [\n {\n name: 'InvulnerabilityTimer',\n interval: 'frame',\n guard: ['and', '@entity.isInvulnerable', ['>', ['-', '@now', '@entity.lastDamageTime'], '@config.invulnerabilityTime']],\n effects: [\n ['emit', 'INVULNERABILITY_END'],\n ],\n },\n ],\n\n configSchema: {\n required: [\n { name: 'maxHealth', type: 'number', description: 'Maximum health points' },\n ],\n optional: [\n { name: 'invulnerabilityTime', type: 'number', description: 'Invulnerability duration after damage (ms)', default: 500 },\n { name: 'onDeath', type: 'event', description: 'Event to emit on death', default: 'ENTITY_DIED' },\n { name: 'showHealthBar', type: 'boolean', description: 'Render health bar', default: true },\n ],\n },\n};\n\n// ============================================================================\n// std/Score - Points and Combo System\n// ============================================================================\n\n/**\n * std/Score - Manages score with points, combos, and multipliers.\n */\nexport const SCORE_BEHAVIOR: StandardBehavior = {\n name: 'std/Score',\n category: 'game-entity',\n description: 'Score tracking with points, combos, and multipliers',\n suggestedFor: [\n 'Arcade games',\n 'Puzzle games',\n 'Platformers with collectibles',\n 'Competitive games',\n ],\n\n dataEntities: [\n {\n name: 'ScoreState',\n runtime: true,\n singleton: true,\n fields: [\n { name: 'currentScore', type: 'number', default: 0 },\n { name: 'highScore', type: 'number', default: 0 },\n { name: 'comboCount', type: 'number', default: 0 },\n { name: 'multiplier', type: 'number', default: 1 },\n { name: 'lastScoreTime', type: 'number', default: 0 },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Active',\n states: [\n { name: 'Active', isInitial: true },\n ],\n events: [\n { key: 'INIT' },\n { key: 'ADD_POINTS' },\n { key: 'COMBO_HIT' },\n { key: 'COMBO_BREAK' },\n { key: 'RESET' },\n { key: 'SAVE_HIGH_SCORE' },\n ],\n transitions: [\n {\n from: '*',\n event: 'INIT',\n effects: [\n ['set', '@entity.currentScore', 0],\n ['set', '@entity.comboCount', 0],\n ['set', '@entity.multiplier', 1],\n ['render', 'hud.score', 'score-display', {\n score: '@entity.currentScore',\n highScore: '@entity.highScore',\n combo: '@entity.comboCount',\n multiplier: '@entity.multiplier',\n }],\n ],\n },\n {\n event: 'ADD_POINTS',\n effects: [\n ['set', '@entity.currentScore', ['+', '@entity.currentScore', ['*', '@payload.points', '@entity.multiplier']]],\n ['set', '@entity.lastScoreTime', '@now'],\n ['render', 'entity.effect', 'score-popup', {\n points: ['*', '@payload.points', '@entity.multiplier'],\n position: '@payload.position',\n }],\n ],\n },\n {\n event: 'COMBO_HIT',\n effects: [\n ['set', '@entity.comboCount', ['+', '@entity.comboCount', 1]],\n ['set', '@entity.multiplier', ['math/min', '@config.maxMultiplier', ['+', 1, ['/', '@entity.comboCount', 5]]]],\n ['set', '@entity.lastScoreTime', '@now'],\n ],\n },\n {\n event: 'COMBO_BREAK',\n effects: [\n ['set', '@entity.comboCount', 0],\n ['set', '@entity.multiplier', 1],\n ],\n },\n {\n event: 'RESET',\n effects: [\n ['if', ['>', '@entity.currentScore', '@entity.highScore'],\n ['set', '@entity.highScore', '@entity.currentScore']],\n ['emit', 'INIT'],\n ],\n },\n {\n event: 'SAVE_HIGH_SCORE',\n guard: ['>', '@entity.currentScore', '@entity.highScore'],\n effects: [\n ['set', '@entity.highScore', '@entity.currentScore'],\n ['persist', 'save', 'HighScore', { score: '@entity.highScore' }],\n ],\n },\n ],\n },\n\n ticks: [\n {\n name: 'ComboTimeout',\n interval: 'frame',\n guard: ['and', ['>', '@entity.comboCount', 0], ['>', ['-', '@now', '@entity.lastScoreTime'], '@config.comboTimeWindow']],\n effects: [\n ['emit', 'COMBO_BREAK'],\n ],\n },\n ],\n\n configSchema: {\n required: [],\n optional: [\n { name: 'comboTimeWindow', type: 'number', description: 'Time window for combos (ms)', default: 2000 },\n { name: 'maxMultiplier', type: 'number', description: 'Maximum combo multiplier', default: 10 },\n { name: 'persistHighScore', type: 'boolean', description: 'Save high score to storage', default: true },\n ],\n },\n};\n\n// ============================================================================\n// std/Movement - Entity Position and Velocity\n// ============================================================================\n\n/**\n * std/Movement - Basic movement for any entity.\n *\n * Handles position updates based on input or AI.\n */\nexport const MOVEMENT_BEHAVIOR: StandardBehavior = {\n name: 'std/Movement',\n category: 'game-entity',\n description: 'Entity movement with speed and direction',\n suggestedFor: [\n 'Player characters',\n 'NPCs',\n 'Enemies',\n 'Moving platforms',\n ],\n\n requiredFields: [\n { name: 'x', type: 'number', description: 'Entity X position' },\n { name: 'y', type: 'number', description: 'Entity Y position' },\n ],\n\n dataEntities: [\n {\n name: 'MovementState',\n runtime: true,\n fields: [\n { name: 'direction', type: 'number', default: 0 },\n { name: 'facingRight', type: 'boolean', default: true },\n { name: 'canJump', type: 'boolean', default: true },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Idle',\n states: [\n { name: 'Idle', isInitial: true },\n { name: 'Moving' },\n { name: 'Jumping' },\n { name: 'Falling' },\n ],\n events: [\n { key: 'MOVE' },\n { key: 'STOP' },\n { key: 'JUMP' },\n { key: 'LAND' },\n ],\n transitions: [\n {\n from: 'Idle',\n to: 'Moving',\n event: 'MOVE',\n effects: [\n ['set', '@entity.direction', '@payload.direction'],\n ['if', ['>', '@payload.direction', 0],\n ['set', '@entity.facingRight', true]],\n ['if', ['<', '@payload.direction', 0],\n ['set', '@entity.facingRight', false]],\n ],\n },\n {\n from: 'Moving',\n event: 'MOVE',\n effects: [\n ['set', '@entity.direction', '@payload.direction'],\n ['if', ['>', '@payload.direction', 0],\n ['set', '@entity.facingRight', true]],\n ['if', ['<', '@payload.direction', 0],\n ['set', '@entity.facingRight', false]],\n ],\n },\n {\n from: 'Moving',\n to: 'Idle',\n event: 'STOP',\n effects: [\n ['set', '@entity.direction', 0],\n ],\n },\n {\n from: ['Idle', 'Moving'],\n to: 'Jumping',\n event: 'JUMP',\n guard: '@entity.canJump',\n effects: [\n ['set', '@entity.canJump', false],\n ['emit', 'APPLY_FORCE', { fx: 0, fy: '@config.jumpForce' }],\n ],\n },\n {\n from: ['Jumping', 'Falling'],\n to: 'Idle',\n event: 'LAND',\n effects: [\n ['set', '@entity.canJump', true],\n ['if', ['!=', '@entity.direction', 0],\n ['emit', 'MOVE', { direction: '@entity.direction' }]],\n ],\n },\n ],\n },\n\n ticks: [\n {\n name: 'ApplyMovement',\n interval: 'frame',\n guard: ['!=', '@entity.direction', 0],\n effects: [\n ['set', '@entity.x', ['+', '@entity.x', ['*', '@entity.direction', '@config.moveSpeed']]],\n ],\n },\n ],\n\n configSchema: {\n required: [],\n optional: [\n { name: 'moveSpeed', type: 'number', description: 'Movement speed (pixels/frame)', default: 5 },\n { name: 'jumpForce', type: 'number', description: 'Jump velocity', default: -12 },\n { name: 'acceleration', type: 'number', description: 'Acceleration rate', default: 0.5 },\n { name: 'deceleration', type: 'number', description: 'Deceleration rate', default: 0.3 },\n ],\n },\n};\n\n// ============================================================================\n// std/Combat - Attack and Damage System\n// ============================================================================\n\n/**\n * std/Combat - Handles attacks, cooldowns, and hit detection.\n */\nexport const COMBAT_BEHAVIOR: StandardBehavior = {\n name: 'std/Combat',\n category: 'game-entity',\n description: 'Combat system with attacks, cooldowns, and hitboxes',\n suggestedFor: [\n 'Fighting games',\n 'Action RPGs',\n 'Beat-em-ups',\n 'Boss encounters',\n ],\n\n dataEntities: [\n {\n name: 'CombatState',\n runtime: true,\n fields: [\n { name: 'isAttacking', type: 'boolean', default: false },\n { name: 'attackStartTime', type: 'number', default: 0 },\n { name: 'hitEntities', type: 'array', default: [] },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Ready',\n states: [\n { name: 'Ready', isInitial: true },\n { name: 'Attacking' },\n { name: 'Cooldown' },\n ],\n events: [\n { key: 'ATTACK' },\n { key: 'ATTACK_END' },\n { key: 'HIT_CONNECT' },\n { key: 'COOLDOWN_END' },\n ],\n transitions: [\n {\n from: 'Ready',\n to: 'Attacking',\n event: 'ATTACK',\n effects: [\n ['set', '@entity.isAttacking', true],\n ['set', '@entity.attackStartTime', '@now'],\n ['set', '@entity.hitEntities', []],\n ['render', 'entity.sprite', 'attack-animation', {}],\n ['render', 'entity.hitbox', 'hitbox', {\n active: true,\n offset: '@config.hitboxOffset',\n size: '@config.hitboxSize',\n }],\n ],\n },\n {\n from: 'Attacking',\n event: 'HIT_CONNECT',\n guard: ['not', ['array/includes', '@entity.hitEntities', '@payload.entityId']],\n effects: [\n ['set', '@entity.hitEntities', ['array/append', '@entity.hitEntities', '@payload.entityId']],\n ['emit', 'DAMAGE', { target: '@payload.entityId', amount: '@config.attackDamage' }],\n ['render', 'effect.impact', 'hit-effect', { position: '@payload.position' }],\n ],\n },\n {\n from: 'Attacking',\n to: 'Cooldown',\n event: 'ATTACK_END',\n effects: [\n ['set', '@entity.isAttacking', false],\n ['render', 'entity.hitbox', null],\n ],\n },\n {\n from: 'Cooldown',\n to: 'Ready',\n event: 'COOLDOWN_END',\n effects: [],\n },\n ],\n },\n\n ticks: [\n {\n name: 'AttackDuration',\n interval: 'frame',\n guard: ['and', '@entity.isAttacking', ['>', ['-', '@now', '@entity.attackStartTime'], '@config.attackDuration']],\n effects: [\n ['emit', 'ATTACK_END'],\n ],\n },\n {\n name: 'CooldownTimer',\n interval: 'frame',\n guard: ['and', ['=', '@state', 'Cooldown'], ['>', ['-', '@now', '@entity.attackStartTime'], ['+', '@config.attackDuration', '@config.cooldownDuration']]],\n effects: [\n ['emit', 'COOLDOWN_END'],\n ],\n },\n ],\n\n configSchema: {\n required: [],\n optional: [\n { name: 'attackDamage', type: 'number', description: 'Damage per attack', default: 10 },\n { name: 'attackDuration', type: 'number', description: 'Attack animation duration (ms)', default: 200 },\n { name: 'cooldownDuration', type: 'number', description: 'Cooldown between attacks (ms)', default: 300 },\n { name: 'hitboxOffset', type: 'object', description: 'Hitbox offset from entity', default: { x: 20, y: 0 } },\n { name: 'hitboxSize', type: 'object', description: 'Hitbox dimensions', default: { width: 30, height: 40 } },\n ],\n },\n};\n\n// ============================================================================\n// std/Inventory - Item Collection and Management\n// ============================================================================\n\n/**\n * std/Inventory - Manages collected items and equipment.\n */\nexport const INVENTORY_BEHAVIOR: StandardBehavior = {\n name: 'std/Inventory',\n category: 'game-entity',\n description: 'Item collection, storage, and usage',\n suggestedFor: [\n 'RPGs',\n 'Adventure games',\n 'Survival games',\n 'Collectible-based games',\n ],\n\n dataEntities: [\n {\n name: 'InventoryState',\n runtime: true,\n fields: [\n { name: 'items', type: 'array', default: [] },\n { name: 'selectedSlot', type: 'number', default: 0 },\n { name: 'isOpen', type: 'boolean', default: false },\n { name: 'equipped', type: 'object', default: {} },\n ],\n },\n ],\n\n stateMachine: {\n initial: 'Empty',\n states: [\n { name: 'Empty', isInitial: true },\n { name: 'HasItems' },\n { name: 'Full' },\n ],\n events: [\n { key: 'COLLECT' },\n { key: 'USE' },\n { key: 'DROP' },\n { key: 'EQUIP' },\n { key: 'UNEQUIP' },\n { key: 'OPEN' },\n { key: 'CLOSE' },\n { key: 'INVENTORY_EMPTY' },\n ],\n transitions: [\n {\n from: ['Empty', 'HasItems'],\n to: 'HasItems',\n event: 'COLLECT',\n guard: ['<', ['array/len', '@entity.items'], '@config.maxSlots'],\n effects: [\n ['set', '@entity.items', ['array/append', '@entity.items', '@payload.item']],\n ['render', 'effect.collect', 'collect-effect', { item: '@payload.item' }],\n ['notify', { type: 'info', message: ['str/concat', 'Collected ', '@payload.item.name'] }],\n ],\n },\n {\n from: 'HasItems',\n event: 'USE',\n effects: [\n ['let', [['item', ['array/nth', '@entity.items', '@payload.slot']]],\n ['if', '@item.onUse',\n ['emit', '@item.onUse', { item: '@item' }]],\n ['if', '@item.consumable',\n ['set', '@entity.items', ['array/filter', '@entity.items', ['fn', 'i', 'idx', ['!=', '@idx', '@payload.slot']]]]]],\n ['if', ['=', ['array/len', '@entity.items'], 0],\n ['emit', 'INVENTORY_EMPTY']],\n ],\n },\n {\n from: 'HasItems',\n event: 'DROP',\n effects: [\n ['let', [['item', ['array/nth', '@entity.items', '@payload.slot']]],\n ['set', '@entity.items', ['array/filter', '@entity.items', ['fn', 'i', 'idx', ['!=', '@idx', '@payload.slot']]]],\n ['emit', 'ITEM_DROPPED', { item: '@item', position: { x: '@entity.x', y: '@entity.y' } }]],\n ['if', ['=', ['array/len', '@entity.items'], 0],\n ['emit', 'INVENTORY_EMPTY']],\n ],\n },\n {\n from: 'HasItems',\n to: 'Empty',\n event: 'INVENTORY_EMPTY',\n effects: [],\n },\n {\n event: 'EQUIP',\n effects: [\n ['set', '@entity.equipped', ['object/set', '@entity.equipped', '@payload.slot', '@payload.item']],\n ['emit', 'STATS_UPDATED', { equipped: '@entity.equipped' }],\n ],\n },\n {\n event: 'UNEQUIP',\n effects: [\n ['set', '@entity.equipped', ['object/remove', '@entity.equipped', '@payload.slot']],\n ['emit', 'STATS_UPDATED', { equipped: '@entity.equipped' }],\n ],\n },\n {\n event: 'OPEN',\n effects: [\n ['set', '@entity.isOpen', true],\n ['render', 'overlay.inventory', 'inventory-panel', {\n items: '@entity.items',\n selectedSlot: '@entity.selectedSlot',\n equipped: '@entity.equipped',\n maxSlots: '@config.maxSlots',\n onUse: 'USE',\n onDrop: 'DROP',\n onEquip: 'EQUIP',\n onClose: 'CLOSE',\n }],\n ],\n },\n {\n event: 'CLOSE',\n effects: [\n ['set', '@entity.isOpen', false],\n ['render', 'overlay.inventory', null],\n ],\n },\n ],\n },\n\n configSchema: {\n required: [],\n optional: [\n { name: 'maxSlots', type: 'number', description: 'Maximum inventory slots', default: 20 },\n { name: 'stackable', type: 'boolean', description: 'Allow item stacking', default: true },\n { name: 'maxStack', type: 'number', description: 'Maximum stack size', default: 99 },\n ],\n },\n};\n\n// ============================================================================\n// Export All Behaviors\n// ============================================================================\n\nexport const GAME_ENTITY_BEHAVIORS: StandardBehavior[] = [\n HEALTH_BEHAVIOR,\n SCORE_BEHAVIOR,\n MOVEMENT_BEHAVIOR,\n COMBAT_BEHAVIOR,\n INVENTORY_BEHAVIOR,\n];\n"]}
1
+ {"version":3,"sources":["../../behaviors/game-entity.ts"],"names":[],"mappings":"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","file":"game-entity.js","sourcesContent":["/**\n * Game Entity Behaviors\n *\n * Entity state behaviors: health, score, movement, combat, inventory.\n * Each behavior is a self-contained OrbitalSchema that can function as a standalone .orb file.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalSchema } from './types.js';\n\n// ============================================================================\n// std-health - Entity Health System\n// ============================================================================\n\n/**\n * std-health - Manages entity health with damage, healing, and death.\n *\n * States: Alive → Damaged → Dead\n */\nexport const HEALTH_BEHAVIOR: OrbitalSchema = {\n name: 'std-health',\n version: '1.0.0',\n description: 'Entity health with damage, healing, invulnerability, and death',\n orbitals: [\n {\n name: 'HealthOrbital',\n entity: {\n name: 'HealthState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'currentHealth', type: 'number', default: 100 },\n { name: 'maxHealth', type: 'number', default: 100 },\n { name: 'isInvulnerable', type: 'boolean', default: false },\n { name: 'lastDamageTime', type: 'number', default: 0 },\n { name: 'invulnerabilityTime', type: 'number', default: 1000 },\n { name: 'onDeath', type: 'string', default: null },\n ],\n },\n traits: [\n {\n name: 'Health',\n linkedEntity: 'HealthState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Alive', isInitial: true },\n { name: 'Damaged' },\n { name: 'Invulnerable' },\n { name: 'Dead', isTerminal: true },\n ],\n events: [\n { key: 'INIT', name: 'Initialize' },\n { key: 'DAMAGE', name: 'Damage' },\n { key: 'HEAL', name: 'Heal' },\n { key: 'DIE', name: 'Die' },\n { key: 'RESPAWN', name: 'Respawn' },\n { key: 'INVULNERABILITY_END', name: 'Invulnerability End' },\n ],\n transitions: [\n {\n from: 'Alive',\n to: 'Alive',\n event: 'INIT',\n effects: [\n ['set', '@entity.currentHealth', '@entity.maxHealth'],\n ['set', '@entity.isInvulnerable', false],\n ['render-ui', 'hud-top', {\n type: 'stats',\n label: 'Health',\n value: '@entity.currentHealth',\n }],\n ],\n },\n {\n from: 'Alive',\n to: 'Damaged',\n event: 'DAMAGE',\n guard: ['not', '@entity.isInvulnerable'],\n effects: [\n ['set', '@entity.currentHealth', ['math/max', 0, ['-', '@entity.currentHealth', '@payload.amount']]],\n ['set', '@entity.lastDamageTime', '@now'],\n ['if', ['<=', '@entity.currentHealth', 0],\n ['emit', 'DIE'],\n ['do',\n ['set', '@entity.isInvulnerable', true]]],\n ],\n },\n {\n from: 'Damaged',\n to: 'Alive',\n event: 'INVULNERABILITY_END',\n effects: [['set', '@entity.isInvulnerable', false]],\n },\n {\n from: 'Invulnerable',\n to: 'Alive',\n event: 'INVULNERABILITY_END',\n effects: [['set', '@entity.isInvulnerable', false]],\n },\n {\n from: 'Alive',\n to: 'Alive',\n event: 'HEAL',\n effects: [\n ['set', '@entity.currentHealth', ['math/min', '@entity.maxHealth', ['+', '@entity.currentHealth', '@payload.amount']]],\n ],\n },\n {\n from: 'Damaged',\n to: 'Damaged',\n event: 'HEAL',\n effects: [\n ['set', '@entity.currentHealth', ['math/min', '@entity.maxHealth', ['+', '@entity.currentHealth', '@payload.amount']]],\n ],\n },\n {\n from: 'Alive',\n to: 'Dead',\n event: 'DIE',\n effects: [\n ['set', '@entity.currentHealth', 0],\n ['if', '@entity.onDeath', ['emit', '@entity.onDeath', { entityId: '@entity.id' }]],\n ],\n },\n {\n from: 'Damaged',\n to: 'Dead',\n event: 'DIE',\n effects: [\n ['set', '@entity.currentHealth', 0],\n ['if', '@entity.onDeath', ['emit', '@entity.onDeath', { entityId: '@entity.id' }]],\n ],\n },\n {\n from: 'Dead',\n to: 'Alive',\n event: 'RESPAWN',\n effects: [['emit', 'INIT']],\n },\n ],\n },\n ticks: [\n {\n name: 'InvulnerabilityTimer',\n interval: 'frame',\n guard: ['and', '@entity.isInvulnerable', ['>', ['-', '@now', '@entity.lastDamageTime'], '@entity.invulnerabilityTime']],\n effects: [['emit', 'INVULNERABILITY_END']],\n },\n ],\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-score - Points and Combo System\n// ============================================================================\n\n/**\n * std-score - Manages score with points, combos, and multipliers.\n */\nexport const SCORE_BEHAVIOR: OrbitalSchema = {\n name: 'std-score',\n version: '1.0.0',\n description: 'Score tracking with points, combos, and multipliers',\n orbitals: [\n {\n name: 'ScoreOrbital',\n entity: {\n name: 'ScoreState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'currentScore', type: 'number', default: 0 },\n { name: 'highScore', type: 'number', default: 0 },\n { name: 'comboCount', type: 'number', default: 0 },\n { name: 'multiplier', type: 'number', default: 1 },\n { name: 'lastScoreTime', type: 'number', default: 0 },\n { name: 'maxMultiplier', type: 'number', default: 5 },\n { name: 'comboTimeWindow', type: 'number', default: 2000 },\n ],\n },\n traits: [\n {\n name: 'Score',\n linkedEntity: 'ScoreState',\n category: 'interaction',\n stateMachine: {\n states: [{ name: 'Active', isInitial: true }],\n events: [\n { key: 'INIT', name: 'Initialize' },\n { key: 'ADD_POINTS', name: 'Add Points' },\n { key: 'COMBO_HIT', name: 'Combo Hit' },\n { key: 'COMBO_BREAK', name: 'Combo Break' },\n { key: 'RESET', name: 'Reset' },\n { key: 'SAVE_HIGH_SCORE', name: 'Save High Score' },\n ],\n transitions: [\n {\n from: 'Active',\n to: 'Active',\n event: 'INIT',\n effects: [\n ['set', '@entity.currentScore', 0],\n ['set', '@entity.comboCount', 0],\n ['set', '@entity.multiplier', 1],\n ['render-ui', 'hud-top', {\n type: 'stats',\n label: 'Score',\n value: '@entity.currentScore',\n subtitle: 'High: @entity.highScore',\n }],\n ],\n },\n {\n from: 'Active',\n to: 'Active',\n event: 'ADD_POINTS',\n effects: [\n ['set', '@entity.currentScore', ['+', '@entity.currentScore', ['*', '@payload.points', '@entity.multiplier']]],\n ['set', '@entity.lastScoreTime', '@now'],\n ],\n },\n {\n from: 'Active',\n to: 'Active',\n event: 'COMBO_HIT',\n effects: [\n ['set', '@entity.comboCount', ['+', '@entity.comboCount', 1]],\n ['set', '@entity.multiplier', ['math/min', '@entity.maxMultiplier', ['+', 1, ['/', '@entity.comboCount', 5]]]],\n ['set', '@entity.lastScoreTime', '@now'],\n ],\n },\n {\n from: 'Active',\n to: 'Active',\n event: 'COMBO_BREAK',\n effects: [\n ['set', '@entity.comboCount', 0],\n ['set', '@entity.multiplier', 1],\n ],\n },\n {\n from: 'Active',\n to: 'Active',\n event: 'RESET',\n effects: [\n ['if', ['>', '@entity.currentScore', '@entity.highScore'],\n ['set', '@entity.highScore', '@entity.currentScore']],\n ['emit', 'INIT'],\n ],\n },\n {\n from: 'Active',\n to: 'Active',\n event: 'SAVE_HIGH_SCORE',\n guard: ['>', '@entity.currentScore', '@entity.highScore'],\n effects: [\n ['set', '@entity.highScore', '@entity.currentScore'],\n ['persist', 'update', 'HighScore', { score: '@entity.highScore' }],\n ],\n },\n ],\n },\n ticks: [\n {\n name: 'ComboTimeout',\n interval: 'frame',\n guard: ['and', ['>', '@entity.comboCount', 0], ['>', ['-', '@now', '@entity.lastScoreTime'], '@entity.comboTimeWindow']],\n effects: [['emit', 'COMBO_BREAK']],\n },\n ],\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-movement - Entity Position and Velocity\n// ============================================================================\n\n/**\n * std-movement - Basic movement for any entity.\n *\n * Handles position updates based on input or AI.\n */\nexport const MOVEMENT_BEHAVIOR: OrbitalSchema = {\n name: 'std-movement',\n version: '1.0.0',\n description: 'Entity movement with speed and direction',\n orbitals: [\n {\n name: 'MovementOrbital',\n entity: {\n name: 'MovementState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'x', type: 'number', default: 0 },\n { name: 'y', type: 'number', default: 0 },\n { name: 'direction', type: 'number', default: 0 },\n { name: 'facingRight', type: 'boolean', default: true },\n { name: 'canJump', type: 'boolean', default: true },\n { name: 'moveSpeed', type: 'number', default: 5 },\n { name: 'jumpForce', type: 'number', default: -15 },\n ],\n },\n traits: [\n {\n name: 'Movement',\n linkedEntity: 'MovementState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Idle', isInitial: true },\n { name: 'Moving' },\n { name: 'Jumping' },\n { name: 'Falling' },\n ],\n events: [\n { key: 'MOVE', name: 'Move' },\n { key: 'STOP', name: 'Stop' },\n { key: 'JUMP', name: 'Jump' },\n { key: 'LAND', name: 'Land' },\n ],\n transitions: [\n {\n from: 'Idle',\n to: 'Moving',\n event: 'MOVE',\n effects: [\n ['set', '@entity.direction', '@payload.direction'],\n ['if', ['>', '@payload.direction', 0], ['set', '@entity.facingRight', true]],\n ['if', ['<', '@payload.direction', 0], ['set', '@entity.facingRight', false]],\n ],\n },\n {\n from: 'Moving',\n to: 'Moving',\n event: 'MOVE',\n effects: [\n ['set', '@entity.direction', '@payload.direction'],\n ['if', ['>', '@payload.direction', 0], ['set', '@entity.facingRight', true]],\n ['if', ['<', '@payload.direction', 0], ['set', '@entity.facingRight', false]],\n ],\n },\n {\n from: 'Moving',\n to: 'Idle',\n event: 'STOP',\n effects: [['set', '@entity.direction', 0]],\n },\n {\n from: 'Idle',\n to: 'Jumping',\n event: 'JUMP',\n guard: '@entity.canJump',\n effects: [\n ['set', '@entity.canJump', false],\n ['emit', 'APPLY_FORCE', { fx: 0, fy: '@entity.jumpForce' }],\n ],\n },\n {\n from: 'Moving',\n to: 'Jumping',\n event: 'JUMP',\n guard: '@entity.canJump',\n effects: [\n ['set', '@entity.canJump', false],\n ['emit', 'APPLY_FORCE', { fx: 0, fy: '@entity.jumpForce' }],\n ],\n },\n {\n from: 'Jumping',\n to: 'Idle',\n event: 'LAND',\n effects: [\n ['set', '@entity.canJump', true],\n ['if', ['!=', '@entity.direction', 0], ['emit', 'MOVE', { direction: '@entity.direction' }]],\n ],\n },\n {\n from: 'Falling',\n to: 'Idle',\n event: 'LAND',\n effects: [\n ['set', '@entity.canJump', true],\n ['if', ['!=', '@entity.direction', 0], ['emit', 'MOVE', { direction: '@entity.direction' }]],\n ],\n },\n ],\n },\n ticks: [\n {\n name: 'ApplyMovement',\n interval: 'frame',\n guard: ['!=', '@entity.direction', 0],\n effects: [\n ['set', '@entity.x', ['+', '@entity.x', ['*', '@entity.direction', '@entity.moveSpeed']]],\n ],\n },\n ],\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-combat - Attack and Damage System\n// ============================================================================\n\n/**\n * std-combat - Handles attacks, cooldowns, and hit detection.\n */\nexport const COMBAT_BEHAVIOR: OrbitalSchema = {\n name: 'std-combat',\n version: '1.0.0',\n description: 'Combat system with attacks, cooldowns, and hitboxes',\n orbitals: [\n {\n name: 'CombatOrbital',\n entity: {\n name: 'CombatState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'isAttacking', type: 'boolean', default: false },\n { name: 'attackStartTime', type: 'number', default: 0 },\n { name: 'hitEntities', type: 'array', default: [] },\n { name: 'attackDamage', type: 'number', default: 10 },\n { name: 'attackDuration', type: 'number', default: 300 },\n { name: 'cooldownDuration', type: 'number', default: 500 },\n { name: 'hitboxOffset', type: 'object', default: { x: 20, y: 0 } },\n { name: 'hitboxSize', type: 'object', default: { width: 30, height: 30 } },\n ],\n },\n traits: [\n {\n name: 'Combat',\n linkedEntity: 'CombatState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Ready', isInitial: true },\n { name: 'Attacking' },\n { name: 'Cooldown' },\n ],\n events: [\n { key: 'ATTACK', name: 'Attack' },\n { key: 'ATTACK_END', name: 'Attack End' },\n { key: 'HIT_CONNECT', name: 'Hit Connect' },\n { key: 'COOLDOWN_END', name: 'Cooldown End' },\n ],\n transitions: [\n {\n from: 'Ready',\n to: 'Attacking',\n event: 'ATTACK',\n effects: [\n ['set', '@entity.isAttacking', true],\n ['set', '@entity.attackStartTime', '@now'],\n ['set', '@entity.hitEntities', []],\n ],\n },\n {\n from: 'Attacking',\n to: 'Attacking',\n event: 'HIT_CONNECT',\n guard: ['not', ['array/includes', '@entity.hitEntities', '@payload.entityId']],\n effects: [\n ['set', '@entity.hitEntities', ['array/append', '@entity.hitEntities', '@payload.entityId']],\n ['emit', 'DAMAGE', { target: '@payload.entityId', amount: '@entity.attackDamage' }],\n ],\n },\n {\n from: 'Attacking',\n to: 'Cooldown',\n event: 'ATTACK_END',\n effects: [['set', '@entity.isAttacking', false]],\n },\n {\n from: 'Cooldown',\n to: 'Ready',\n event: 'COOLDOWN_END',\n effects: [],\n },\n ],\n },\n ticks: [\n {\n name: 'AttackDuration',\n interval: 'frame',\n guard: ['and', '@entity.isAttacking', ['>', ['-', '@now', '@entity.attackStartTime'], '@entity.attackDuration']],\n effects: [['emit', 'ATTACK_END']],\n },\n {\n name: 'CooldownTimer',\n interval: 'frame',\n guard: ['and', ['=', '@state', 'Cooldown'], ['>', ['-', '@now', '@entity.attackStartTime'], ['+', '@entity.attackDuration', '@entity.cooldownDuration']]],\n effects: [['emit', 'COOLDOWN_END']],\n },\n ],\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-inventory - Item Collection and Management\n// ============================================================================\n\n/**\n * std-inventory - Manages collected items and equipment.\n */\nexport const INVENTORY_BEHAVIOR: OrbitalSchema = {\n name: 'std-inventory',\n version: '1.0.0',\n description: 'Item collection, storage, and usage',\n orbitals: [\n {\n name: 'InventoryOrbital',\n entity: {\n name: 'InventoryState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'x', type: 'number', default: 0 },\n { name: 'y', type: 'number', default: 0 },\n { name: 'items', type: 'array', default: [] },\n { name: 'selectedSlot', type: 'number', default: 0 },\n { name: 'isOpen', type: 'boolean', default: false },\n { name: 'equipped', type: 'object', default: {} },\n { name: 'maxSlots', type: 'number', default: 20 },\n ],\n },\n traits: [\n {\n name: 'Inventory',\n linkedEntity: 'InventoryState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Empty', isInitial: true },\n { name: 'HasItems' },\n { name: 'Full' },\n ],\n events: [\n { key: 'COLLECT', name: 'Collect' },\n { key: 'USE', name: 'Use' },\n { key: 'DROP', name: 'Drop' },\n { key: 'EQUIP', name: 'Equip' },\n { key: 'UNEQUIP', name: 'Unequip' },\n { key: 'OPEN', name: 'Open' },\n { key: 'CLOSE', name: 'Close' },\n { key: 'INVENTORY_EMPTY', name: 'Inventory Empty' },\n ],\n transitions: [\n {\n from: 'Empty',\n to: 'HasItems',\n event: 'COLLECT',\n guard: ['<', ['array/len', '@entity.items'], '@entity.maxSlots'],\n effects: [\n ['set', '@entity.items', ['array/append', '@entity.items', '@payload.item']],\n ['notify', 'in_app', ['str/concat', 'Collected ', '@payload.item.name']],\n ],\n },\n {\n from: 'HasItems',\n to: 'HasItems',\n event: 'COLLECT',\n guard: ['<', ['array/len', '@entity.items'], '@entity.maxSlots'],\n effects: [\n ['set', '@entity.items', ['array/append', '@entity.items', '@payload.item']],\n ['notify', 'in_app', ['str/concat', 'Collected ', '@payload.item.name']],\n ],\n },\n {\n from: 'HasItems',\n to: 'HasItems',\n event: 'USE',\n effects: [\n ['let', [['item', ['array/nth', '@entity.items', '@payload.slot']]],\n ['if', '@item.onUse', ['emit', '@item.onUse', { item: '@item' }]],\n ['if', '@item.consumable',\n ['set', '@entity.items', ['array/filter', '@entity.items', ['fn', 'i', 'idx', ['!=', '@idx', '@payload.slot']]]]]],\n ['if', ['=', ['array/len', '@entity.items'], 0], ['emit', 'INVENTORY_EMPTY']],\n ],\n },\n {\n from: 'HasItems',\n to: 'HasItems',\n event: 'DROP',\n effects: [\n ['let', [['item', ['array/nth', '@entity.items', '@payload.slot']]],\n ['set', '@entity.items', ['array/filter', '@entity.items', ['fn', 'i', 'idx', ['!=', '@idx', '@payload.slot']]]],\n ['emit', 'ITEM_DROPPED', { item: '@item', position: { x: '@entity.x', y: '@entity.y' } }]],\n ['if', ['=', ['array/len', '@entity.items'], 0], ['emit', 'INVENTORY_EMPTY']],\n ],\n },\n {\n from: 'HasItems',\n to: 'Empty',\n event: 'INVENTORY_EMPTY',\n effects: [],\n },\n {\n from: 'Empty',\n to: 'Empty',\n event: 'EQUIP',\n effects: [\n ['set', '@entity.equipped', ['object/set', '@entity.equipped', '@payload.slot', '@payload.item']],\n ['emit', 'STATS_UPDATED', { equipped: '@entity.equipped' }],\n ],\n },\n {\n from: 'HasItems',\n to: 'HasItems',\n event: 'EQUIP',\n effects: [\n ['set', '@entity.equipped', ['object/set', '@entity.equipped', '@payload.slot', '@payload.item']],\n ['emit', 'STATS_UPDATED', { equipped: '@entity.equipped' }],\n ],\n },\n {\n from: 'Empty',\n to: 'Empty',\n event: 'UNEQUIP',\n effects: [\n ['set', '@entity.equipped', ['object/remove', '@entity.equipped', '@payload.slot']],\n ['emit', 'STATS_UPDATED', { equipped: '@entity.equipped' }],\n ],\n },\n {\n from: 'HasItems',\n to: 'HasItems',\n event: 'UNEQUIP',\n effects: [\n ['set', '@entity.equipped', ['object/remove', '@entity.equipped', '@payload.slot']],\n ['emit', 'STATS_UPDATED', { equipped: '@entity.equipped' }],\n ],\n },\n {\n from: 'Empty',\n to: 'Empty',\n event: 'OPEN',\n effects: [\n ['render-ui', 'modal', {\n type: 'modal',\n title: 'Inventory',\n isOpen: '@entity.isOpen',\n onClose: 'CLOSE',\n }],\n ],\n },\n {\n from: 'HasItems',\n to: 'HasItems',\n event: 'OPEN',\n effects: [\n ['render-ui', 'modal', {\n type: 'modal',\n title: 'Inventory',\n isOpen: '@entity.isOpen',\n onClose: 'CLOSE',\n }],\n ],\n },\n {\n from: 'Empty',\n to: 'Empty',\n event: 'CLOSE',\n effects: [['set', '@entity.isOpen', false]],\n },\n {\n from: 'HasItems',\n to: 'HasItems',\n event: 'CLOSE',\n effects: [['set', '@entity.isOpen', false]],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// Export All Behaviors\n// ============================================================================\n\nexport const GAME_ENTITY_BEHAVIORS: OrbitalSchema[] = [\n HEALTH_BEHAVIOR,\n SCORE_BEHAVIOR,\n MOVEMENT_BEHAVIOR,\n COMBAT_BEHAVIOR,\n INVENTORY_BEHAVIOR,\n];\n"]}
@@ -1,29 +1,28 @@
1
- import { StandardBehavior } from './types.js';
2
- import '@almadar/core/types';
1
+ import { OrbitalSchema } from '@almadar/core/types';
3
2
 
4
3
  /**
5
4
  * Game UI Behaviors
6
5
  *
7
6
  * Game interface behaviors: flow, dialogue, level progression.
8
- * These use the Trait architecture with stateMachine and ticks.
7
+ * Each behavior is a self-contained OrbitalSchema that can function as a standalone .orb file.
9
8
  *
10
9
  * @packageDocumentation
11
10
  */
12
11
 
13
12
  /**
14
- * std/GameFlow - Master game state management.
13
+ * std-gameflow - Master game state management.
15
14
  *
16
15
  * States: Menu → Playing → Paused → GameOver/Victory
17
16
  */
18
- declare const GAME_FLOW_BEHAVIOR: StandardBehavior;
17
+ declare const GAME_FLOW_BEHAVIOR: OrbitalSchema;
19
18
  /**
20
- * std/Dialogue - Manages NPC dialogue and branching conversations.
19
+ * std-dialogue - Manages NPC dialogue and branching conversations.
21
20
  */
22
- declare const DIALOGUE_BEHAVIOR: StandardBehavior;
21
+ declare const DIALOGUE_BEHAVIOR: OrbitalSchema;
23
22
  /**
24
- * std/LevelProgress - Manages level unlock, selection, and completion.
23
+ * std-levelprogress - Manages level unlock, selection, and completion.
25
24
  */
26
- declare const LEVEL_PROGRESS_BEHAVIOR: StandardBehavior;
27
- declare const GAME_UI_BEHAVIORS: StandardBehavior[];
25
+ declare const LEVEL_PROGRESS_BEHAVIOR: OrbitalSchema;
26
+ declare const GAME_UI_BEHAVIORS: OrbitalSchema[];
28
27
 
29
28
  export { DIALOGUE_BEHAVIOR, GAME_FLOW_BEHAVIOR, GAME_UI_BEHAVIORS, LEVEL_PROGRESS_BEHAVIOR };