idlerpg.sh 0.1.0
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/README.md +171 -0
- package/dist/affix/AffixRegistry.d.ts +68 -0
- package/dist/affix/AffixRegistry.d.ts.map +1 -0
- package/dist/affix/AffixRegistry.js +245 -0
- package/dist/affix/AffixRegistry.js.map +1 -0
- package/dist/affix/PluginLoader.d.ts +66 -0
- package/dist/affix/PluginLoader.d.ts.map +1 -0
- package/dist/affix/PluginLoader.js +321 -0
- package/dist/affix/PluginLoader.js.map +1 -0
- package/dist/affix/builtin.d.ts +6 -0
- package/dist/affix/builtin.d.ts.map +1 -0
- package/dist/affix/builtin.js +311 -0
- package/dist/affix/builtin.js.map +1 -0
- package/dist/affix/index.d.ts +8 -0
- package/dist/affix/index.d.ts.map +1 -0
- package/dist/affix/index.js +11 -0
- package/dist/affix/index.js.map +1 -0
- package/dist/affix/types.d.ts +152 -0
- package/dist/affix/types.d.ts.map +1 -0
- package/dist/affix/types.js +8 -0
- package/dist/affix/types.js.map +1 -0
- package/dist/ai/PlayKitClient.d.ts +208 -0
- package/dist/ai/PlayKitClient.d.ts.map +1 -0
- package/dist/ai/PlayKitClient.js +721 -0
- package/dist/ai/PlayKitClient.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/app/App.d.ts +85 -0
- package/dist/app/App.d.ts.map +1 -0
- package/dist/app/App.js +296 -0
- package/dist/app/App.js.map +1 -0
- package/dist/app/EventBus.d.ts +222 -0
- package/dist/app/EventBus.d.ts.map +1 -0
- package/dist/app/EventBus.js +88 -0
- package/dist/app/EventBus.js.map +1 -0
- package/dist/app/Keybind.d.ts +83 -0
- package/dist/app/Keybind.d.ts.map +1 -0
- package/dist/app/Keybind.js +184 -0
- package/dist/app/Keybind.js.map +1 -0
- package/dist/app/Router.d.ts +123 -0
- package/dist/app/Router.d.ts.map +1 -0
- package/dist/app/Router.js +142 -0
- package/dist/app/Router.js.map +1 -0
- package/dist/app/ScreenManager.d.ts +97 -0
- package/dist/app/ScreenManager.d.ts.map +1 -0
- package/dist/app/ScreenManager.js +216 -0
- package/dist/app/ScreenManager.js.map +1 -0
- package/dist/app/index.d.ts +14 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +19 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/screens/BaseScreen.d.ts +101 -0
- package/dist/app/screens/BaseScreen.d.ts.map +1 -0
- package/dist/app/screens/BaseScreen.js +132 -0
- package/dist/app/screens/BaseScreen.js.map +1 -0
- package/dist/app/screens/CharacterCreationScreen.d.ts +42 -0
- package/dist/app/screens/CharacterCreationScreen.d.ts.map +1 -0
- package/dist/app/screens/CharacterCreationScreen.js +467 -0
- package/dist/app/screens/CharacterCreationScreen.js.map +1 -0
- package/dist/app/screens/CombatScreen.d.ts +30 -0
- package/dist/app/screens/CombatScreen.d.ts.map +1 -0
- package/dist/app/screens/CombatScreen.js +309 -0
- package/dist/app/screens/CombatScreen.js.map +1 -0
- package/dist/app/screens/DialogScreen.d.ts +29 -0
- package/dist/app/screens/DialogScreen.d.ts.map +1 -0
- package/dist/app/screens/DialogScreen.js +295 -0
- package/dist/app/screens/DialogScreen.js.map +1 -0
- package/dist/app/screens/ExploreScreen.d.ts +50 -0
- package/dist/app/screens/ExploreScreen.d.ts.map +1 -0
- package/dist/app/screens/ExploreScreen.js +308 -0
- package/dist/app/screens/ExploreScreen.js.map +1 -0
- package/dist/app/screens/HelpScreen.d.ts +12 -0
- package/dist/app/screens/HelpScreen.d.ts.map +1 -0
- package/dist/app/screens/HelpScreen.js +155 -0
- package/dist/app/screens/HelpScreen.js.map +1 -0
- package/dist/app/screens/InventoryScreen.d.ts +27 -0
- package/dist/app/screens/InventoryScreen.d.ts.map +1 -0
- package/dist/app/screens/InventoryScreen.js +326 -0
- package/dist/app/screens/InventoryScreen.js.map +1 -0
- package/dist/app/screens/PrologueScreen.d.ts +24 -0
- package/dist/app/screens/PrologueScreen.d.ts.map +1 -0
- package/dist/app/screens/PrologueScreen.js +176 -0
- package/dist/app/screens/PrologueScreen.js.map +1 -0
- package/dist/app/screens/TitleScreen.d.ts +42 -0
- package/dist/app/screens/TitleScreen.d.ts.map +1 -0
- package/dist/app/screens/TitleScreen.js +380 -0
- package/dist/app/screens/TitleScreen.js.map +1 -0
- package/dist/app/screens/TravelScreen.d.ts +22 -0
- package/dist/app/screens/TravelScreen.d.ts.map +1 -0
- package/dist/app/screens/TravelScreen.js +122 -0
- package/dist/app/screens/TravelScreen.js.map +1 -0
- package/dist/app/screens/index.d.ts +14 -0
- package/dist/app/screens/index.d.ts.map +1 -0
- package/dist/app/screens/index.js +17 -0
- package/dist/app/screens/index.js.map +1 -0
- package/dist/commands/CommandRegistry.d.ts +91 -0
- package/dist/commands/CommandRegistry.d.ts.map +1 -0
- package/dist/commands/CommandRegistry.js +159 -0
- package/dist/commands/CommandRegistry.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +10 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/core/Actor.d.ts +103 -0
- package/dist/core/Actor.d.ts.map +1 -0
- package/dist/core/Actor.js +409 -0
- package/dist/core/Actor.js.map +1 -0
- package/dist/core/Combat.d.ts +37 -0
- package/dist/core/Combat.d.ts.map +1 -0
- package/dist/core/Combat.js +294 -0
- package/dist/core/Combat.js.map +1 -0
- package/dist/core/DungeonRunner.d.ts +169 -0
- package/dist/core/DungeonRunner.d.ts.map +1 -0
- package/dist/core/DungeonRunner.js +627 -0
- package/dist/core/DungeonRunner.js.map +1 -0
- package/dist/core/Game.d.ts +133 -0
- package/dist/core/Game.d.ts.map +1 -0
- package/dist/core/Game.js +644 -0
- package/dist/core/Game.js.map +1 -0
- package/dist/core/IdleCombat.d.ts +61 -0
- package/dist/core/IdleCombat.d.ts.map +1 -0
- package/dist/core/IdleCombat.js +461 -0
- package/dist/core/IdleCombat.js.map +1 -0
- package/dist/core/IdleGameManager.d.ts +198 -0
- package/dist/core/IdleGameManager.d.ts.map +1 -0
- package/dist/core/IdleGameManager.js +688 -0
- package/dist/core/IdleGameManager.js.map +1 -0
- package/dist/core/IdleSaveManager.d.ts +109 -0
- package/dist/core/IdleSaveManager.d.ts.map +1 -0
- package/dist/core/IdleSaveManager.js +296 -0
- package/dist/core/IdleSaveManager.js.map +1 -0
- package/dist/core/NewGameFlowManager.d.ts +64 -0
- package/dist/core/NewGameFlowManager.d.ts.map +1 -0
- package/dist/core/NewGameFlowManager.js +153 -0
- package/dist/core/NewGameFlowManager.js.map +1 -0
- package/dist/core/Player.d.ts +65 -0
- package/dist/core/Player.d.ts.map +1 -0
- package/dist/core/Player.js +261 -0
- package/dist/core/Player.js.map +1 -0
- package/dist/core/RoomHandlers.d.ts +75 -0
- package/dist/core/RoomHandlers.d.ts.map +1 -0
- package/dist/core/RoomHandlers.js +383 -0
- package/dist/core/RoomHandlers.js.map +1 -0
- package/dist/core/SaveManager.d.ts +84 -0
- package/dist/core/SaveManager.d.ts.map +1 -0
- package/dist/core/SaveManager.js +281 -0
- package/dist/core/SaveManager.js.map +1 -0
- package/dist/core/SaveMigration.d.ts +69 -0
- package/dist/core/SaveMigration.d.ts.map +1 -0
- package/dist/core/SaveMigration.js +408 -0
- package/dist/core/SaveMigration.js.map +1 -0
- package/dist/core/StateAdapter.d.ts +79 -0
- package/dist/core/StateAdapter.d.ts.map +1 -0
- package/dist/core/StateAdapter.js +397 -0
- package/dist/core/StateAdapter.js.map +1 -0
- package/dist/core/Team.d.ts +145 -0
- package/dist/core/Team.d.ts.map +1 -0
- package/dist/core/Team.js +371 -0
- package/dist/core/Team.js.map +1 -0
- package/dist/core/TeamCombat.d.ts +88 -0
- package/dist/core/TeamCombat.d.ts.map +1 -0
- package/dist/core/TeamCombat.js +405 -0
- package/dist/core/TeamCombat.js.map +1 -0
- package/dist/core/TeamDungeonRunner.d.ts +186 -0
- package/dist/core/TeamDungeonRunner.d.ts.map +1 -0
- package/dist/core/TeamDungeonRunner.js +758 -0
- package/dist/core/TeamDungeonRunner.js.map +1 -0
- package/dist/core/TimeManager.d.ts +114 -0
- package/dist/core/TimeManager.d.ts.map +1 -0
- package/dist/core/TimeManager.js +318 -0
- package/dist/core/TimeManager.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/timeConstants.d.ts +135 -0
- package/dist/core/timeConstants.d.ts.map +1 -0
- package/dist/core/timeConstants.js +157 -0
- package/dist/core/timeConstants.js.map +1 -0
- package/dist/core/types.d.ts +780 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +16 -0
- package/dist/core/types.js.map +1 -0
- package/dist/data/continents/index.d.ts +163 -0
- package/dist/data/continents/index.d.ts.map +1 -0
- package/dist/data/continents/index.js +31 -0
- package/dist/data/continents/index.js.map +1 -0
- package/dist/data/continents/verdantia.d.ts +294 -0
- package/dist/data/continents/verdantia.d.ts.map +1 -0
- package/dist/data/continents/verdantia.js +327 -0
- package/dist/data/continents/verdantia.js.map +1 -0
- package/dist/handlers/DialogHandler.d.ts +95 -0
- package/dist/handlers/DialogHandler.d.ts.map +1 -0
- package/dist/handlers/DialogHandler.js +450 -0
- package/dist/handlers/DialogHandler.js.map +1 -0
- package/dist/handlers/SaveLoadHandler.d.ts +60 -0
- package/dist/handlers/SaveLoadHandler.d.ts.map +1 -0
- package/dist/handlers/SaveLoadHandler.js +187 -0
- package/dist/handlers/SaveLoadHandler.js.map +1 -0
- package/dist/handlers/TitleScreenHandler.d.ts +43 -0
- package/dist/handlers/TitleScreenHandler.d.ts.map +1 -0
- package/dist/handlers/TitleScreenHandler.js +508 -0
- package/dist/handlers/TitleScreenHandler.js.map +1 -0
- package/dist/handlers/WorkshopHandler.d.ts +75 -0
- package/dist/handlers/WorkshopHandler.d.ts.map +1 -0
- package/dist/handlers/WorkshopHandler.js +401 -0
- package/dist/handlers/WorkshopHandler.js.map +1 -0
- package/dist/handlers/index.d.ts +12 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +14 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/types.d.ts +34 -0
- package/dist/handlers/types.d.ts.map +1 -0
- package/dist/handlers/types.js +8 -0
- package/dist/handlers/types.js.map +1 -0
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +130 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +40 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +105 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/types.d.ts +133 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +8 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/i18n/zh.d.ts +3 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +130 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/instrument.d.ts +8 -0
- package/dist/instrument.d.ts.map +1 -0
- package/dist/instrument.js +33 -0
- package/dist/instrument.js.map +1 -0
- package/dist/main-new.d.ts +12 -0
- package/dist/main-new.d.ts.map +1 -0
- package/dist/main-new.js +32 -0
- package/dist/main-new.js.map +1 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +2816 -0
- package/dist/main.js.map +1 -0
- package/dist/map/ContinentManager.d.ts +88 -0
- package/dist/map/ContinentManager.d.ts.map +1 -0
- package/dist/map/ContinentManager.js +241 -0
- package/dist/map/ContinentManager.js.map +1 -0
- package/dist/map/DungeonGenerator.d.ts +32 -0
- package/dist/map/DungeonGenerator.d.ts.map +1 -0
- package/dist/map/DungeonGenerator.js +615 -0
- package/dist/map/DungeonGenerator.js.map +1 -0
- package/dist/map/MapGenerator.d.ts +27 -0
- package/dist/map/MapGenerator.d.ts.map +1 -0
- package/dist/map/MapGenerator.js +485 -0
- package/dist/map/MapGenerator.js.map +1 -0
- package/dist/map/index.d.ts +5 -0
- package/dist/map/index.d.ts.map +1 -0
- package/dist/map/index.js +8 -0
- package/dist/map/index.js.map +1 -0
- package/dist/npc/NPCGenerator.d.ts +68 -0
- package/dist/npc/NPCGenerator.d.ts.map +1 -0
- package/dist/npc/NPCGenerator.js +468 -0
- package/dist/npc/NPCGenerator.js.map +1 -0
- package/dist/npc/NPCManager.d.ts +86 -0
- package/dist/npc/NPCManager.d.ts.map +1 -0
- package/dist/npc/NPCManager.js +217 -0
- package/dist/npc/NPCManager.js.map +1 -0
- package/dist/npc/fixedNPCs.d.ts +7 -0
- package/dist/npc/fixedNPCs.d.ts.map +1 -0
- package/dist/npc/fixedNPCs.js +196 -0
- package/dist/npc/fixedNPCs.js.map +1 -0
- package/dist/npc/index.d.ts +9 -0
- package/dist/npc/index.d.ts.map +1 -0
- package/dist/npc/index.js +12 -0
- package/dist/npc/index.js.map +1 -0
- package/dist/npc/traits.d.ts +33 -0
- package/dist/npc/traits.d.ts.map +1 -0
- package/dist/npc/traits.js +795 -0
- package/dist/npc/traits.js.map +1 -0
- package/dist/npc/types.d.ts +193 -0
- package/dist/npc/types.d.ts.map +1 -0
- package/dist/npc/types.js +9 -0
- package/dist/npc/types.js.map +1 -0
- package/dist/quest/QuestManager.d.ts +79 -0
- package/dist/quest/QuestManager.d.ts.map +1 -0
- package/dist/quest/QuestManager.js +273 -0
- package/dist/quest/QuestManager.js.map +1 -0
- package/dist/quest/index.d.ts +6 -0
- package/dist/quest/index.d.ts.map +1 -0
- package/dist/quest/index.js +9 -0
- package/dist/quest/index.js.map +1 -0
- package/dist/quest/types.d.ts +81 -0
- package/dist/quest/types.d.ts.map +1 -0
- package/dist/quest/types.js +8 -0
- package/dist/quest/types.js.map +1 -0
- package/dist/strategy/StrategyExecutor.d.ts +159 -0
- package/dist/strategy/StrategyExecutor.d.ts.map +1 -0
- package/dist/strategy/StrategyExecutor.js +479 -0
- package/dist/strategy/StrategyExecutor.js.map +1 -0
- package/dist/strategy/StrategyParser.d.ts +48 -0
- package/dist/strategy/StrategyParser.d.ts.map +1 -0
- package/dist/strategy/StrategyParser.js +321 -0
- package/dist/strategy/StrategyParser.js.map +1 -0
- package/dist/strategy/defaultStrategy.d.ts +40 -0
- package/dist/strategy/defaultStrategy.d.ts.map +1 -0
- package/dist/strategy/defaultStrategy.js +254 -0
- package/dist/strategy/defaultStrategy.js.map +1 -0
- package/dist/strategy/index.d.ts +8 -0
- package/dist/strategy/index.d.ts.map +1 -0
- package/dist/strategy/index.js +14 -0
- package/dist/strategy/index.js.map +1 -0
- package/dist/tui/ExploreMenu.d.ts +106 -0
- package/dist/tui/ExploreMenu.d.ts.map +1 -0
- package/dist/tui/ExploreMenu.js +282 -0
- package/dist/tui/ExploreMenu.js.map +1 -0
- package/dist/tui/GameUI.d.ts +313 -0
- package/dist/tui/GameUI.d.ts.map +1 -0
- package/dist/tui/GameUI.js +2116 -0
- package/dist/tui/GameUI.js.map +1 -0
- package/dist/tui/GameUIAdapter.d.ts +207 -0
- package/dist/tui/GameUIAdapter.d.ts.map +1 -0
- package/dist/tui/GameUIAdapter.js +1342 -0
- package/dist/tui/GameUIAdapter.js.map +1 -0
- package/dist/tui/Input.d.ts +139 -0
- package/dist/tui/Input.d.ts.map +1 -0
- package/dist/tui/Input.js +278 -0
- package/dist/tui/Input.js.map +1 -0
- package/dist/tui/Menu.d.ts +110 -0
- package/dist/tui/Menu.d.ts.map +1 -0
- package/dist/tui/Menu.js +365 -0
- package/dist/tui/Menu.js.map +1 -0
- package/dist/tui/Screen.d.ts +228 -0
- package/dist/tui/Screen.d.ts.map +1 -0
- package/dist/tui/Screen.js +502 -0
- package/dist/tui/Screen.js.map +1 -0
- package/dist/tui/components/Box.d.ts +36 -0
- package/dist/tui/components/Box.d.ts.map +1 -0
- package/dist/tui/components/Box.js +43 -0
- package/dist/tui/components/Box.js.map +1 -0
- package/dist/tui/components/List.d.ts +69 -0
- package/dist/tui/components/List.d.ts.map +1 -0
- package/dist/tui/components/List.js +136 -0
- package/dist/tui/components/List.js.map +1 -0
- package/dist/tui/components/ProgressBar.d.ts +42 -0
- package/dist/tui/components/ProgressBar.d.ts.map +1 -0
- package/dist/tui/components/ProgressBar.js +75 -0
- package/dist/tui/components/ProgressBar.js.map +1 -0
- package/dist/tui/components/index.d.ts +8 -0
- package/dist/tui/components/index.d.ts.map +1 -0
- package/dist/tui/components/index.js +11 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/core/BaseSection.d.ts +98 -0
- package/dist/tui/core/BaseSection.d.ts.map +1 -0
- package/dist/tui/core/BaseSection.js +174 -0
- package/dist/tui/core/BaseSection.js.map +1 -0
- package/dist/tui/core/Component.d.ts +61 -0
- package/dist/tui/core/Component.d.ts.map +1 -0
- package/dist/tui/core/Component.js +32 -0
- package/dist/tui/core/Component.js.map +1 -0
- package/dist/tui/core/Section.d.ts +101 -0
- package/dist/tui/core/Section.d.ts.map +1 -0
- package/dist/tui/core/Section.js +24 -0
- package/dist/tui/core/Section.js.map +1 -0
- package/dist/tui/core/SectionManager.d.ts +108 -0
- package/dist/tui/core/SectionManager.d.ts.map +1 -0
- package/dist/tui/core/SectionManager.js +258 -0
- package/dist/tui/core/SectionManager.js.map +1 -0
- package/dist/tui/core/index.d.ts +9 -0
- package/dist/tui/core/index.d.ts.map +1 -0
- package/dist/tui/core/index.js +12 -0
- package/dist/tui/core/index.js.map +1 -0
- package/dist/tui/index.d.ts +15 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +23 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/screens/BaseScreen.d.ts +62 -0
- package/dist/tui/screens/BaseScreen.d.ts.map +1 -0
- package/dist/tui/screens/BaseScreen.js +55 -0
- package/dist/tui/screens/BaseScreen.js.map +1 -0
- package/dist/tui/screens/CombatScreen.d.ts +43 -0
- package/dist/tui/screens/CombatScreen.d.ts.map +1 -0
- package/dist/tui/screens/CombatScreen.js +125 -0
- package/dist/tui/screens/CombatScreen.js.map +1 -0
- package/dist/tui/screens/DialogScreen.d.ts +53 -0
- package/dist/tui/screens/DialogScreen.d.ts.map +1 -0
- package/dist/tui/screens/DialogScreen.js +90 -0
- package/dist/tui/screens/DialogScreen.js.map +1 -0
- package/dist/tui/screens/DungeonScreen.d.ts +80 -0
- package/dist/tui/screens/DungeonScreen.d.ts.map +1 -0
- package/dist/tui/screens/DungeonScreen.js +317 -0
- package/dist/tui/screens/DungeonScreen.js.map +1 -0
- package/dist/tui/screens/ExploreScreen.d.ts +69 -0
- package/dist/tui/screens/ExploreScreen.d.ts.map +1 -0
- package/dist/tui/screens/ExploreScreen.js +224 -0
- package/dist/tui/screens/ExploreScreen.js.map +1 -0
- package/dist/tui/screens/SectionScreen.d.ts +84 -0
- package/dist/tui/screens/SectionScreen.d.ts.map +1 -0
- package/dist/tui/screens/SectionScreen.js +156 -0
- package/dist/tui/screens/SectionScreen.js.map +1 -0
- package/dist/tui/screens/TitleScreen.d.ts +40 -0
- package/dist/tui/screens/TitleScreen.d.ts.map +1 -0
- package/dist/tui/screens/TitleScreen.js +253 -0
- package/dist/tui/screens/TitleScreen.js.map +1 -0
- package/dist/tui/screens/TownScreen.d.ts +98 -0
- package/dist/tui/screens/TownScreen.d.ts.map +1 -0
- package/dist/tui/screens/TownScreen.js +370 -0
- package/dist/tui/screens/TownScreen.js.map +1 -0
- package/dist/tui/screens/TravelScreen.d.ts +67 -0
- package/dist/tui/screens/TravelScreen.d.ts.map +1 -0
- package/dist/tui/screens/TravelScreen.js +286 -0
- package/dist/tui/screens/TravelScreen.js.map +1 -0
- package/dist/tui/screens/index.d.ts +8 -0
- package/dist/tui/screens/index.d.ts.map +1 -0
- package/dist/tui/screens/index.js +17 -0
- package/dist/tui/screens/index.js.map +1 -0
- package/dist/tui/sections/ActionsSection.d.ts +71 -0
- package/dist/tui/sections/ActionsSection.d.ts.map +1 -0
- package/dist/tui/sections/ActionsSection.js +184 -0
- package/dist/tui/sections/ActionsSection.js.map +1 -0
- package/dist/tui/sections/DungeonSection.d.ts +65 -0
- package/dist/tui/sections/DungeonSection.d.ts.map +1 -0
- package/dist/tui/sections/DungeonSection.js +144 -0
- package/dist/tui/sections/DungeonSection.js.map +1 -0
- package/dist/tui/sections/EventsSection.d.ts +50 -0
- package/dist/tui/sections/EventsSection.d.ts.map +1 -0
- package/dist/tui/sections/EventsSection.js +134 -0
- package/dist/tui/sections/EventsSection.js.map +1 -0
- package/dist/tui/sections/MapSection.d.ts +66 -0
- package/dist/tui/sections/MapSection.d.ts.map +1 -0
- package/dist/tui/sections/MapSection.js +669 -0
- package/dist/tui/sections/MapSection.js.map +1 -0
- package/dist/tui/sections/StatusSection.d.ts +47 -0
- package/dist/tui/sections/StatusSection.d.ts.map +1 -0
- package/dist/tui/sections/StatusSection.js +133 -0
- package/dist/tui/sections/StatusSection.js.map +1 -0
- package/dist/tui/sections/TeamSection.d.ts +71 -0
- package/dist/tui/sections/TeamSection.d.ts.map +1 -0
- package/dist/tui/sections/TeamSection.js +224 -0
- package/dist/tui/sections/TeamSection.js.map +1 -0
- package/dist/tui/sections/TravelingSection.d.ts +51 -0
- package/dist/tui/sections/TravelingSection.d.ts.map +1 -0
- package/dist/tui/sections/TravelingSection.js +106 -0
- package/dist/tui/sections/TravelingSection.js.map +1 -0
- package/dist/tui/sections/index.d.ts +9 -0
- package/dist/tui/sections/index.d.ts.map +1 -0
- package/dist/tui/sections/index.js +12 -0
- package/dist/tui/sections/index.js.map +1 -0
- package/dist/ui/Terminal.d.ts +68 -0
- package/dist/ui/Terminal.d.ts.map +1 -0
- package/dist/ui/Terminal.js +297 -0
- package/dist/ui/Terminal.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +8 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/configMigration.d.ts +14 -0
- package/dist/utils/configMigration.d.ts.map +1 -0
- package/dist/utils/configMigration.js +92 -0
- package/dist/utils/configMigration.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +86 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +224 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/weapon/WeaponFactory.d.ts +32 -0
- package/dist/weapon/WeaponFactory.d.ts.map +1 -0
- package/dist/weapon/WeaponFactory.js +216 -0
- package/dist/weapon/WeaponFactory.js.map +1 -0
- package/dist/weapon/index.d.ts +5 -0
- package/dist/weapon/index.d.ts.map +1 -0
- package/dist/weapon/index.js +8 -0
- package/dist/weapon/index.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionManager.js","sources":["tui/core/SectionManager.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Section Manager - Handles focus and navigation between sections\r\n */\r\n\r\nimport type { ISection } from './Section.js';\r\nimport type { KeyEvent } from '../Input.js';\r\n\r\n/**\r\n * Navigation direction\r\n */\r\nexport type Direction = 'up' | 'down' | 'left' | 'right';\r\n\r\n/**\r\n * Section layout configuration\r\n * Maps directions to adjacent section IDs\r\n */\r\nexport interface SectionLayoutNode {\r\n up?: string;\r\n down?: string;\r\n left?: string;\r\n right?: string;\r\n}\r\n\r\nexport type SectionLayout = Map<string, SectionLayoutNode>;\r\n\r\n/**\r\n * Section Manager - Manages multiple sections and their focus states\r\n */\r\nexport class SectionManager {\r\n private sections: Map<string, ISection> = new Map();\r\n private layout: SectionLayout = new Map();\r\n private focusedId: string | null = null;\r\n private defaultFocusId: string | null = null;\r\n\r\n /**\r\n * Register a section with the manager\r\n */\r\n register(section: ISection): void {\r\n this.sections.set(section.id, section);\r\n if (this.defaultFocusId === null) {\r\n this.defaultFocusId = section.id;\r\n }\r\n }\r\n\r\n /**\r\n * Unregister a section\r\n */\r\n unregister(sectionId: string): void {\r\n this.sections.delete(sectionId);\r\n this.layout.delete(sectionId);\r\n if (this.focusedId === sectionId) {\r\n this.focusedId = null;\r\n }\r\n }\r\n\r\n /**\r\n * Get a section by ID\r\n */\r\n get(sectionId: string): ISection | undefined {\r\n return this.sections.get(sectionId);\r\n }\r\n\r\n /**\r\n * Get all sections\r\n */\r\n getAll(): ISection[] {\r\n return Array.from(this.sections.values());\r\n }\r\n\r\n /**\r\n * Set the navigation layout\r\n */\r\n setLayout(layout: SectionLayout): void {\r\n this.layout = layout;\r\n }\r\n\r\n /**\r\n * Configure layout node for a section\r\n */\r\n setLayoutNode(sectionId: string, node: SectionLayoutNode): void {\r\n this.layout.set(sectionId, node);\r\n }\r\n\r\n /**\r\n * Set the default focus section\r\n */\r\n setDefaultFocus(sectionId: string): void {\r\n this.defaultFocusId = sectionId;\r\n }\r\n\r\n /**\r\n * Get the currently focused section\r\n */\r\n getFocused(): ISection | null {\r\n if (!this.focusedId) return null;\r\n return this.sections.get(this.focusedId) || null;\r\n }\r\n\r\n /**\r\n * Get the ID of the focused section\r\n */\r\n getFocusedId(): string | null {\r\n return this.focusedId;\r\n }\r\n\r\n /**\r\n * Focus a specific section\r\n */\r\n focus(sectionId: string): boolean {\r\n const section = this.sections.get(sectionId);\r\n if (!section) return false;\r\n\r\n // Unfocus current\r\n if (this.focusedId) {\r\n const current = this.sections.get(this.focusedId);\r\n if (current) {\r\n current.focused = false;\r\n if (current.state.entered) {\r\n current.exit();\r\n }\r\n }\r\n }\r\n\r\n // Focus new\r\n section.focused = true;\r\n this.focusedId = sectionId;\r\n return true;\r\n }\r\n\r\n /**\r\n * Focus the default section\r\n */\r\n focusDefault(): boolean {\r\n if (this.defaultFocusId) {\r\n return this.focus(this.defaultFocusId);\r\n }\r\n // Focus first registered section\r\n const first = this.sections.keys().next().value;\r\n if (first) {\r\n return this.focus(first);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Navigate focus in a direction\r\n */\r\n navigate(direction: Direction): boolean {\r\n if (!this.focusedId) {\r\n return this.focusDefault();\r\n }\r\n\r\n const layoutNode = this.layout.get(this.focusedId);\r\n if (!layoutNode) return false;\r\n\r\n const targetId = layoutNode[direction];\r\n if (!targetId) return false;\r\n\r\n return this.focus(targetId);\r\n }\r\n\r\n /**\r\n * Enter the focused section\r\n */\r\n enterFocused(): boolean {\r\n const focused = this.getFocused();\r\n if (!focused || !focused.canEnter) return false;\r\n\r\n focused.enter();\r\n return true;\r\n }\r\n\r\n /**\r\n * Exit the entered section\r\n */\r\n exitEntered(): boolean {\r\n const focused = this.getFocused();\r\n if (!focused || !focused.state.entered) return false;\r\n\r\n focused.exit();\r\n return true;\r\n }\r\n\r\n /**\r\n * Check if any section is currently entered\r\n */\r\n isAnyEntered(): boolean {\r\n const focused = this.getFocused();\r\n return focused?.state.entered ?? false;\r\n }\r\n\r\n /**\r\n * Handle key input for navigation\r\n * Returns true if the key was consumed\r\n */\r\n handleKey(key: KeyEvent): boolean {\r\n const focused = this.getFocused();\r\n\r\n // If a section is entered, delegate to it first\r\n if (focused?.state.entered) {\r\n if (focused.handleKey(key)) {\r\n return true;\r\n }\r\n // Section didn't consume the key - allow left/right navigation even when entered\r\n if (key.name === 'left' || key.name === 'h') {\r\n return this.navigate('left');\r\n }\r\n if (key.name === 'right' || key.name === 'l') {\r\n return this.navigate('right');\r\n }\r\n return false;\r\n }\r\n\r\n // Handle navigation between sections (when not entered)\r\n switch (key.name) {\r\n case 'up':\r\n case 'k':\r\n return this.navigate('up');\r\n case 'down':\r\n case 'j':\r\n return this.navigate('down');\r\n case 'left':\r\n case 'h':\r\n return this.navigate('left');\r\n case 'right':\r\n case 'l':\r\n return this.navigate('right');\r\n case 'return':\r\n case 'space':\r\n return this.enterFocused();\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Get the current hint text (from focused section)\r\n */\r\n getCurrentHint(): string {\r\n const focused = this.getFocused();\r\n return focused?.getCurrentHint() || '';\r\n }\r\n\r\n /**\r\n * Clear all sections\r\n */\r\n clear(): void {\r\n this.sections.clear();\r\n this.layout.clear();\r\n this.focusedId = null;\r\n this.defaultFocusId = null;\r\n }\r\n}\r\n\r\n/**\r\n * Create a grid layout for sections\r\n * @param grid 2D array of section IDs (rows x columns)\r\n */\r\nexport function createGridLayout(grid: (string | null)[][]): SectionLayout {\r\n const layout: SectionLayout = new Map();\r\n\r\n for (let row = 0; row < grid.length; row++) {\r\n for (let col = 0; col < grid[row].length; col++) {\r\n const id = grid[row][col];\r\n if (!id) continue;\r\n\r\n const node: SectionLayoutNode = {};\r\n\r\n // Up\r\n for (let r = row - 1; r >= 0; r--) {\r\n if (grid[r][col]) {\r\n node.up = grid[r][col]!;\r\n break;\r\n }\r\n }\r\n\r\n // Down\r\n for (let r = row + 1; r < grid.length; r++) {\r\n if (grid[r][col]) {\r\n node.down = grid[r][col]!;\r\n break;\r\n }\r\n }\r\n\r\n // Left\r\n for (let c = col - 1; c >= 0; c--) {\r\n if (grid[row][c]) {\r\n node.left = grid[row][c]!;\r\n break;\r\n }\r\n }\r\n\r\n // Right\r\n for (let c = col + 1; c < grid[row].length; c++) {\r\n if (grid[row][c]) {\r\n node.right = grid[row][c]!;\r\n break;\r\n }\r\n }\r\n\r\n layout.set(id, node);\r\n }\r\n }\r\n\r\n return layout;\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"7d5b724d-a3d1-55a3-8d49-3223ea74b5ff"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["tui/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Core Module
|
|
3
|
+
* Exports all core types and classes
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cf1962ea-5fa2-57da-9480-033dc98dcf8c")}catch(e){}}();
|
|
7
|
+
export * from './Component.js';
|
|
8
|
+
export * from './Section.js';
|
|
9
|
+
export * from './BaseSection.js';
|
|
10
|
+
export * from './SectionManager.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
12
|
+
//# debugId=cf1962ea-5fa2-57da-9480-033dc98dcf8c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["tui/core/index.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * TUI Core Module\r\n * Exports all core types and classes\r\n */\r\n\r\nexport * from './Component.js';\r\nexport * from './Section.js';\r\nexport * from './BaseSection.js';\r\nexport * from './SectionManager.js';\r\n"],"names":[],"mappings":"AAAA;;;GAGG;;;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC","debug_id":"cf1962ea-5fa2-57da-9480-033dc98dcf8c"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Module Exports
|
|
3
|
+
* Terminal User Interface system with section-based architecture
|
|
4
|
+
*/
|
|
5
|
+
export * from './Screen.js';
|
|
6
|
+
export * from './Input.js';
|
|
7
|
+
export * from './core/index.js';
|
|
8
|
+
export * from './sections/index.js';
|
|
9
|
+
export * from './components/index.js';
|
|
10
|
+
export * from './Menu.js';
|
|
11
|
+
export * from './ExploreMenu.js';
|
|
12
|
+
export { GameUI, getGameUI } from './GameUIAdapter.js';
|
|
13
|
+
export type { UIMode, DialogOption } from './GameUIAdapter.js';
|
|
14
|
+
export { MIN_TERMINAL_SIZE } from './Screen.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["tui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAG3B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Module Exports
|
|
3
|
+
* Terminal User Interface system with section-based architecture
|
|
4
|
+
*/
|
|
5
|
+
// Low-level screen and input
|
|
6
|
+
|
|
7
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="74b5f710-eaba-58e5-a6f8-fff472c34e7f")}catch(e){}}();
|
|
8
|
+
export * from './Screen.js';
|
|
9
|
+
export * from './Input.js';
|
|
10
|
+
// Core types and classes (new architecture)
|
|
11
|
+
export * from './core/index.js';
|
|
12
|
+
// Section implementations (new architecture)
|
|
13
|
+
export * from './sections/index.js';
|
|
14
|
+
// Reusable components (new architecture)
|
|
15
|
+
export * from './components/index.js';
|
|
16
|
+
// Legacy exports (for backwards compatibility during migration)
|
|
17
|
+
export * from './Menu.js';
|
|
18
|
+
export * from './ExploreMenu.js';
|
|
19
|
+
// GameUI using new section-based architecture
|
|
20
|
+
export { GameUI, getGameUI } from './GameUIAdapter.js';
|
|
21
|
+
export { MIN_TERMINAL_SIZE } from './Screen.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
23
|
+
//# debugId=74b5f710-eaba-58e5-a6f8-fff472c34e7f
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["tui/index.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * TUI Module Exports\r\n * Terminal User Interface system with section-based architecture\r\n */\r\n\r\n// Low-level screen and input\r\nexport * from './Screen.js';\r\nexport * from './Input.js';\r\n\r\n// Core types and classes (new architecture)\r\nexport * from './core/index.js';\r\n\r\n// Section implementations (new architecture)\r\nexport * from './sections/index.js';\r\n\r\n// Reusable components (new architecture)\r\nexport * from './components/index.js';\r\n\r\n// Legacy exports (for backwards compatibility during migration)\r\nexport * from './Menu.js';\r\nexport * from './ExploreMenu.js';\r\n\r\n// GameUI using new section-based architecture\r\nexport { GameUI, getGameUI } from './GameUIAdapter.js';\r\nexport type { UIMode, DialogOption } from './GameUIAdapter.js';\r\n\r\nexport { MIN_TERMINAL_SIZE } from './Screen.js';\r\n"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6BAA6B;;;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,4CAA4C;AAC5C,cAAc,iBAAiB,CAAC;AAEhC,6CAA6C;AAC7C,cAAc,qBAAqB,CAAC;AAEpC,yCAAyC;AACzC,cAAc,uBAAuB,CAAC;AAEtC,gEAAgE;AAChE,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AAEjC,8CAA8C;AAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC","debug_id":"74b5f710-eaba-58e5-a6f8-fff472c34e7f"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseScreen - Base class for all screens in IdleRPG
|
|
3
|
+
* Provides common functionality for screen lifecycle and rendering
|
|
4
|
+
*/
|
|
5
|
+
import { type Screen } from '../Screen.js';
|
|
6
|
+
import type { KeyEvent } from '../Input.js';
|
|
7
|
+
/**
|
|
8
|
+
* Screen lifecycle interface
|
|
9
|
+
*/
|
|
10
|
+
export interface ScreenLifecycle {
|
|
11
|
+
onEnter(params?: unknown): Promise<void>;
|
|
12
|
+
onLeave(): Promise<void>;
|
|
13
|
+
onResize(width: number, height: number): void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Base screen class
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class BaseScreen implements ScreenLifecycle {
|
|
19
|
+
protected screen: Screen;
|
|
20
|
+
protected width: number;
|
|
21
|
+
protected height: number;
|
|
22
|
+
protected isActive: boolean;
|
|
23
|
+
constructor();
|
|
24
|
+
/**
|
|
25
|
+
* Called when screen becomes active
|
|
26
|
+
*/
|
|
27
|
+
onEnter(params?: unknown): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Called when screen becomes inactive
|
|
30
|
+
*/
|
|
31
|
+
onLeave(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Called when terminal is resized
|
|
34
|
+
*/
|
|
35
|
+
onResize(width: number, height: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Update screen dimensions
|
|
38
|
+
*/
|
|
39
|
+
protected updateDimensions(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Handle key input
|
|
42
|
+
* @returns true if the key was handled
|
|
43
|
+
*/
|
|
44
|
+
abstract handleKey(key: KeyEvent): Promise<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Render the screen
|
|
47
|
+
*/
|
|
48
|
+
abstract render(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Helper: Add an event to the screen's event list (if supported)
|
|
51
|
+
*/
|
|
52
|
+
addEvent?(message: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Helper: Update state from game (if supported)
|
|
55
|
+
*/
|
|
56
|
+
updateState?(...args: unknown[]): void;
|
|
57
|
+
/**
|
|
58
|
+
* Helper: Wait for user input (if supported)
|
|
59
|
+
*/
|
|
60
|
+
waitForName?(): Promise<string>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=BaseScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseScreen.d.ts","sourceRoot":"/","sources":["tui/screens/BaseScreen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,8BAAsB,UAAW,YAAW,eAAe;IACzD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAS;;IASpC;;OAEG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ7C;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAMlC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEvB;;OAEG;IACH,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAEhC;;OAEG;IACH,WAAW,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAEtC;;OAEG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;CAChC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseScreen - Base class for all screens in IdleRPG
|
|
3
|
+
* Provides common functionality for screen lifecycle and rendering
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d19872a7-979f-5db8-8cdf-e82e9658abd8")}catch(e){}}();
|
|
7
|
+
import { getScreen } from '../Screen.js';
|
|
8
|
+
/**
|
|
9
|
+
* Base screen class
|
|
10
|
+
*/
|
|
11
|
+
export class BaseScreen {
|
|
12
|
+
screen;
|
|
13
|
+
width;
|
|
14
|
+
height;
|
|
15
|
+
isActive = false;
|
|
16
|
+
constructor() {
|
|
17
|
+
this.screen = getScreen();
|
|
18
|
+
const size = this.screen.getSize();
|
|
19
|
+
this.width = size.width;
|
|
20
|
+
this.height = size.height;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Called when screen becomes active
|
|
24
|
+
*/
|
|
25
|
+
async onEnter(params) {
|
|
26
|
+
this.isActive = true;
|
|
27
|
+
this.updateDimensions();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Called when screen becomes inactive
|
|
31
|
+
*/
|
|
32
|
+
async onLeave() {
|
|
33
|
+
this.isActive = false;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Called when terminal is resized
|
|
37
|
+
*/
|
|
38
|
+
onResize(width, height) {
|
|
39
|
+
this.width = width;
|
|
40
|
+
this.height = height;
|
|
41
|
+
if (this.isActive) {
|
|
42
|
+
this.render();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Update screen dimensions
|
|
47
|
+
*/
|
|
48
|
+
updateDimensions() {
|
|
49
|
+
const size = this.screen.getSize();
|
|
50
|
+
this.width = size.width;
|
|
51
|
+
this.height = size.height;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=BaseScreen.js.map
|
|
55
|
+
//# debugId=d19872a7-979f-5db8-8cdf-e82e9658abd8
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseScreen.js","sources":["tui/screens/BaseScreen.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * BaseScreen - Base class for all screens in IdleRPG\r\n * Provides common functionality for screen lifecycle and rendering\r\n */\r\n\r\nimport { getScreen, type Screen } from '../Screen.js';\r\nimport type { KeyEvent } from '../Input.js';\r\n\r\n/**\r\n * Screen lifecycle interface\r\n */\r\nexport interface ScreenLifecycle {\r\n onEnter(params?: unknown): Promise<void>;\r\n onLeave(): Promise<void>;\r\n onResize(width: number, height: number): void;\r\n}\r\n\r\n/**\r\n * Base screen class\r\n */\r\nexport abstract class BaseScreen implements ScreenLifecycle {\r\n protected screen: Screen;\r\n protected width: number;\r\n protected height: number;\r\n protected isActive: boolean = false;\r\n\r\n constructor() {\r\n this.screen = getScreen();\r\n const size = this.screen.getSize();\r\n this.width = size.width;\r\n this.height = size.height;\r\n }\r\n\r\n /**\r\n * Called when screen becomes active\r\n */\r\n async onEnter(params?: unknown): Promise<void> {\r\n this.isActive = true;\r\n this.updateDimensions();\r\n }\r\n\r\n /**\r\n * Called when screen becomes inactive\r\n */\r\n async onLeave(): Promise<void> {\r\n this.isActive = false;\r\n }\r\n\r\n /**\r\n * Called when terminal is resized\r\n */\r\n onResize(width: number, height: number): void {\r\n this.width = width;\r\n this.height = height;\r\n if (this.isActive) {\r\n this.render();\r\n }\r\n }\r\n\r\n /**\r\n * Update screen dimensions\r\n */\r\n protected updateDimensions(): void {\r\n const size = this.screen.getSize();\r\n this.width = size.width;\r\n this.height = size.height;\r\n }\r\n\r\n /**\r\n * Handle key input\r\n * @returns true if the key was handled\r\n */\r\n abstract handleKey(key: KeyEvent): Promise<boolean>;\r\n\r\n /**\r\n * Render the screen\r\n */\r\n abstract render(): void;\r\n\r\n /**\r\n * Helper: Add an event to the screen's event list (if supported)\r\n */\r\n addEvent?(message: string): void;\r\n\r\n /**\r\n * Helper: Update state from game (if supported)\r\n */\r\n updateState?(...args: unknown[]): void;\r\n\r\n /**\r\n * Helper: Wait for user input (if supported)\r\n */\r\n waitForName?(): Promise<string>;\r\n}\r\n"],"names":[],"mappings":"AAAA;;;GAGG;;;AAEH,OAAO,EAAE,SAAS,EAAe,MAAM,cAAc,CAAC;AAYtD;;GAEG;AACH,MAAM,OAAgB,UAAU;IACpB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,MAAM,CAAS;IACf,QAAQ,GAAY,KAAK,CAAC;IAEpC;QACE,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAgB;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa,EAAE,MAAc;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,gBAAgB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CA2BF","debug_id":"d19872a7-979f-5db8-8cdf-e82e9658abd8"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combat Screen - Displays combat state and allows strategy selection
|
|
3
|
+
*/
|
|
4
|
+
import { BaseScreen } from '../../app/screens/BaseScreen.js';
|
|
5
|
+
import type { KeyEvent } from '../Input.js';
|
|
6
|
+
import type { CombatState, Player } from '../../core/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Combat Screen Data
|
|
9
|
+
*/
|
|
10
|
+
export interface CombatScreenData {
|
|
11
|
+
combat: CombatState;
|
|
12
|
+
player: Player;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Combat Screen - Combat interface with strategy selection
|
|
16
|
+
*/
|
|
17
|
+
export declare class CombatScreen extends BaseScreen {
|
|
18
|
+
private data;
|
|
19
|
+
private padding;
|
|
20
|
+
private onStrategyChange?;
|
|
21
|
+
private onAddLog?;
|
|
22
|
+
/**
|
|
23
|
+
* Set strategy change handler
|
|
24
|
+
*/
|
|
25
|
+
setOnStrategyChange(handler: (strategy: string) => void): void;
|
|
26
|
+
/**
|
|
27
|
+
* Set log handler
|
|
28
|
+
*/
|
|
29
|
+
setOnAddLog(handler: (message: string) => void): void;
|
|
30
|
+
/**
|
|
31
|
+
* Update combat data
|
|
32
|
+
*/
|
|
33
|
+
updateData(data: CombatScreenData): void;
|
|
34
|
+
/**
|
|
35
|
+
* Handle key input
|
|
36
|
+
*/
|
|
37
|
+
handleKey(key: KeyEvent): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Render the combat screen
|
|
40
|
+
*/
|
|
41
|
+
render(): void;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=CombatScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CombatScreen.d.ts","sourceRoot":"/","sources":["tui/screens/CombatScreen.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,gBAAgB,CAAC,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAE7C;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIrD;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAIxC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBhD;;OAEG;IACH,MAAM,IAAI,IAAI;CAsEf"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combat Screen - Displays combat state and allows strategy selection
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7e15d78e-e7bd-5f84-bd53-0495ff4963f1")}catch(e){}}();
|
|
6
|
+
import { BaseScreen } from '../../app/screens/BaseScreen.js';
|
|
7
|
+
import { ANSI } from '../Screen.js';
|
|
8
|
+
/**
|
|
9
|
+
* Combat Screen - Combat interface with strategy selection
|
|
10
|
+
*/
|
|
11
|
+
export class CombatScreen extends BaseScreen {
|
|
12
|
+
data = null;
|
|
13
|
+
padding = 2;
|
|
14
|
+
onStrategyChange;
|
|
15
|
+
onAddLog;
|
|
16
|
+
/**
|
|
17
|
+
* Set strategy change handler
|
|
18
|
+
*/
|
|
19
|
+
setOnStrategyChange(handler) {
|
|
20
|
+
this.onStrategyChange = handler;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Set log handler
|
|
24
|
+
*/
|
|
25
|
+
setOnAddLog(handler) {
|
|
26
|
+
this.onAddLog = handler;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Update combat data
|
|
30
|
+
*/
|
|
31
|
+
updateData(data) {
|
|
32
|
+
this.data = data;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Handle key input
|
|
36
|
+
*/
|
|
37
|
+
async handleKey(key) {
|
|
38
|
+
switch (key.name) {
|
|
39
|
+
case '1':
|
|
40
|
+
this.onAddLog?.('Strategy: Aggressive');
|
|
41
|
+
this.onStrategyChange?.('aggressive');
|
|
42
|
+
return true;
|
|
43
|
+
case '2':
|
|
44
|
+
this.onAddLog?.('Strategy: Defensive');
|
|
45
|
+
this.onStrategyChange?.('defensive');
|
|
46
|
+
return true;
|
|
47
|
+
case '3':
|
|
48
|
+
this.onAddLog?.('Strategy: Balanced');
|
|
49
|
+
this.onStrategyChange?.('balanced');
|
|
50
|
+
return true;
|
|
51
|
+
case '4':
|
|
52
|
+
this.onAddLog?.('Strategy: Skill Focus');
|
|
53
|
+
this.onStrategyChange?.('skill');
|
|
54
|
+
return true;
|
|
55
|
+
case 'escape':
|
|
56
|
+
this.onAddLog?.('Cannot flee from combat!');
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Render the combat screen
|
|
63
|
+
*/
|
|
64
|
+
render() {
|
|
65
|
+
if (!this.data)
|
|
66
|
+
return;
|
|
67
|
+
const { combat, player } = this.data;
|
|
68
|
+
const px = this.padding;
|
|
69
|
+
const py = this.padding;
|
|
70
|
+
const width = this.width - this.padding * 2;
|
|
71
|
+
const height = this.height - this.padding * 2;
|
|
72
|
+
this.screen.clear();
|
|
73
|
+
// Combat box (centered)
|
|
74
|
+
const boxWidth = Math.min(70, width - 4);
|
|
75
|
+
const boxHeight = Math.min(25, height - 4);
|
|
76
|
+
const boxX = px + Math.floor((width - boxWidth) / 2);
|
|
77
|
+
const boxY = py + Math.floor((height - boxHeight) / 2);
|
|
78
|
+
this.screen.drawBox(boxX, boxY, boxWidth, boxHeight, '== COMBAT ==', true);
|
|
79
|
+
let lineY = boxY + 2;
|
|
80
|
+
// Player HP
|
|
81
|
+
this.screen.write(boxX + 3, lineY, `[${player.name}]`, ANSI.fg.brightGreen);
|
|
82
|
+
lineY++;
|
|
83
|
+
this.screen.write(boxX + 3, lineY, 'HP: ', ANSI.fg.white);
|
|
84
|
+
this.screen.drawProgressBar(boxX + 7, lineY, 20, combat.playerHp, player.stats.maxHp, ANSI.fg.red);
|
|
85
|
+
this.screen.write(boxX + 28, lineY, `${combat.playerHp}/${player.stats.maxHp}`, ANSI.fg.white);
|
|
86
|
+
lineY += 2;
|
|
87
|
+
// Enemies section
|
|
88
|
+
this.screen.write(boxX + 3, lineY, '--- Enemies ---', ANSI.fg.cyan);
|
|
89
|
+
lineY++;
|
|
90
|
+
for (const enemy of combat.enemies) {
|
|
91
|
+
const isAlive = enemy.hp > 0;
|
|
92
|
+
const color = isAlive ? ANSI.fg.red : ANSI.fg.gray;
|
|
93
|
+
const status = isAlive ? '' : ' [DEFEATED]';
|
|
94
|
+
this.screen.write(boxX + 3, lineY, `${enemy.name}${status}`, color);
|
|
95
|
+
lineY++;
|
|
96
|
+
if (isAlive) {
|
|
97
|
+
this.screen.write(boxX + 5, lineY, 'HP: ', ANSI.fg.white);
|
|
98
|
+
this.screen.drawProgressBar(boxX + 9, lineY, 15, enemy.hp, enemy.maxHp, ANSI.fg.red);
|
|
99
|
+
this.screen.write(boxX + 25, lineY, `${enemy.hp}/${enemy.maxHp}`, ANSI.fg.gray);
|
|
100
|
+
}
|
|
101
|
+
lineY++;
|
|
102
|
+
}
|
|
103
|
+
lineY++;
|
|
104
|
+
// Combat log
|
|
105
|
+
this.screen.write(boxX + 3, lineY, '--- Battle Log ---', ANSI.fg.cyan);
|
|
106
|
+
lineY++;
|
|
107
|
+
const logStart = Math.max(0, combat.log.length - 5);
|
|
108
|
+
for (let i = logStart; i < combat.log.length; i++) {
|
|
109
|
+
const entry = combat.log[i];
|
|
110
|
+
this.screen.write(boxX + 3, lineY, `> ${entry.message}`.slice(0, boxWidth - 6), ANSI.fg.gray);
|
|
111
|
+
lineY++;
|
|
112
|
+
}
|
|
113
|
+
// Strategy options
|
|
114
|
+
lineY = boxY + boxHeight - 4;
|
|
115
|
+
this.screen.write(boxX + 3, lineY, 'Strategy: [1]Aggressive [2]Defensive [3]Balanced [4]Skills', ANSI.fg.yellow);
|
|
116
|
+
lineY++;
|
|
117
|
+
this.screen.write(boxX + 3, lineY, `Current: ${combat.strategy}`, ANSI.fg.white);
|
|
118
|
+
// Real time clock
|
|
119
|
+
const time = new Date().toLocaleTimeString('en-US', { hour12: false });
|
|
120
|
+
this.screen.write(boxX + boxWidth - 10, boxY + 1, time, ANSI.fg.gray);
|
|
121
|
+
this.screen.render();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=CombatScreen.js.map
|
|
125
|
+
//# debugId=7e15d78e-e7bd-5f84-bd53-0495ff4963f1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CombatScreen.js","sources":["tui/screens/CombatScreen.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Combat Screen - Displays combat state and allows strategy selection\r\n */\r\n\r\nimport { BaseScreen } from '../../app/screens/BaseScreen.js';\r\nimport type { KeyEvent } from '../Input.js';\r\nimport { ANSI } from '../Screen.js';\r\nimport type { CombatState, Player } from '../../core/types.js';\r\n\r\n/**\r\n * Combat Screen Data\r\n */\r\nexport interface CombatScreenData {\r\n combat: CombatState;\r\n player: Player;\r\n}\r\n\r\n/**\r\n * Combat Screen - Combat interface with strategy selection\r\n */\r\nexport class CombatScreen extends BaseScreen {\r\n private data: CombatScreenData | null = null;\r\n private padding: number = 2;\r\n private onStrategyChange?: (strategy: string) => void;\r\n private onAddLog?: (message: string) => void;\r\n\r\n /**\r\n * Set strategy change handler\r\n */\r\n setOnStrategyChange(handler: (strategy: string) => void): void {\r\n this.onStrategyChange = handler;\r\n }\r\n\r\n /**\r\n * Set log handler\r\n */\r\n setOnAddLog(handler: (message: string) => void): void {\r\n this.onAddLog = handler;\r\n }\r\n\r\n /**\r\n * Update combat data\r\n */\r\n updateData(data: CombatScreenData): void {\r\n this.data = data;\r\n }\r\n\r\n /**\r\n * Handle key input\r\n */\r\n async handleKey(key: KeyEvent): Promise<boolean> {\r\n switch (key.name) {\r\n case '1':\r\n this.onAddLog?.('Strategy: Aggressive');\r\n this.onStrategyChange?.('aggressive');\r\n return true;\r\n case '2':\r\n this.onAddLog?.('Strategy: Defensive');\r\n this.onStrategyChange?.('defensive');\r\n return true;\r\n case '3':\r\n this.onAddLog?.('Strategy: Balanced');\r\n this.onStrategyChange?.('balanced');\r\n return true;\r\n case '4':\r\n this.onAddLog?.('Strategy: Skill Focus');\r\n this.onStrategyChange?.('skill');\r\n return true;\r\n case 'escape':\r\n this.onAddLog?.('Cannot flee from combat!');\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Render the combat screen\r\n */\r\n render(): void {\r\n if (!this.data) return;\r\n\r\n const { combat, player } = this.data;\r\n const px = this.padding;\r\n const py = this.padding;\r\n const width = this.width - this.padding * 2;\r\n const height = this.height - this.padding * 2;\r\n\r\n this.screen.clear();\r\n\r\n // Combat box (centered)\r\n const boxWidth = Math.min(70, width - 4);\r\n const boxHeight = Math.min(25, height - 4);\r\n const boxX = px + Math.floor((width - boxWidth) / 2);\r\n const boxY = py + Math.floor((height - boxHeight) / 2);\r\n\r\n this.screen.drawBox(boxX, boxY, boxWidth, boxHeight, '== COMBAT ==', true);\r\n\r\n let lineY = boxY + 2;\r\n\r\n // Player HP\r\n this.screen.write(boxX + 3, lineY, `[${player.name}]`, ANSI.fg.brightGreen);\r\n lineY++;\r\n this.screen.write(boxX + 3, lineY, 'HP: ', ANSI.fg.white);\r\n this.screen.drawProgressBar(boxX + 7, lineY, 20, combat.playerHp, player.stats.maxHp, ANSI.fg.red);\r\n this.screen.write(boxX + 28, lineY, `${combat.playerHp}/${player.stats.maxHp}`, ANSI.fg.white);\r\n lineY += 2;\r\n\r\n // Enemies section\r\n this.screen.write(boxX + 3, lineY, '--- Enemies ---', ANSI.fg.cyan);\r\n lineY++;\r\n for (const enemy of combat.enemies) {\r\n const isAlive = enemy.hp > 0;\r\n const color = isAlive ? ANSI.fg.red : ANSI.fg.gray;\r\n const status = isAlive ? '' : ' [DEFEATED]';\r\n\r\n this.screen.write(boxX + 3, lineY, `${enemy.name}${status}`, color);\r\n lineY++;\r\n if (isAlive) {\r\n this.screen.write(boxX + 5, lineY, 'HP: ', ANSI.fg.white);\r\n this.screen.drawProgressBar(boxX + 9, lineY, 15, enemy.hp, enemy.maxHp, ANSI.fg.red);\r\n this.screen.write(boxX + 25, lineY, `${enemy.hp}/${enemy.maxHp}`, ANSI.fg.gray);\r\n }\r\n lineY++;\r\n }\r\n lineY++;\r\n\r\n // Combat log\r\n this.screen.write(boxX + 3, lineY, '--- Battle Log ---', ANSI.fg.cyan);\r\n lineY++;\r\n const logStart = Math.max(0, combat.log.length - 5);\r\n for (let i = logStart; i < combat.log.length; i++) {\r\n const entry = combat.log[i];\r\n this.screen.write(boxX + 3, lineY, `> ${entry.message}`.slice(0, boxWidth - 6), ANSI.fg.gray);\r\n lineY++;\r\n }\r\n\r\n // Strategy options\r\n lineY = boxY + boxHeight - 4;\r\n this.screen.write(boxX + 3, lineY, 'Strategy: [1]Aggressive [2]Defensive [3]Balanced [4]Skills', ANSI.fg.yellow);\r\n lineY++;\r\n this.screen.write(boxX + 3, lineY, `Current: ${combat.strategy}`, ANSI.fg.white);\r\n\r\n // Real time clock\r\n const time = new Date().toLocaleTimeString('en-US', { hour12: false });\r\n this.screen.write(boxX + boxWidth - 10, boxY + 1, time, ANSI.fg.gray);\r\n\r\n this.screen.render();\r\n }\r\n}\r\n"],"names":[],"mappings":"AAAA;;GAEG;;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAWpC;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,UAAU;IAClC,IAAI,GAA4B,IAAI,CAAC;IACrC,OAAO,GAAW,CAAC,CAAC;IACpB,gBAAgB,CAA8B;IAC9C,QAAQ,CAA6B;IAE7C;;OAEG;IACH,mBAAmB,CAAC,OAAmC;QACrD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAkC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAsB;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAa;QAC3B,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,EAAE,CAAC,sBAAsB,CAAC,CAAC;gBACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,EAAE,CAAC,qBAAqB,CAAC,CAAC;gBACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC;gBACrC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,CAAC;gBACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,EAAE,CAAC,uBAAuB,CAAC,CAAC;gBACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,EAAE,CAAC,0BAA0B,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEpB,wBAAwB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;QAErB,YAAY;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC5E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC/F,KAAK,IAAI,CAAC,CAAC;QAEX,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACpE,KAAK,EAAE,CAAC;QACR,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;YACnD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YACpE,KAAK,EAAE,CAAC;YACR,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC1D,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACrF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAClF,CAAC;YACD,KAAK,EAAE,CAAC;QACV,CAAC;QACD,KAAK,EAAE,CAAC;QAER,aAAa;QACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACvE,KAAK,EAAE,CAAC;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC9F,KAAK,EAAE,CAAC;QACV,CAAC;QAED,mBAAmB;QACnB,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,4DAA4D,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACjH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEjF,kBAAkB;QAClB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF","debug_id":"7e15d78e-e7bd-5f84-bd53-0495ff4963f1"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dialog Screen - NPC conversation interface
|
|
3
|
+
*/
|
|
4
|
+
import { BaseScreen } from '../../app/screens/BaseScreen.js';
|
|
5
|
+
import type { KeyEvent } from '../Input.js';
|
|
6
|
+
import type { ExtendedNPC } from '../../npc/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Dialog option
|
|
9
|
+
*/
|
|
10
|
+
export interface DialogOption {
|
|
11
|
+
key: string;
|
|
12
|
+
text: string;
|
|
13
|
+
action: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Dialog history entry
|
|
17
|
+
*/
|
|
18
|
+
export interface DialogHistoryEntry {
|
|
19
|
+
role: string;
|
|
20
|
+
text: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Dialog Screen Data
|
|
24
|
+
*/
|
|
25
|
+
export interface DialogScreenData {
|
|
26
|
+
npc: ExtendedNPC;
|
|
27
|
+
history: DialogHistoryEntry[];
|
|
28
|
+
options: DialogOption[];
|
|
29
|
+
isWaiting: boolean;
|
|
30
|
+
inputBuffer: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Dialog Screen - NPC conversation interface
|
|
34
|
+
*/
|
|
35
|
+
export declare class DialogScreen extends BaseScreen {
|
|
36
|
+
private data;
|
|
37
|
+
private padding;
|
|
38
|
+
/**
|
|
39
|
+
* Update dialog data
|
|
40
|
+
*/
|
|
41
|
+
updateData(data: DialogScreenData): void;
|
|
42
|
+
/**
|
|
43
|
+
* Handle key input
|
|
44
|
+
* Note: Dialog mode typically uses line input, so key handling
|
|
45
|
+
* is minimal here. Input is handled by the input manager.
|
|
46
|
+
*/
|
|
47
|
+
handleKey(key: KeyEvent): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Render the dialog screen
|
|
50
|
+
*/
|
|
51
|
+
render(): void;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=DialogScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DialogScreen.d.ts","sourceRoot":"/","sources":["tui/screens/DialogScreen.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,OAAO,CAAa;IAE5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAIxC;;;;OAIG;IACG,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD;;OAEG;IACH,MAAM,IAAI,IAAI;CAuEf"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dialog Screen - NPC conversation interface
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="db88f12f-5bab-5409-a288-ef6a064bdf78")}catch(e){}}();
|
|
6
|
+
import { BaseScreen } from '../../app/screens/BaseScreen.js';
|
|
7
|
+
import { ANSI } from '../Screen.js';
|
|
8
|
+
/**
|
|
9
|
+
* Dialog Screen - NPC conversation interface
|
|
10
|
+
*/
|
|
11
|
+
export class DialogScreen extends BaseScreen {
|
|
12
|
+
data = null;
|
|
13
|
+
padding = 2;
|
|
14
|
+
/**
|
|
15
|
+
* Update dialog data
|
|
16
|
+
*/
|
|
17
|
+
updateData(data) {
|
|
18
|
+
this.data = data;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Handle key input
|
|
22
|
+
* Note: Dialog mode typically uses line input, so key handling
|
|
23
|
+
* is minimal here. Input is handled by the input manager.
|
|
24
|
+
*/
|
|
25
|
+
async handleKey(key) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Render the dialog screen
|
|
30
|
+
*/
|
|
31
|
+
render() {
|
|
32
|
+
if (!this.data)
|
|
33
|
+
return;
|
|
34
|
+
const { npc, history, options, isWaiting, inputBuffer } = this.data;
|
|
35
|
+
const px = this.padding;
|
|
36
|
+
const py = this.padding;
|
|
37
|
+
const width = this.width - this.padding * 2;
|
|
38
|
+
const height = this.height - this.padding * 2;
|
|
39
|
+
this.screen.clear();
|
|
40
|
+
// Dialog box (centered)
|
|
41
|
+
const boxWidth = Math.min(70, width - 4);
|
|
42
|
+
const boxHeight = Math.min(25, height - 4);
|
|
43
|
+
const boxX = px + Math.floor((width - boxWidth) / 2);
|
|
44
|
+
const boxY = py + Math.floor((height - boxHeight) / 2);
|
|
45
|
+
this.screen.drawBox(boxX, boxY, boxWidth, boxHeight, `${npc.name} (${npc.role})`, true);
|
|
46
|
+
let lineY = boxY + 2;
|
|
47
|
+
// NPC appearance
|
|
48
|
+
this.screen.write(boxX + 3, lineY, npc.appearance.slice(0, boxWidth - 6), ANSI.fg.gray);
|
|
49
|
+
lineY += 2;
|
|
50
|
+
// Dialog history
|
|
51
|
+
const maxHistory = boxHeight - 12;
|
|
52
|
+
const historyStart = Math.max(0, history.length - maxHistory);
|
|
53
|
+
for (let i = historyStart; i < history.length; i++) {
|
|
54
|
+
const entry = history[i];
|
|
55
|
+
const prefix = entry.role === 'player' ? '[You] ' : `[${npc.name}] `;
|
|
56
|
+
const color = entry.role === 'player' ? ANSI.fg.cyan : ANSI.fg.yellow;
|
|
57
|
+
this.screen.write(boxX + 3, lineY, prefix, color);
|
|
58
|
+
// Word wrap text
|
|
59
|
+
const textWidth = boxWidth - 8;
|
|
60
|
+
const text = entry.text;
|
|
61
|
+
for (let j = 0; j < text.length && lineY < boxY + boxHeight - 6; j += textWidth) {
|
|
62
|
+
const line = j === 0 ? text.slice(j, j + textWidth - prefix.length) : text.slice(j, j + textWidth);
|
|
63
|
+
this.screen.write(j === 0 ? boxX + 3 + prefix.length : boxX + 3, lineY, line, ANSI.fg.white);
|
|
64
|
+
lineY++;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Waiting indicator
|
|
68
|
+
if (isWaiting) {
|
|
69
|
+
this.screen.write(boxX + 3, lineY, '| Thinking...', ANSI.fg.gray);
|
|
70
|
+
lineY++;
|
|
71
|
+
}
|
|
72
|
+
// Quick options
|
|
73
|
+
lineY = boxY + boxHeight - 6;
|
|
74
|
+
this.screen.write(boxX + 3, lineY, '--- Quick Options ---', ANSI.fg.cyan);
|
|
75
|
+
lineY++;
|
|
76
|
+
for (const option of options.slice(0, 3)) {
|
|
77
|
+
this.screen.write(boxX + 3, lineY, `[${option.key}] ${option.text}`, ANSI.fg.gray);
|
|
78
|
+
lineY++;
|
|
79
|
+
}
|
|
80
|
+
// Input area
|
|
81
|
+
lineY = boxY + boxHeight - 2;
|
|
82
|
+
this.screen.write(boxX + 3, lineY, 'Say: ' + inputBuffer + '|', ANSI.fg.white);
|
|
83
|
+
// Real time clock
|
|
84
|
+
const time = new Date().toLocaleTimeString('en-US', { hour12: false });
|
|
85
|
+
this.screen.write(boxX + boxWidth - 10, boxY + 1, time, ANSI.fg.gray);
|
|
86
|
+
this.screen.render();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=DialogScreen.js.map
|
|
90
|
+
//# debugId=db88f12f-5bab-5409-a288-ef6a064bdf78
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DialogScreen.js","sources":["tui/screens/DialogScreen.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Dialog Screen - NPC conversation interface\r\n */\r\n\r\nimport { BaseScreen } from '../../app/screens/BaseScreen.js';\r\nimport type { KeyEvent } from '../Input.js';\r\nimport { ANSI } from '../Screen.js';\r\nimport type { ExtendedNPC } from '../../npc/types.js';\r\n\r\n/**\r\n * Dialog option\r\n */\r\nexport interface DialogOption {\r\n key: string;\r\n text: string;\r\n action: string;\r\n}\r\n\r\n/**\r\n * Dialog history entry\r\n */\r\nexport interface DialogHistoryEntry {\r\n role: string;\r\n text: string;\r\n}\r\n\r\n/**\r\n * Dialog Screen Data\r\n */\r\nexport interface DialogScreenData {\r\n npc: ExtendedNPC;\r\n history: DialogHistoryEntry[];\r\n options: DialogOption[];\r\n isWaiting: boolean;\r\n inputBuffer: string;\r\n}\r\n\r\n/**\r\n * Dialog Screen - NPC conversation interface\r\n */\r\nexport class DialogScreen extends BaseScreen {\r\n private data: DialogScreenData | null = null;\r\n private padding: number = 2;\r\n\r\n /**\r\n * Update dialog data\r\n */\r\n updateData(data: DialogScreenData): void {\r\n this.data = data;\r\n }\r\n\r\n /**\r\n * Handle key input\r\n * Note: Dialog mode typically uses line input, so key handling\r\n * is minimal here. Input is handled by the input manager.\r\n */\r\n async handleKey(key: KeyEvent): Promise<boolean> {\r\n return false;\r\n }\r\n\r\n /**\r\n * Render the dialog screen\r\n */\r\n render(): void {\r\n if (!this.data) return;\r\n\r\n const { npc, history, options, isWaiting, inputBuffer } = this.data;\r\n const px = this.padding;\r\n const py = this.padding;\r\n const width = this.width - this.padding * 2;\r\n const height = this.height - this.padding * 2;\r\n\r\n this.screen.clear();\r\n\r\n // Dialog box (centered)\r\n const boxWidth = Math.min(70, width - 4);\r\n const boxHeight = Math.min(25, height - 4);\r\n const boxX = px + Math.floor((width - boxWidth) / 2);\r\n const boxY = py + Math.floor((height - boxHeight) / 2);\r\n\r\n this.screen.drawBox(boxX, boxY, boxWidth, boxHeight, `${npc.name} (${npc.role})`, true);\r\n\r\n let lineY = boxY + 2;\r\n\r\n // NPC appearance\r\n this.screen.write(boxX + 3, lineY, npc.appearance.slice(0, boxWidth - 6), ANSI.fg.gray);\r\n lineY += 2;\r\n\r\n // Dialog history\r\n const maxHistory = boxHeight - 12;\r\n const historyStart = Math.max(0, history.length - maxHistory);\r\n\r\n for (let i = historyStart; i < history.length; i++) {\r\n const entry = history[i];\r\n const prefix = entry.role === 'player' ? '[You] ' : `[${npc.name}] `;\r\n const color = entry.role === 'player' ? ANSI.fg.cyan : ANSI.fg.yellow;\r\n\r\n this.screen.write(boxX + 3, lineY, prefix, color);\r\n\r\n // Word wrap text\r\n const textWidth = boxWidth - 8;\r\n const text = entry.text;\r\n for (let j = 0; j < text.length && lineY < boxY + boxHeight - 6; j += textWidth) {\r\n const line = j === 0 ? text.slice(j, j + textWidth - prefix.length) : text.slice(j, j + textWidth);\r\n this.screen.write(j === 0 ? boxX + 3 + prefix.length : boxX + 3, lineY, line, ANSI.fg.white);\r\n lineY++;\r\n }\r\n }\r\n\r\n // Waiting indicator\r\n if (isWaiting) {\r\n this.screen.write(boxX + 3, lineY, '| Thinking...', ANSI.fg.gray);\r\n lineY++;\r\n }\r\n\r\n // Quick options\r\n lineY = boxY + boxHeight - 6;\r\n this.screen.write(boxX + 3, lineY, '--- Quick Options ---', ANSI.fg.cyan);\r\n lineY++;\r\n for (const option of options.slice(0, 3)) {\r\n this.screen.write(boxX + 3, lineY, `[${option.key}] ${option.text}`, ANSI.fg.gray);\r\n lineY++;\r\n }\r\n\r\n // Input area\r\n lineY = boxY + boxHeight - 2;\r\n this.screen.write(boxX + 3, lineY, 'Say: ' + inputBuffer + '|', ANSI.fg.white);\r\n\r\n // Real time clock\r\n const time = new Date().toLocaleTimeString('en-US', { hour12: false });\r\n this.screen.write(boxX + boxWidth - 10, boxY + 1, time, ANSI.fg.gray);\r\n\r\n this.screen.render();\r\n }\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"db88f12f-5bab-5409-a288-ef6a064bdf78"}
|