@almadar/std 1.0.12 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/behaviors/game-ui.js +5 -5
- package/dist/behaviors/game-ui.js.map +1 -1
- package/dist/behaviors/index.js +10 -10
- package/dist/behaviors/index.js.map +1 -1
- package/dist/behaviors/registry.js +10 -10
- package/dist/behaviors/registry.js.map +1 -1
- package/dist/behaviors/ui-interaction.js +5 -5
- package/dist/behaviors/ui-interaction.js.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -74,10 +74,10 @@ var GAME_FLOW_BEHAVIOR = {
|
|
|
74
74
|
["set", "@entity.lastState", "Playing"],
|
|
75
75
|
["emit", "GAME_LOOP_PAUSE"],
|
|
76
76
|
["render-ui", "overlay", {
|
|
77
|
-
type: "game-
|
|
77
|
+
type: "game-over-screen",
|
|
78
78
|
title: "Paused",
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
variant: "pause",
|
|
80
|
+
actions: [
|
|
81
81
|
{ event: "RESUME", label: "Resume" },
|
|
82
82
|
{ event: "QUIT", label: "Quit" }
|
|
83
83
|
]
|
|
@@ -460,9 +460,9 @@ var LEVEL_PROGRESS_BEHAVIOR = {
|
|
|
460
460
|
event: "INIT",
|
|
461
461
|
effects: [
|
|
462
462
|
["render-ui", "screen", {
|
|
463
|
-
type: "
|
|
463
|
+
type: "game-menu",
|
|
464
464
|
title: "Select Level",
|
|
465
|
-
|
|
465
|
+
options: "@entity.levels",
|
|
466
466
|
onSelect: "SELECT_LEVEL"
|
|
467
467
|
}]
|
|
468
468
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../behaviors/game-ui.ts"],"names":[],"mappings":"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","file":"game-ui.js","sourcesContent":["/**\n * Game UI Behaviors\n *\n * Game interface behaviors: flow, dialogue, level progression.\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-gameflow - Game State Machine\n// ============================================================================\n\n/**\n * std-gameflow - Master game state management.\n *\n * States: Menu → Playing → Paused → GameOver/Victory\n */\nexport const GAME_FLOW_BEHAVIOR: OrbitalSchema = {\n name: 'std-gameflow',\n version: '1.0.0',\n description: 'Master game flow: menu, play, pause, game over, victory',\n orbitals: [\n {\n name: 'GameFlowOrbital',\n entity: {\n name: 'GameFlowState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'playTime', type: 'number', default: 0 },\n { name: 'attempts', type: 'number', default: 0 },\n { name: 'lastState', type: 'string', default: 'Menu' },\n { name: 'title', type: 'string', default: 'Game' },\n { name: 'allowPause', type: 'boolean', default: true },\n ],\n },\n traits: [\n {\n name: 'GameFlow',\n linkedEntity: 'GameFlowState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Menu', isInitial: true },\n { name: 'Playing' },\n { name: 'Paused' },\n { name: 'GameOver', isTerminal: true },\n { name: 'Victory', isTerminal: true },\n ],\n events: [\n { key: 'START', name: 'Start' },\n { key: 'PAUSE', name: 'Pause' },\n { key: 'RESUME', name: 'Resume' },\n { key: 'GAME_OVER', name: 'Game Over' },\n { key: 'VICTORY', name: 'Victory' },\n { key: 'RESTART', name: 'Restart' },\n { key: 'QUIT', name: 'Quit' },\n ],\n transitions: [\n {\n from: 'Menu',\n to: 'Menu',\n event: 'QUIT',\n effects: [\n ['emit', 'STOP'],\n ['render-ui', 'screen', {\n type: 'game-menu',\n title: '@entity.title',\n options: [{ event: 'START', label: 'Start Game' }],\n onSelect: 'START',\n }],\n ],\n },\n {\n from: 'Menu',\n to: 'Playing',\n event: 'START',\n effects: [\n ['set', '@entity.attempts', ['+', '@entity.attempts', 1]],\n ['set', '@entity.playTime', 0],\n ['emit', 'GAME_LOOP_START'],\n ],\n },\n {\n from: 'Playing',\n to: 'Paused',\n event: 'PAUSE',\n guard: '@entity.allowPause',\n effects: [\n ['set', '@entity.lastState', 'Playing'],\n ['emit', 'GAME_LOOP_PAUSE'],\n ['render-ui', 'overlay', {\n type: 'game-pause-overlay',\n title: 'Paused',\n visible: true,\n options: [\n { event: 'RESUME', label: 'Resume' },\n { event: 'QUIT', label: 'Quit' },\n ],\n }],\n ],\n },\n {\n from: 'Paused',\n to: 'Playing',\n event: 'RESUME',\n effects: [['emit', 'GAME_LOOP_RESUME']],\n },\n {\n from: 'Playing',\n to: 'GameOver',\n event: 'GAME_OVER',\n effects: [\n ['emit', 'STOP'],\n ['render-ui', 'overlay', {\n type: 'game-over-screen',\n title: 'Game Over',\n stats: [\n { label: 'Play Time', value: '@entity.playTime' },\n { label: 'Attempts', value: '@entity.attempts' },\n ],\n actions: [\n { event: 'RESTART', label: 'Try Again' },\n { event: 'QUIT', label: 'Quit' },\n ],\n }],\n ],\n },\n {\n from: 'Playing',\n to: 'Victory',\n event: 'VICTORY',\n effects: [\n ['emit', 'STOP'],\n ['render-ui', 'overlay', {\n type: 'game-over-screen',\n title: 'Victory!',\n variant: 'success',\n stats: [\n { label: 'Play Time', value: '@entity.playTime' },\n { label: 'Attempts', value: '@entity.attempts' },\n ],\n actions: [\n { event: 'RESTART', label: 'Play Again' },\n { event: 'QUIT', label: 'Quit' },\n ],\n }],\n ],\n },\n {\n from: 'GameOver',\n to: 'Playing',\n event: 'RESTART',\n effects: [\n ['emit', 'GAME_RESET'],\n ['emit', 'START'],\n ],\n },\n {\n from: 'Victory',\n to: 'Playing',\n event: 'RESTART',\n effects: [\n ['emit', 'GAME_RESET'],\n ['emit', 'START'],\n ],\n },\n {\n from: 'Playing',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n {\n from: 'Paused',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n {\n from: 'GameOver',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n {\n from: 'Victory',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-dialogue - NPC Conversation System\n// ============================================================================\n\n/**\n * std-dialogue - Manages NPC dialogue and branching conversations.\n */\nexport const DIALOGUE_BEHAVIOR: OrbitalSchema = {\n name: 'std-dialogue',\n version: '1.0.0',\n description: 'NPC dialogue system with branching conversations',\n orbitals: [\n {\n name: 'DialogueOrbital',\n entity: {\n name: 'DialogueState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'dialogueTree', type: 'array', default: [] },\n { name: 'currentNode', type: 'number', default: 0 },\n { name: 'displayedText', type: 'string', default: '' },\n { name: 'isTyping', type: 'boolean', default: false },\n { name: 'speaker', type: 'string', default: '' },\n { name: 'typeIndex', type: 'number', default: 0 },\n { name: 'lastTypeTime', type: 'number', default: 0 },\n { name: 'typingSpeed', type: 'number', default: 50 },\n ],\n },\n traits: [\n {\n name: 'Dialogue',\n linkedEntity: 'DialogueState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Hidden', isInitial: true },\n { name: 'Typing' },\n { name: 'Showing' },\n { name: 'Choice' },\n ],\n events: [\n { key: 'SHOW', name: 'Show' },\n { key: 'NEXT', name: 'Next' },\n { key: 'SELECT_CHOICE', name: 'Select Choice' },\n { key: 'SKIP', name: 'Skip' },\n { key: 'CLOSE', name: 'Close' },\n { key: 'TYPE_CHAR', name: 'Type Char' },\n { key: 'TYPE_COMPLETE', name: 'Type Complete' },\n ],\n transitions: [\n {\n from: 'Hidden',\n to: 'Typing',\n event: 'SHOW',\n effects: [\n ['set', '@entity.dialogueTree', '@payload.dialogue'],\n ['set', '@entity.currentNode', 0],\n ['set', '@entity.isTyping', true],\n ['set', '@entity.displayedText', ''],\n ['set', '@entity.typeIndex', 0],\n ['set', '@entity.lastTypeTime', '@now'],\n ['emit', 'GAME_PAUSE'],\n ['render-ui', 'overlay.dialogue', {\n type: 'dialogue-box',\n dialogue: {\n speaker: '@entity.speaker',\n text: '@entity.displayedText',\n isTyping: '@entity.isTyping',\n },\n onAdvance: 'NEXT',\n }],\n ],\n },\n {\n from: 'Typing',\n to: 'Typing',\n event: 'TYPE_CHAR',\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['do',\n ['set', '@entity.typeIndex', ['+', '@entity.typeIndex', 1]],\n ['set', '@entity.displayedText', ['str/slice', '@currentDialogue.text', 0, '@entity.typeIndex']],\n ['set', '@entity.lastTypeTime', '@now']]],\n ],\n },\n {\n from: 'Typing',\n to: 'Showing',\n event: 'TYPE_COMPLETE',\n effects: [['set', '@entity.isTyping', false]],\n },\n {\n from: 'Typing',\n to: 'Showing',\n event: 'SKIP',\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['do',\n ['set', '@entity.isTyping', false],\n ['set', '@entity.displayedText', '@currentDialogue.text']]],\n ],\n },\n {\n from: 'Showing',\n to: 'Typing',\n event: 'NEXT',\n guard: ['not', ['object/get', ['array/nth', '@entity.dialogueTree', '@entity.currentNode'], 'choices']],\n effects: [\n ['if', ['>=', '@entity.currentNode', ['-', ['array/len', '@entity.dialogueTree'], 1]],\n ['emit', 'CLOSE'],\n ['do',\n ['set', '@entity.currentNode', ['+', '@entity.currentNode', 1]],\n ['set', '@entity.isTyping', true],\n ['set', '@entity.displayedText', ''],\n ['set', '@entity.typeIndex', 0]]],\n ],\n },\n {\n from: 'Showing',\n to: 'Choice',\n event: 'NEXT',\n guard: ['object/get', ['array/nth', '@entity.dialogueTree', '@entity.currentNode'], 'choices'],\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['render-ui', 'overlay.dialogue', {\n type: 'dialogue-box',\n dialogue: {\n speaker: 'Choose',\n choices: '@currentDialogue.choices',\n },\n onChoice: 'SELECT_CHOICE',\n }]],\n ],\n },\n {\n from: 'Choice',\n to: 'Typing',\n event: 'SELECT_CHOICE',\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['let', [['choice', ['array/nth', '@currentDialogue.choices', '@payload.index']]],\n ['do',\n ['if', '@choice.nextNode',\n ['set', '@entity.currentNode', '@choice.nextNode'],\n ['set', '@entity.currentNode', ['+', '@entity.currentNode', 1]]],\n ['if', '@choice.effect', ['emit', '@choice.effect']]]]],\n ['set', '@entity.isTyping', true],\n ['set', '@entity.displayedText', ''],\n ['set', '@entity.typeIndex', 0],\n ],\n },\n {\n from: 'Typing',\n to: 'Hidden',\n event: 'CLOSE',\n effects: [\n ['set', '@entity.dialogueTree', []],\n ['set', '@entity.currentNode', 0],\n ['emit', 'GAME_RESUME'],\n ],\n },\n {\n from: 'Showing',\n to: 'Hidden',\n event: 'CLOSE',\n effects: [\n ['set', '@entity.dialogueTree', []],\n ['set', '@entity.currentNode', 0],\n ['emit', 'GAME_RESUME'],\n ],\n },\n {\n from: 'Choice',\n to: 'Hidden',\n event: 'CLOSE',\n effects: [\n ['set', '@entity.dialogueTree', []],\n ['set', '@entity.currentNode', 0],\n ['emit', 'GAME_RESUME'],\n ],\n },\n ],\n },\n ticks: [\n {\n name: 'TypewriterEffect',\n interval: 'frame',\n guard: ['and', '@entity.isTyping', ['>', ['-', '@now', '@entity.lastTypeTime'], ['/', 1000, '@entity.typingSpeed']]],\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['if', ['<', '@entity.typeIndex', ['str/len', '@currentDialogue.text']],\n ['emit', 'TYPE_CHAR'],\n ['emit', 'TYPE_COMPLETE']]],\n ],\n },\n ],\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-levelprogress - Level Unlock and Progression\n// ============================================================================\n\n/**\n * std-levelprogress - Manages level unlock, selection, and completion.\n */\nexport const LEVEL_PROGRESS_BEHAVIOR: OrbitalSchema = {\n name: 'std-levelprogress',\n version: '1.0.0',\n description: 'Level progression with unlock, selection, and completion tracking',\n orbitals: [\n {\n name: 'LevelProgressOrbital',\n entity: {\n name: 'LevelProgressState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'currentLevel', type: 'number', default: 0 },\n { name: 'unlockedLevels', type: 'array', default: [0] },\n { name: 'levelStars', type: 'object', default: {} },\n { name: 'totalStars', type: 'number', default: 0 },\n { name: 'levels', type: 'array', default: [] },\n { name: 'starsPerLevel', type: 'number', default: 3 },\n { name: 'unlockNext', type: 'boolean', default: true },\n { name: 'persistProgress', type: 'boolean', default: true },\n ],\n },\n traits: [\n {\n name: 'LevelProgress',\n linkedEntity: 'LevelProgressState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Browsing', isInitial: true },\n { name: 'LevelLoading' },\n { name: 'InLevel' },\n ],\n events: [\n { key: 'INIT', name: 'Initialize' },\n { key: 'SELECT_LEVEL', name: 'Select Level' },\n { key: 'LEVEL_LOADED', name: 'Level Loaded' },\n { key: 'COMPLETE_LEVEL', name: 'Complete Level' },\n { key: 'UNLOCK_LEVEL', name: 'Unlock Level' },\n { key: 'BACK_TO_SELECT', name: 'Back To Select' },\n ],\n transitions: [\n {\n from: 'Browsing',\n to: 'Browsing',\n event: 'INIT',\n effects: [\n ['render-ui', 'screen', {\n type: 'level-select',\n title: 'Select Level',\n levels: '@entity.levels',\n onSelect: 'SELECT_LEVEL',\n }],\n ],\n },\n {\n from: 'Browsing',\n to: 'LevelLoading',\n event: 'SELECT_LEVEL',\n guard: ['array/includes', '@entity.unlockedLevels', '@payload.levelIndex'],\n effects: [\n ['set', '@entity.currentLevel', '@payload.levelIndex'],\n ['emit', 'LOAD_LEVEL', { levelData: ['array/nth', '@entity.levels', '@payload.levelIndex'] }],\n ],\n },\n {\n from: 'LevelLoading',\n to: 'InLevel',\n event: 'LEVEL_LOADED',\n effects: [['emit', 'START']],\n },\n {\n from: 'InLevel',\n to: 'InLevel',\n event: 'COMPLETE_LEVEL',\n effects: [\n ['set', '@entity.levelStars', ['object/set', '@entity.levelStars', ['str/toString', '@entity.currentLevel'],\n ['math/max', '@payload.stars', ['object/get', '@entity.levelStars', ['str/toString', '@entity.currentLevel'], 0]]]],\n ['set', '@entity.totalStars', ['array/reduce', ['object/values', '@entity.levelStars'], ['fn', 'sum', 'v', ['+', '@sum', '@v']], 0]],\n ['if', ['and', '@entity.unlockNext', ['<', '@entity.currentLevel', ['-', ['array/len', '@entity.levels'], 1]]],\n ['emit', 'UNLOCK_LEVEL', { levelIndex: ['+', '@entity.currentLevel', 1] }]],\n ['if', '@entity.persistProgress',\n ['persist', 'save', 'LevelProgress', {\n unlockedLevels: '@entity.unlockedLevels',\n levelStars: '@entity.levelStars',\n }]],\n ],\n },\n {\n from: 'InLevel',\n to: 'InLevel',\n event: 'UNLOCK_LEVEL',\n guard: ['not', ['array/includes', '@entity.unlockedLevels', '@payload.levelIndex']],\n effects: [\n ['set', '@entity.unlockedLevels', ['array/append', '@entity.unlockedLevels', '@payload.levelIndex']],\n ],\n },\n {\n from: 'InLevel',\n to: 'Browsing',\n event: 'BACK_TO_SELECT',\n effects: [['emit', 'INIT']],\n },\n {\n from: 'LevelLoading',\n to: 'Browsing',\n event: 'INIT',\n effects: [],\n },\n {\n from: 'InLevel',\n to: 'Browsing',\n event: 'INIT',\n effects: [],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// Export All Behaviors\n// ============================================================================\n\nexport const GAME_UI_BEHAVIORS: OrbitalSchema[] = [\n GAME_FLOW_BEHAVIOR,\n DIALOGUE_BEHAVIOR,\n LEVEL_PROGRESS_BEHAVIOR,\n];\n"]}
|
|
1
|
+
{"version":3,"sources":["../../behaviors/game-ui.ts"],"names":[],"mappings":"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","file":"game-ui.js","sourcesContent":["/**\n * Game UI Behaviors\n *\n * Game interface behaviors: flow, dialogue, level progression.\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-gameflow - Game State Machine\n// ============================================================================\n\n/**\n * std-gameflow - Master game state management.\n *\n * States: Menu → Playing → Paused → GameOver/Victory\n */\nexport const GAME_FLOW_BEHAVIOR: OrbitalSchema = {\n name: 'std-gameflow',\n version: '1.0.0',\n description: 'Master game flow: menu, play, pause, game over, victory',\n orbitals: [\n {\n name: 'GameFlowOrbital',\n entity: {\n name: 'GameFlowState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'playTime', type: 'number', default: 0 },\n { name: 'attempts', type: 'number', default: 0 },\n { name: 'lastState', type: 'string', default: 'Menu' },\n { name: 'title', type: 'string', default: 'Game' },\n { name: 'allowPause', type: 'boolean', default: true },\n ],\n },\n traits: [\n {\n name: 'GameFlow',\n linkedEntity: 'GameFlowState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Menu', isInitial: true },\n { name: 'Playing' },\n { name: 'Paused' },\n { name: 'GameOver', isTerminal: true },\n { name: 'Victory', isTerminal: true },\n ],\n events: [\n { key: 'START', name: 'Start' },\n { key: 'PAUSE', name: 'Pause' },\n { key: 'RESUME', name: 'Resume' },\n { key: 'GAME_OVER', name: 'Game Over' },\n { key: 'VICTORY', name: 'Victory' },\n { key: 'RESTART', name: 'Restart' },\n { key: 'QUIT', name: 'Quit' },\n ],\n transitions: [\n {\n from: 'Menu',\n to: 'Menu',\n event: 'QUIT',\n effects: [\n ['emit', 'STOP'],\n ['render-ui', 'screen', {\n type: 'game-menu',\n title: '@entity.title',\n options: [{ event: 'START', label: 'Start Game' }],\n onSelect: 'START',\n }],\n ],\n },\n {\n from: 'Menu',\n to: 'Playing',\n event: 'START',\n effects: [\n ['set', '@entity.attempts', ['+', '@entity.attempts', 1]],\n ['set', '@entity.playTime', 0],\n ['emit', 'GAME_LOOP_START'],\n ],\n },\n {\n from: 'Playing',\n to: 'Paused',\n event: 'PAUSE',\n guard: '@entity.allowPause',\n effects: [\n ['set', '@entity.lastState', 'Playing'],\n ['emit', 'GAME_LOOP_PAUSE'],\n ['render-ui', 'overlay', {\n type: 'game-over-screen',\n title: 'Paused',\n variant: 'pause',\n actions: [\n { event: 'RESUME', label: 'Resume' },\n { event: 'QUIT', label: 'Quit' },\n ],\n }],\n ],\n },\n {\n from: 'Paused',\n to: 'Playing',\n event: 'RESUME',\n effects: [['emit', 'GAME_LOOP_RESUME']],\n },\n {\n from: 'Playing',\n to: 'GameOver',\n event: 'GAME_OVER',\n effects: [\n ['emit', 'STOP'],\n ['render-ui', 'overlay', {\n type: 'game-over-screen',\n title: 'Game Over',\n stats: [\n { label: 'Play Time', value: '@entity.playTime' },\n { label: 'Attempts', value: '@entity.attempts' },\n ],\n actions: [\n { event: 'RESTART', label: 'Try Again' },\n { event: 'QUIT', label: 'Quit' },\n ],\n }],\n ],\n },\n {\n from: 'Playing',\n to: 'Victory',\n event: 'VICTORY',\n effects: [\n ['emit', 'STOP'],\n ['render-ui', 'overlay', {\n type: 'game-over-screen',\n title: 'Victory!',\n variant: 'success',\n stats: [\n { label: 'Play Time', value: '@entity.playTime' },\n { label: 'Attempts', value: '@entity.attempts' },\n ],\n actions: [\n { event: 'RESTART', label: 'Play Again' },\n { event: 'QUIT', label: 'Quit' },\n ],\n }],\n ],\n },\n {\n from: 'GameOver',\n to: 'Playing',\n event: 'RESTART',\n effects: [\n ['emit', 'GAME_RESET'],\n ['emit', 'START'],\n ],\n },\n {\n from: 'Victory',\n to: 'Playing',\n event: 'RESTART',\n effects: [\n ['emit', 'GAME_RESET'],\n ['emit', 'START'],\n ],\n },\n {\n from: 'Playing',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n {\n from: 'Paused',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n {\n from: 'GameOver',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n {\n from: 'Victory',\n to: 'Menu',\n event: 'QUIT',\n effects: [['emit', 'STOP']],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-dialogue - NPC Conversation System\n// ============================================================================\n\n/**\n * std-dialogue - Manages NPC dialogue and branching conversations.\n */\nexport const DIALOGUE_BEHAVIOR: OrbitalSchema = {\n name: 'std-dialogue',\n version: '1.0.0',\n description: 'NPC dialogue system with branching conversations',\n orbitals: [\n {\n name: 'DialogueOrbital',\n entity: {\n name: 'DialogueState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'dialogueTree', type: 'array', default: [] },\n { name: 'currentNode', type: 'number', default: 0 },\n { name: 'displayedText', type: 'string', default: '' },\n { name: 'isTyping', type: 'boolean', default: false },\n { name: 'speaker', type: 'string', default: '' },\n { name: 'typeIndex', type: 'number', default: 0 },\n { name: 'lastTypeTime', type: 'number', default: 0 },\n { name: 'typingSpeed', type: 'number', default: 50 },\n ],\n },\n traits: [\n {\n name: 'Dialogue',\n linkedEntity: 'DialogueState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Hidden', isInitial: true },\n { name: 'Typing' },\n { name: 'Showing' },\n { name: 'Choice' },\n ],\n events: [\n { key: 'SHOW', name: 'Show' },\n { key: 'NEXT', name: 'Next' },\n { key: 'SELECT_CHOICE', name: 'Select Choice' },\n { key: 'SKIP', name: 'Skip' },\n { key: 'CLOSE', name: 'Close' },\n { key: 'TYPE_CHAR', name: 'Type Char' },\n { key: 'TYPE_COMPLETE', name: 'Type Complete' },\n ],\n transitions: [\n {\n from: 'Hidden',\n to: 'Typing',\n event: 'SHOW',\n effects: [\n ['set', '@entity.dialogueTree', '@payload.dialogue'],\n ['set', '@entity.currentNode', 0],\n ['set', '@entity.isTyping', true],\n ['set', '@entity.displayedText', ''],\n ['set', '@entity.typeIndex', 0],\n ['set', '@entity.lastTypeTime', '@now'],\n ['emit', 'GAME_PAUSE'],\n ['render-ui', 'overlay.dialogue', {\n type: 'dialogue-box',\n dialogue: {\n speaker: '@entity.speaker',\n text: '@entity.displayedText',\n isTyping: '@entity.isTyping',\n },\n onAdvance: 'NEXT',\n }],\n ],\n },\n {\n from: 'Typing',\n to: 'Typing',\n event: 'TYPE_CHAR',\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['do',\n ['set', '@entity.typeIndex', ['+', '@entity.typeIndex', 1]],\n ['set', '@entity.displayedText', ['str/slice', '@currentDialogue.text', 0, '@entity.typeIndex']],\n ['set', '@entity.lastTypeTime', '@now']]],\n ],\n },\n {\n from: 'Typing',\n to: 'Showing',\n event: 'TYPE_COMPLETE',\n effects: [['set', '@entity.isTyping', false]],\n },\n {\n from: 'Typing',\n to: 'Showing',\n event: 'SKIP',\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['do',\n ['set', '@entity.isTyping', false],\n ['set', '@entity.displayedText', '@currentDialogue.text']]],\n ],\n },\n {\n from: 'Showing',\n to: 'Typing',\n event: 'NEXT',\n guard: ['not', ['object/get', ['array/nth', '@entity.dialogueTree', '@entity.currentNode'], 'choices']],\n effects: [\n ['if', ['>=', '@entity.currentNode', ['-', ['array/len', '@entity.dialogueTree'], 1]],\n ['emit', 'CLOSE'],\n ['do',\n ['set', '@entity.currentNode', ['+', '@entity.currentNode', 1]],\n ['set', '@entity.isTyping', true],\n ['set', '@entity.displayedText', ''],\n ['set', '@entity.typeIndex', 0]]],\n ],\n },\n {\n from: 'Showing',\n to: 'Choice',\n event: 'NEXT',\n guard: ['object/get', ['array/nth', '@entity.dialogueTree', '@entity.currentNode'], 'choices'],\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['render-ui', 'overlay.dialogue', {\n type: 'dialogue-box',\n dialogue: {\n speaker: 'Choose',\n choices: '@currentDialogue.choices',\n },\n onChoice: 'SELECT_CHOICE',\n }]],\n ],\n },\n {\n from: 'Choice',\n to: 'Typing',\n event: 'SELECT_CHOICE',\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['let', [['choice', ['array/nth', '@currentDialogue.choices', '@payload.index']]],\n ['do',\n ['if', '@choice.nextNode',\n ['set', '@entity.currentNode', '@choice.nextNode'],\n ['set', '@entity.currentNode', ['+', '@entity.currentNode', 1]]],\n ['if', '@choice.effect', ['emit', '@choice.effect']]]]],\n ['set', '@entity.isTyping', true],\n ['set', '@entity.displayedText', ''],\n ['set', '@entity.typeIndex', 0],\n ],\n },\n {\n from: 'Typing',\n to: 'Hidden',\n event: 'CLOSE',\n effects: [\n ['set', '@entity.dialogueTree', []],\n ['set', '@entity.currentNode', 0],\n ['emit', 'GAME_RESUME'],\n ],\n },\n {\n from: 'Showing',\n to: 'Hidden',\n event: 'CLOSE',\n effects: [\n ['set', '@entity.dialogueTree', []],\n ['set', '@entity.currentNode', 0],\n ['emit', 'GAME_RESUME'],\n ],\n },\n {\n from: 'Choice',\n to: 'Hidden',\n event: 'CLOSE',\n effects: [\n ['set', '@entity.dialogueTree', []],\n ['set', '@entity.currentNode', 0],\n ['emit', 'GAME_RESUME'],\n ],\n },\n ],\n },\n ticks: [\n {\n name: 'TypewriterEffect',\n interval: 'frame',\n guard: ['and', '@entity.isTyping', ['>', ['-', '@now', '@entity.lastTypeTime'], ['/', 1000, '@entity.typingSpeed']]],\n effects: [\n ['let', [['currentDialogue', ['array/nth', '@entity.dialogueTree', '@entity.currentNode']]],\n ['if', ['<', '@entity.typeIndex', ['str/len', '@currentDialogue.text']],\n ['emit', 'TYPE_CHAR'],\n ['emit', 'TYPE_COMPLETE']]],\n ],\n },\n ],\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// std-levelprogress - Level Unlock and Progression\n// ============================================================================\n\n/**\n * std-levelprogress - Manages level unlock, selection, and completion.\n */\nexport const LEVEL_PROGRESS_BEHAVIOR: OrbitalSchema = {\n name: 'std-levelprogress',\n version: '1.0.0',\n description: 'Level progression with unlock, selection, and completion tracking',\n orbitals: [\n {\n name: 'LevelProgressOrbital',\n entity: {\n name: 'LevelProgressState',\n persistence: 'runtime',\n fields: [\n { name: 'id', type: 'string', required: true },\n { name: 'currentLevel', type: 'number', default: 0 },\n { name: 'unlockedLevels', type: 'array', default: [0] },\n { name: 'levelStars', type: 'object', default: {} },\n { name: 'totalStars', type: 'number', default: 0 },\n { name: 'levels', type: 'array', default: [] },\n { name: 'starsPerLevel', type: 'number', default: 3 },\n { name: 'unlockNext', type: 'boolean', default: true },\n { name: 'persistProgress', type: 'boolean', default: true },\n ],\n },\n traits: [\n {\n name: 'LevelProgress',\n linkedEntity: 'LevelProgressState',\n category: 'interaction',\n stateMachine: {\n states: [\n { name: 'Browsing', isInitial: true },\n { name: 'LevelLoading' },\n { name: 'InLevel' },\n ],\n events: [\n { key: 'INIT', name: 'Initialize' },\n { key: 'SELECT_LEVEL', name: 'Select Level' },\n { key: 'LEVEL_LOADED', name: 'Level Loaded' },\n { key: 'COMPLETE_LEVEL', name: 'Complete Level' },\n { key: 'UNLOCK_LEVEL', name: 'Unlock Level' },\n { key: 'BACK_TO_SELECT', name: 'Back To Select' },\n ],\n transitions: [\n {\n from: 'Browsing',\n to: 'Browsing',\n event: 'INIT',\n effects: [\n ['render-ui', 'screen', {\n type: 'game-menu',\n title: 'Select Level',\n options: '@entity.levels',\n onSelect: 'SELECT_LEVEL',\n }],\n ],\n },\n {\n from: 'Browsing',\n to: 'LevelLoading',\n event: 'SELECT_LEVEL',\n guard: ['array/includes', '@entity.unlockedLevels', '@payload.levelIndex'],\n effects: [\n ['set', '@entity.currentLevel', '@payload.levelIndex'],\n ['emit', 'LOAD_LEVEL', { levelData: ['array/nth', '@entity.levels', '@payload.levelIndex'] }],\n ],\n },\n {\n from: 'LevelLoading',\n to: 'InLevel',\n event: 'LEVEL_LOADED',\n effects: [['emit', 'START']],\n },\n {\n from: 'InLevel',\n to: 'InLevel',\n event: 'COMPLETE_LEVEL',\n effects: [\n ['set', '@entity.levelStars', ['object/set', '@entity.levelStars', ['str/toString', '@entity.currentLevel'],\n ['math/max', '@payload.stars', ['object/get', '@entity.levelStars', ['str/toString', '@entity.currentLevel'], 0]]]],\n ['set', '@entity.totalStars', ['array/reduce', ['object/values', '@entity.levelStars'], ['fn', 'sum', 'v', ['+', '@sum', '@v']], 0]],\n ['if', ['and', '@entity.unlockNext', ['<', '@entity.currentLevel', ['-', ['array/len', '@entity.levels'], 1]]],\n ['emit', 'UNLOCK_LEVEL', { levelIndex: ['+', '@entity.currentLevel', 1] }]],\n ['if', '@entity.persistProgress',\n ['persist', 'save', 'LevelProgress', {\n unlockedLevels: '@entity.unlockedLevels',\n levelStars: '@entity.levelStars',\n }]],\n ],\n },\n {\n from: 'InLevel',\n to: 'InLevel',\n event: 'UNLOCK_LEVEL',\n guard: ['not', ['array/includes', '@entity.unlockedLevels', '@payload.levelIndex']],\n effects: [\n ['set', '@entity.unlockedLevels', ['array/append', '@entity.unlockedLevels', '@payload.levelIndex']],\n ],\n },\n {\n from: 'InLevel',\n to: 'Browsing',\n event: 'BACK_TO_SELECT',\n effects: [['emit', 'INIT']],\n },\n {\n from: 'LevelLoading',\n to: 'Browsing',\n event: 'INIT',\n effects: [],\n },\n {\n from: 'InLevel',\n to: 'Browsing',\n event: 'INIT',\n effects: [],\n },\n ],\n },\n },\n ],\n pages: [],\n },\n ],\n};\n\n// ============================================================================\n// Export All Behaviors\n// ============================================================================\n\nexport const GAME_UI_BEHAVIORS: OrbitalSchema[] = [\n GAME_FLOW_BEHAVIOR,\n DIALOGUE_BEHAVIOR,\n LEVEL_PROGRESS_BEHAVIOR,\n];\n"]}
|
package/dist/behaviors/index.js
CHANGED
|
@@ -442,7 +442,7 @@ var LIST_BEHAVIOR = {
|
|
|
442
442
|
effects: [
|
|
443
443
|
["set", "@entity.selectedId", "@payload.id"],
|
|
444
444
|
["render-ui", "drawer", {
|
|
445
|
-
type: "
|
|
445
|
+
type: "detail-panel",
|
|
446
446
|
entity: "@entity.entityType",
|
|
447
447
|
data: "@payload.id",
|
|
448
448
|
actions: [
|
|
@@ -617,7 +617,7 @@ var DETAIL_BEHAVIOR = {
|
|
|
617
617
|
]
|
|
618
618
|
}],
|
|
619
619
|
["render-ui", "main", {
|
|
620
|
-
type: "
|
|
620
|
+
type: "detail-panel",
|
|
621
621
|
entity: "@entity.entityType",
|
|
622
622
|
fieldNames: "@entity.fields"
|
|
623
623
|
}]
|
|
@@ -1140,7 +1140,7 @@ var WIZARD_BEHAVIOR = {
|
|
|
1140
1140
|
currentStep: 2
|
|
1141
1141
|
}],
|
|
1142
1142
|
["render-ui", "main", {
|
|
1143
|
-
type: "
|
|
1143
|
+
type: "detail-panel",
|
|
1144
1144
|
entity: "@entity.entityType",
|
|
1145
1145
|
fieldNames: ["step1", "step2"],
|
|
1146
1146
|
title: "Review"
|
|
@@ -1229,7 +1229,7 @@ var MASTER_DETAIL_BEHAVIOR = {
|
|
|
1229
1229
|
effects: [
|
|
1230
1230
|
["set", "@entity.selectedId", "@payload.id"],
|
|
1231
1231
|
["render-ui", "main", {
|
|
1232
|
-
type: "
|
|
1232
|
+
type: "detail-panel",
|
|
1233
1233
|
entity: "@entity.entityType",
|
|
1234
1234
|
data: "@payload.id",
|
|
1235
1235
|
fieldNames: "@entity.detailFields"
|
|
@@ -1243,7 +1243,7 @@ var MASTER_DETAIL_BEHAVIOR = {
|
|
|
1243
1243
|
effects: [
|
|
1244
1244
|
["set", "@entity.selectedId", "@payload.id"],
|
|
1245
1245
|
["render-ui", "main", {
|
|
1246
|
-
type: "
|
|
1246
|
+
type: "detail-panel",
|
|
1247
1247
|
entity: "@entity.entityType",
|
|
1248
1248
|
data: "@payload.id",
|
|
1249
1249
|
fieldNames: "@entity.detailFields"
|
|
@@ -3948,10 +3948,10 @@ var GAME_FLOW_BEHAVIOR = {
|
|
|
3948
3948
|
["set", "@entity.lastState", "Playing"],
|
|
3949
3949
|
["emit", "GAME_LOOP_PAUSE"],
|
|
3950
3950
|
["render-ui", "overlay", {
|
|
3951
|
-
type: "game-
|
|
3951
|
+
type: "game-over-screen",
|
|
3952
3952
|
title: "Paused",
|
|
3953
|
-
|
|
3954
|
-
|
|
3953
|
+
variant: "pause",
|
|
3954
|
+
actions: [
|
|
3955
3955
|
{ event: "RESUME", label: "Resume" },
|
|
3956
3956
|
{ event: "QUIT", label: "Quit" }
|
|
3957
3957
|
]
|
|
@@ -4334,9 +4334,9 @@ var LEVEL_PROGRESS_BEHAVIOR = {
|
|
|
4334
4334
|
event: "INIT",
|
|
4335
4335
|
effects: [
|
|
4336
4336
|
["render-ui", "screen", {
|
|
4337
|
-
type: "
|
|
4337
|
+
type: "game-menu",
|
|
4338
4338
|
title: "Select Level",
|
|
4339
|
-
|
|
4339
|
+
options: "@entity.levels",
|
|
4340
4340
|
onSelect: "SELECT_LEVEL"
|
|
4341
4341
|
}]
|
|
4342
4342
|
]
|