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.
Files changed (478) hide show
  1. package/README.md +171 -0
  2. package/dist/affix/AffixRegistry.d.ts +68 -0
  3. package/dist/affix/AffixRegistry.d.ts.map +1 -0
  4. package/dist/affix/AffixRegistry.js +245 -0
  5. package/dist/affix/AffixRegistry.js.map +1 -0
  6. package/dist/affix/PluginLoader.d.ts +66 -0
  7. package/dist/affix/PluginLoader.d.ts.map +1 -0
  8. package/dist/affix/PluginLoader.js +321 -0
  9. package/dist/affix/PluginLoader.js.map +1 -0
  10. package/dist/affix/builtin.d.ts +6 -0
  11. package/dist/affix/builtin.d.ts.map +1 -0
  12. package/dist/affix/builtin.js +311 -0
  13. package/dist/affix/builtin.js.map +1 -0
  14. package/dist/affix/index.d.ts +8 -0
  15. package/dist/affix/index.d.ts.map +1 -0
  16. package/dist/affix/index.js +11 -0
  17. package/dist/affix/index.js.map +1 -0
  18. package/dist/affix/types.d.ts +152 -0
  19. package/dist/affix/types.d.ts.map +1 -0
  20. package/dist/affix/types.js +8 -0
  21. package/dist/affix/types.js.map +1 -0
  22. package/dist/ai/PlayKitClient.d.ts +208 -0
  23. package/dist/ai/PlayKitClient.d.ts.map +1 -0
  24. package/dist/ai/PlayKitClient.js +721 -0
  25. package/dist/ai/PlayKitClient.js.map +1 -0
  26. package/dist/ai/index.d.ts +5 -0
  27. package/dist/ai/index.d.ts.map +1 -0
  28. package/dist/ai/index.js +8 -0
  29. package/dist/ai/index.js.map +1 -0
  30. package/dist/app/App.d.ts +85 -0
  31. package/dist/app/App.d.ts.map +1 -0
  32. package/dist/app/App.js +296 -0
  33. package/dist/app/App.js.map +1 -0
  34. package/dist/app/EventBus.d.ts +222 -0
  35. package/dist/app/EventBus.d.ts.map +1 -0
  36. package/dist/app/EventBus.js +88 -0
  37. package/dist/app/EventBus.js.map +1 -0
  38. package/dist/app/Keybind.d.ts +83 -0
  39. package/dist/app/Keybind.d.ts.map +1 -0
  40. package/dist/app/Keybind.js +184 -0
  41. package/dist/app/Keybind.js.map +1 -0
  42. package/dist/app/Router.d.ts +123 -0
  43. package/dist/app/Router.d.ts.map +1 -0
  44. package/dist/app/Router.js +142 -0
  45. package/dist/app/Router.js.map +1 -0
  46. package/dist/app/ScreenManager.d.ts +97 -0
  47. package/dist/app/ScreenManager.d.ts.map +1 -0
  48. package/dist/app/ScreenManager.js +216 -0
  49. package/dist/app/ScreenManager.js.map +1 -0
  50. package/dist/app/index.d.ts +14 -0
  51. package/dist/app/index.d.ts.map +1 -0
  52. package/dist/app/index.js +19 -0
  53. package/dist/app/index.js.map +1 -0
  54. package/dist/app/screens/BaseScreen.d.ts +101 -0
  55. package/dist/app/screens/BaseScreen.d.ts.map +1 -0
  56. package/dist/app/screens/BaseScreen.js +132 -0
  57. package/dist/app/screens/BaseScreen.js.map +1 -0
  58. package/dist/app/screens/CharacterCreationScreen.d.ts +42 -0
  59. package/dist/app/screens/CharacterCreationScreen.d.ts.map +1 -0
  60. package/dist/app/screens/CharacterCreationScreen.js +467 -0
  61. package/dist/app/screens/CharacterCreationScreen.js.map +1 -0
  62. package/dist/app/screens/CombatScreen.d.ts +30 -0
  63. package/dist/app/screens/CombatScreen.d.ts.map +1 -0
  64. package/dist/app/screens/CombatScreen.js +309 -0
  65. package/dist/app/screens/CombatScreen.js.map +1 -0
  66. package/dist/app/screens/DialogScreen.d.ts +29 -0
  67. package/dist/app/screens/DialogScreen.d.ts.map +1 -0
  68. package/dist/app/screens/DialogScreen.js +295 -0
  69. package/dist/app/screens/DialogScreen.js.map +1 -0
  70. package/dist/app/screens/ExploreScreen.d.ts +50 -0
  71. package/dist/app/screens/ExploreScreen.d.ts.map +1 -0
  72. package/dist/app/screens/ExploreScreen.js +308 -0
  73. package/dist/app/screens/ExploreScreen.js.map +1 -0
  74. package/dist/app/screens/HelpScreen.d.ts +12 -0
  75. package/dist/app/screens/HelpScreen.d.ts.map +1 -0
  76. package/dist/app/screens/HelpScreen.js +155 -0
  77. package/dist/app/screens/HelpScreen.js.map +1 -0
  78. package/dist/app/screens/InventoryScreen.d.ts +27 -0
  79. package/dist/app/screens/InventoryScreen.d.ts.map +1 -0
  80. package/dist/app/screens/InventoryScreen.js +326 -0
  81. package/dist/app/screens/InventoryScreen.js.map +1 -0
  82. package/dist/app/screens/PrologueScreen.d.ts +24 -0
  83. package/dist/app/screens/PrologueScreen.d.ts.map +1 -0
  84. package/dist/app/screens/PrologueScreen.js +176 -0
  85. package/dist/app/screens/PrologueScreen.js.map +1 -0
  86. package/dist/app/screens/TitleScreen.d.ts +42 -0
  87. package/dist/app/screens/TitleScreen.d.ts.map +1 -0
  88. package/dist/app/screens/TitleScreen.js +380 -0
  89. package/dist/app/screens/TitleScreen.js.map +1 -0
  90. package/dist/app/screens/TravelScreen.d.ts +22 -0
  91. package/dist/app/screens/TravelScreen.d.ts.map +1 -0
  92. package/dist/app/screens/TravelScreen.js +122 -0
  93. package/dist/app/screens/TravelScreen.js.map +1 -0
  94. package/dist/app/screens/index.d.ts +14 -0
  95. package/dist/app/screens/index.d.ts.map +1 -0
  96. package/dist/app/screens/index.js +17 -0
  97. package/dist/app/screens/index.js.map +1 -0
  98. package/dist/commands/CommandRegistry.d.ts +91 -0
  99. package/dist/commands/CommandRegistry.d.ts.map +1 -0
  100. package/dist/commands/CommandRegistry.js +159 -0
  101. package/dist/commands/CommandRegistry.js.map +1 -0
  102. package/dist/commands/index.d.ts +7 -0
  103. package/dist/commands/index.d.ts.map +1 -0
  104. package/dist/commands/index.js +10 -0
  105. package/dist/commands/index.js.map +1 -0
  106. package/dist/core/Actor.d.ts +103 -0
  107. package/dist/core/Actor.d.ts.map +1 -0
  108. package/dist/core/Actor.js +409 -0
  109. package/dist/core/Actor.js.map +1 -0
  110. package/dist/core/Combat.d.ts +37 -0
  111. package/dist/core/Combat.d.ts.map +1 -0
  112. package/dist/core/Combat.js +294 -0
  113. package/dist/core/Combat.js.map +1 -0
  114. package/dist/core/DungeonRunner.d.ts +169 -0
  115. package/dist/core/DungeonRunner.d.ts.map +1 -0
  116. package/dist/core/DungeonRunner.js +627 -0
  117. package/dist/core/DungeonRunner.js.map +1 -0
  118. package/dist/core/Game.d.ts +133 -0
  119. package/dist/core/Game.d.ts.map +1 -0
  120. package/dist/core/Game.js +644 -0
  121. package/dist/core/Game.js.map +1 -0
  122. package/dist/core/IdleCombat.d.ts +61 -0
  123. package/dist/core/IdleCombat.d.ts.map +1 -0
  124. package/dist/core/IdleCombat.js +461 -0
  125. package/dist/core/IdleCombat.js.map +1 -0
  126. package/dist/core/IdleGameManager.d.ts +198 -0
  127. package/dist/core/IdleGameManager.d.ts.map +1 -0
  128. package/dist/core/IdleGameManager.js +688 -0
  129. package/dist/core/IdleGameManager.js.map +1 -0
  130. package/dist/core/IdleSaveManager.d.ts +109 -0
  131. package/dist/core/IdleSaveManager.d.ts.map +1 -0
  132. package/dist/core/IdleSaveManager.js +296 -0
  133. package/dist/core/IdleSaveManager.js.map +1 -0
  134. package/dist/core/NewGameFlowManager.d.ts +64 -0
  135. package/dist/core/NewGameFlowManager.d.ts.map +1 -0
  136. package/dist/core/NewGameFlowManager.js +153 -0
  137. package/dist/core/NewGameFlowManager.js.map +1 -0
  138. package/dist/core/Player.d.ts +65 -0
  139. package/dist/core/Player.d.ts.map +1 -0
  140. package/dist/core/Player.js +261 -0
  141. package/dist/core/Player.js.map +1 -0
  142. package/dist/core/RoomHandlers.d.ts +75 -0
  143. package/dist/core/RoomHandlers.d.ts.map +1 -0
  144. package/dist/core/RoomHandlers.js +383 -0
  145. package/dist/core/RoomHandlers.js.map +1 -0
  146. package/dist/core/SaveManager.d.ts +84 -0
  147. package/dist/core/SaveManager.d.ts.map +1 -0
  148. package/dist/core/SaveManager.js +281 -0
  149. package/dist/core/SaveManager.js.map +1 -0
  150. package/dist/core/SaveMigration.d.ts +69 -0
  151. package/dist/core/SaveMigration.d.ts.map +1 -0
  152. package/dist/core/SaveMigration.js +408 -0
  153. package/dist/core/SaveMigration.js.map +1 -0
  154. package/dist/core/StateAdapter.d.ts +79 -0
  155. package/dist/core/StateAdapter.d.ts.map +1 -0
  156. package/dist/core/StateAdapter.js +397 -0
  157. package/dist/core/StateAdapter.js.map +1 -0
  158. package/dist/core/Team.d.ts +145 -0
  159. package/dist/core/Team.d.ts.map +1 -0
  160. package/dist/core/Team.js +371 -0
  161. package/dist/core/Team.js.map +1 -0
  162. package/dist/core/TeamCombat.d.ts +88 -0
  163. package/dist/core/TeamCombat.d.ts.map +1 -0
  164. package/dist/core/TeamCombat.js +405 -0
  165. package/dist/core/TeamCombat.js.map +1 -0
  166. package/dist/core/TeamDungeonRunner.d.ts +186 -0
  167. package/dist/core/TeamDungeonRunner.d.ts.map +1 -0
  168. package/dist/core/TeamDungeonRunner.js +758 -0
  169. package/dist/core/TeamDungeonRunner.js.map +1 -0
  170. package/dist/core/TimeManager.d.ts +114 -0
  171. package/dist/core/TimeManager.d.ts.map +1 -0
  172. package/dist/core/TimeManager.js +318 -0
  173. package/dist/core/TimeManager.js.map +1 -0
  174. package/dist/core/index.d.ts +9 -0
  175. package/dist/core/index.d.ts.map +1 -0
  176. package/dist/core/index.js +12 -0
  177. package/dist/core/index.js.map +1 -0
  178. package/dist/core/timeConstants.d.ts +135 -0
  179. package/dist/core/timeConstants.d.ts.map +1 -0
  180. package/dist/core/timeConstants.js +157 -0
  181. package/dist/core/timeConstants.js.map +1 -0
  182. package/dist/core/types.d.ts +780 -0
  183. package/dist/core/types.d.ts.map +1 -0
  184. package/dist/core/types.js +16 -0
  185. package/dist/core/types.js.map +1 -0
  186. package/dist/data/continents/index.d.ts +163 -0
  187. package/dist/data/continents/index.d.ts.map +1 -0
  188. package/dist/data/continents/index.js +31 -0
  189. package/dist/data/continents/index.js.map +1 -0
  190. package/dist/data/continents/verdantia.d.ts +294 -0
  191. package/dist/data/continents/verdantia.d.ts.map +1 -0
  192. package/dist/data/continents/verdantia.js +327 -0
  193. package/dist/data/continents/verdantia.js.map +1 -0
  194. package/dist/handlers/DialogHandler.d.ts +95 -0
  195. package/dist/handlers/DialogHandler.d.ts.map +1 -0
  196. package/dist/handlers/DialogHandler.js +450 -0
  197. package/dist/handlers/DialogHandler.js.map +1 -0
  198. package/dist/handlers/SaveLoadHandler.d.ts +60 -0
  199. package/dist/handlers/SaveLoadHandler.d.ts.map +1 -0
  200. package/dist/handlers/SaveLoadHandler.js +187 -0
  201. package/dist/handlers/SaveLoadHandler.js.map +1 -0
  202. package/dist/handlers/TitleScreenHandler.d.ts +43 -0
  203. package/dist/handlers/TitleScreenHandler.d.ts.map +1 -0
  204. package/dist/handlers/TitleScreenHandler.js +508 -0
  205. package/dist/handlers/TitleScreenHandler.js.map +1 -0
  206. package/dist/handlers/WorkshopHandler.d.ts +75 -0
  207. package/dist/handlers/WorkshopHandler.d.ts.map +1 -0
  208. package/dist/handlers/WorkshopHandler.js +401 -0
  209. package/dist/handlers/WorkshopHandler.js.map +1 -0
  210. package/dist/handlers/index.d.ts +12 -0
  211. package/dist/handlers/index.d.ts.map +1 -0
  212. package/dist/handlers/index.js +14 -0
  213. package/dist/handlers/index.js.map +1 -0
  214. package/dist/handlers/types.d.ts +34 -0
  215. package/dist/handlers/types.d.ts.map +1 -0
  216. package/dist/handlers/types.js +8 -0
  217. package/dist/handlers/types.js.map +1 -0
  218. package/dist/i18n/en.d.ts +3 -0
  219. package/dist/i18n/en.d.ts.map +1 -0
  220. package/dist/i18n/en.js +130 -0
  221. package/dist/i18n/en.js.map +1 -0
  222. package/dist/i18n/index.d.ts +40 -0
  223. package/dist/i18n/index.d.ts.map +1 -0
  224. package/dist/i18n/index.js +105 -0
  225. package/dist/i18n/index.js.map +1 -0
  226. package/dist/i18n/types.d.ts +133 -0
  227. package/dist/i18n/types.d.ts.map +1 -0
  228. package/dist/i18n/types.js +8 -0
  229. package/dist/i18n/types.js.map +1 -0
  230. package/dist/i18n/zh.d.ts +3 -0
  231. package/dist/i18n/zh.d.ts.map +1 -0
  232. package/dist/i18n/zh.js +130 -0
  233. package/dist/i18n/zh.js.map +1 -0
  234. package/dist/instrument.d.ts +8 -0
  235. package/dist/instrument.d.ts.map +1 -0
  236. package/dist/instrument.js +33 -0
  237. package/dist/instrument.js.map +1 -0
  238. package/dist/main-new.d.ts +12 -0
  239. package/dist/main-new.d.ts.map +1 -0
  240. package/dist/main-new.js +32 -0
  241. package/dist/main-new.js.map +1 -0
  242. package/dist/main.d.ts +7 -0
  243. package/dist/main.d.ts.map +1 -0
  244. package/dist/main.js +2816 -0
  245. package/dist/main.js.map +1 -0
  246. package/dist/map/ContinentManager.d.ts +88 -0
  247. package/dist/map/ContinentManager.d.ts.map +1 -0
  248. package/dist/map/ContinentManager.js +241 -0
  249. package/dist/map/ContinentManager.js.map +1 -0
  250. package/dist/map/DungeonGenerator.d.ts +32 -0
  251. package/dist/map/DungeonGenerator.d.ts.map +1 -0
  252. package/dist/map/DungeonGenerator.js +615 -0
  253. package/dist/map/DungeonGenerator.js.map +1 -0
  254. package/dist/map/MapGenerator.d.ts +27 -0
  255. package/dist/map/MapGenerator.d.ts.map +1 -0
  256. package/dist/map/MapGenerator.js +485 -0
  257. package/dist/map/MapGenerator.js.map +1 -0
  258. package/dist/map/index.d.ts +5 -0
  259. package/dist/map/index.d.ts.map +1 -0
  260. package/dist/map/index.js +8 -0
  261. package/dist/map/index.js.map +1 -0
  262. package/dist/npc/NPCGenerator.d.ts +68 -0
  263. package/dist/npc/NPCGenerator.d.ts.map +1 -0
  264. package/dist/npc/NPCGenerator.js +468 -0
  265. package/dist/npc/NPCGenerator.js.map +1 -0
  266. package/dist/npc/NPCManager.d.ts +86 -0
  267. package/dist/npc/NPCManager.d.ts.map +1 -0
  268. package/dist/npc/NPCManager.js +217 -0
  269. package/dist/npc/NPCManager.js.map +1 -0
  270. package/dist/npc/fixedNPCs.d.ts +7 -0
  271. package/dist/npc/fixedNPCs.d.ts.map +1 -0
  272. package/dist/npc/fixedNPCs.js +196 -0
  273. package/dist/npc/fixedNPCs.js.map +1 -0
  274. package/dist/npc/index.d.ts +9 -0
  275. package/dist/npc/index.d.ts.map +1 -0
  276. package/dist/npc/index.js +12 -0
  277. package/dist/npc/index.js.map +1 -0
  278. package/dist/npc/traits.d.ts +33 -0
  279. package/dist/npc/traits.d.ts.map +1 -0
  280. package/dist/npc/traits.js +795 -0
  281. package/dist/npc/traits.js.map +1 -0
  282. package/dist/npc/types.d.ts +193 -0
  283. package/dist/npc/types.d.ts.map +1 -0
  284. package/dist/npc/types.js +9 -0
  285. package/dist/npc/types.js.map +1 -0
  286. package/dist/quest/QuestManager.d.ts +79 -0
  287. package/dist/quest/QuestManager.d.ts.map +1 -0
  288. package/dist/quest/QuestManager.js +273 -0
  289. package/dist/quest/QuestManager.js.map +1 -0
  290. package/dist/quest/index.d.ts +6 -0
  291. package/dist/quest/index.d.ts.map +1 -0
  292. package/dist/quest/index.js +9 -0
  293. package/dist/quest/index.js.map +1 -0
  294. package/dist/quest/types.d.ts +81 -0
  295. package/dist/quest/types.d.ts.map +1 -0
  296. package/dist/quest/types.js +8 -0
  297. package/dist/quest/types.js.map +1 -0
  298. package/dist/strategy/StrategyExecutor.d.ts +159 -0
  299. package/dist/strategy/StrategyExecutor.d.ts.map +1 -0
  300. package/dist/strategy/StrategyExecutor.js +479 -0
  301. package/dist/strategy/StrategyExecutor.js.map +1 -0
  302. package/dist/strategy/StrategyParser.d.ts +48 -0
  303. package/dist/strategy/StrategyParser.d.ts.map +1 -0
  304. package/dist/strategy/StrategyParser.js +321 -0
  305. package/dist/strategy/StrategyParser.js.map +1 -0
  306. package/dist/strategy/defaultStrategy.d.ts +40 -0
  307. package/dist/strategy/defaultStrategy.d.ts.map +1 -0
  308. package/dist/strategy/defaultStrategy.js +254 -0
  309. package/dist/strategy/defaultStrategy.js.map +1 -0
  310. package/dist/strategy/index.d.ts +8 -0
  311. package/dist/strategy/index.d.ts.map +1 -0
  312. package/dist/strategy/index.js +14 -0
  313. package/dist/strategy/index.js.map +1 -0
  314. package/dist/tui/ExploreMenu.d.ts +106 -0
  315. package/dist/tui/ExploreMenu.d.ts.map +1 -0
  316. package/dist/tui/ExploreMenu.js +282 -0
  317. package/dist/tui/ExploreMenu.js.map +1 -0
  318. package/dist/tui/GameUI.d.ts +313 -0
  319. package/dist/tui/GameUI.d.ts.map +1 -0
  320. package/dist/tui/GameUI.js +2116 -0
  321. package/dist/tui/GameUI.js.map +1 -0
  322. package/dist/tui/GameUIAdapter.d.ts +207 -0
  323. package/dist/tui/GameUIAdapter.d.ts.map +1 -0
  324. package/dist/tui/GameUIAdapter.js +1342 -0
  325. package/dist/tui/GameUIAdapter.js.map +1 -0
  326. package/dist/tui/Input.d.ts +139 -0
  327. package/dist/tui/Input.d.ts.map +1 -0
  328. package/dist/tui/Input.js +278 -0
  329. package/dist/tui/Input.js.map +1 -0
  330. package/dist/tui/Menu.d.ts +110 -0
  331. package/dist/tui/Menu.d.ts.map +1 -0
  332. package/dist/tui/Menu.js +365 -0
  333. package/dist/tui/Menu.js.map +1 -0
  334. package/dist/tui/Screen.d.ts +228 -0
  335. package/dist/tui/Screen.d.ts.map +1 -0
  336. package/dist/tui/Screen.js +502 -0
  337. package/dist/tui/Screen.js.map +1 -0
  338. package/dist/tui/components/Box.d.ts +36 -0
  339. package/dist/tui/components/Box.d.ts.map +1 -0
  340. package/dist/tui/components/Box.js +43 -0
  341. package/dist/tui/components/Box.js.map +1 -0
  342. package/dist/tui/components/List.d.ts +69 -0
  343. package/dist/tui/components/List.d.ts.map +1 -0
  344. package/dist/tui/components/List.js +136 -0
  345. package/dist/tui/components/List.js.map +1 -0
  346. package/dist/tui/components/ProgressBar.d.ts +42 -0
  347. package/dist/tui/components/ProgressBar.d.ts.map +1 -0
  348. package/dist/tui/components/ProgressBar.js +75 -0
  349. package/dist/tui/components/ProgressBar.js.map +1 -0
  350. package/dist/tui/components/index.d.ts +8 -0
  351. package/dist/tui/components/index.d.ts.map +1 -0
  352. package/dist/tui/components/index.js +11 -0
  353. package/dist/tui/components/index.js.map +1 -0
  354. package/dist/tui/core/BaseSection.d.ts +98 -0
  355. package/dist/tui/core/BaseSection.d.ts.map +1 -0
  356. package/dist/tui/core/BaseSection.js +174 -0
  357. package/dist/tui/core/BaseSection.js.map +1 -0
  358. package/dist/tui/core/Component.d.ts +61 -0
  359. package/dist/tui/core/Component.d.ts.map +1 -0
  360. package/dist/tui/core/Component.js +32 -0
  361. package/dist/tui/core/Component.js.map +1 -0
  362. package/dist/tui/core/Section.d.ts +101 -0
  363. package/dist/tui/core/Section.d.ts.map +1 -0
  364. package/dist/tui/core/Section.js +24 -0
  365. package/dist/tui/core/Section.js.map +1 -0
  366. package/dist/tui/core/SectionManager.d.ts +108 -0
  367. package/dist/tui/core/SectionManager.d.ts.map +1 -0
  368. package/dist/tui/core/SectionManager.js +258 -0
  369. package/dist/tui/core/SectionManager.js.map +1 -0
  370. package/dist/tui/core/index.d.ts +9 -0
  371. package/dist/tui/core/index.d.ts.map +1 -0
  372. package/dist/tui/core/index.js +12 -0
  373. package/dist/tui/core/index.js.map +1 -0
  374. package/dist/tui/index.d.ts +15 -0
  375. package/dist/tui/index.d.ts.map +1 -0
  376. package/dist/tui/index.js +23 -0
  377. package/dist/tui/index.js.map +1 -0
  378. package/dist/tui/screens/BaseScreen.d.ts +62 -0
  379. package/dist/tui/screens/BaseScreen.d.ts.map +1 -0
  380. package/dist/tui/screens/BaseScreen.js +55 -0
  381. package/dist/tui/screens/BaseScreen.js.map +1 -0
  382. package/dist/tui/screens/CombatScreen.d.ts +43 -0
  383. package/dist/tui/screens/CombatScreen.d.ts.map +1 -0
  384. package/dist/tui/screens/CombatScreen.js +125 -0
  385. package/dist/tui/screens/CombatScreen.js.map +1 -0
  386. package/dist/tui/screens/DialogScreen.d.ts +53 -0
  387. package/dist/tui/screens/DialogScreen.d.ts.map +1 -0
  388. package/dist/tui/screens/DialogScreen.js +90 -0
  389. package/dist/tui/screens/DialogScreen.js.map +1 -0
  390. package/dist/tui/screens/DungeonScreen.d.ts +80 -0
  391. package/dist/tui/screens/DungeonScreen.d.ts.map +1 -0
  392. package/dist/tui/screens/DungeonScreen.js +317 -0
  393. package/dist/tui/screens/DungeonScreen.js.map +1 -0
  394. package/dist/tui/screens/ExploreScreen.d.ts +69 -0
  395. package/dist/tui/screens/ExploreScreen.d.ts.map +1 -0
  396. package/dist/tui/screens/ExploreScreen.js +224 -0
  397. package/dist/tui/screens/ExploreScreen.js.map +1 -0
  398. package/dist/tui/screens/SectionScreen.d.ts +84 -0
  399. package/dist/tui/screens/SectionScreen.d.ts.map +1 -0
  400. package/dist/tui/screens/SectionScreen.js +156 -0
  401. package/dist/tui/screens/SectionScreen.js.map +1 -0
  402. package/dist/tui/screens/TitleScreen.d.ts +40 -0
  403. package/dist/tui/screens/TitleScreen.d.ts.map +1 -0
  404. package/dist/tui/screens/TitleScreen.js +253 -0
  405. package/dist/tui/screens/TitleScreen.js.map +1 -0
  406. package/dist/tui/screens/TownScreen.d.ts +98 -0
  407. package/dist/tui/screens/TownScreen.d.ts.map +1 -0
  408. package/dist/tui/screens/TownScreen.js +370 -0
  409. package/dist/tui/screens/TownScreen.js.map +1 -0
  410. package/dist/tui/screens/TravelScreen.d.ts +67 -0
  411. package/dist/tui/screens/TravelScreen.d.ts.map +1 -0
  412. package/dist/tui/screens/TravelScreen.js +286 -0
  413. package/dist/tui/screens/TravelScreen.js.map +1 -0
  414. package/dist/tui/screens/index.d.ts +8 -0
  415. package/dist/tui/screens/index.d.ts.map +1 -0
  416. package/dist/tui/screens/index.js +17 -0
  417. package/dist/tui/screens/index.js.map +1 -0
  418. package/dist/tui/sections/ActionsSection.d.ts +71 -0
  419. package/dist/tui/sections/ActionsSection.d.ts.map +1 -0
  420. package/dist/tui/sections/ActionsSection.js +184 -0
  421. package/dist/tui/sections/ActionsSection.js.map +1 -0
  422. package/dist/tui/sections/DungeonSection.d.ts +65 -0
  423. package/dist/tui/sections/DungeonSection.d.ts.map +1 -0
  424. package/dist/tui/sections/DungeonSection.js +144 -0
  425. package/dist/tui/sections/DungeonSection.js.map +1 -0
  426. package/dist/tui/sections/EventsSection.d.ts +50 -0
  427. package/dist/tui/sections/EventsSection.d.ts.map +1 -0
  428. package/dist/tui/sections/EventsSection.js +134 -0
  429. package/dist/tui/sections/EventsSection.js.map +1 -0
  430. package/dist/tui/sections/MapSection.d.ts +66 -0
  431. package/dist/tui/sections/MapSection.d.ts.map +1 -0
  432. package/dist/tui/sections/MapSection.js +669 -0
  433. package/dist/tui/sections/MapSection.js.map +1 -0
  434. package/dist/tui/sections/StatusSection.d.ts +47 -0
  435. package/dist/tui/sections/StatusSection.d.ts.map +1 -0
  436. package/dist/tui/sections/StatusSection.js +133 -0
  437. package/dist/tui/sections/StatusSection.js.map +1 -0
  438. package/dist/tui/sections/TeamSection.d.ts +71 -0
  439. package/dist/tui/sections/TeamSection.d.ts.map +1 -0
  440. package/dist/tui/sections/TeamSection.js +224 -0
  441. package/dist/tui/sections/TeamSection.js.map +1 -0
  442. package/dist/tui/sections/TravelingSection.d.ts +51 -0
  443. package/dist/tui/sections/TravelingSection.d.ts.map +1 -0
  444. package/dist/tui/sections/TravelingSection.js +106 -0
  445. package/dist/tui/sections/TravelingSection.js.map +1 -0
  446. package/dist/tui/sections/index.d.ts +9 -0
  447. package/dist/tui/sections/index.d.ts.map +1 -0
  448. package/dist/tui/sections/index.js +12 -0
  449. package/dist/tui/sections/index.js.map +1 -0
  450. package/dist/ui/Terminal.d.ts +68 -0
  451. package/dist/ui/Terminal.d.ts.map +1 -0
  452. package/dist/ui/Terminal.js +297 -0
  453. package/dist/ui/Terminal.js.map +1 -0
  454. package/dist/ui/index.d.ts +5 -0
  455. package/dist/ui/index.d.ts.map +1 -0
  456. package/dist/ui/index.js +8 -0
  457. package/dist/ui/index.js.map +1 -0
  458. package/dist/utils/configMigration.d.ts +14 -0
  459. package/dist/utils/configMigration.d.ts.map +1 -0
  460. package/dist/utils/configMigration.js +92 -0
  461. package/dist/utils/configMigration.js.map +1 -0
  462. package/dist/utils/errorHandler.d.ts +86 -0
  463. package/dist/utils/errorHandler.d.ts.map +1 -0
  464. package/dist/utils/errorHandler.js +224 -0
  465. package/dist/utils/errorHandler.js.map +1 -0
  466. package/dist/utils/logger.d.ts +14 -0
  467. package/dist/utils/logger.d.ts.map +1 -0
  468. package/dist/utils/logger.js +43 -0
  469. package/dist/utils/logger.js.map +1 -0
  470. package/dist/weapon/WeaponFactory.d.ts +32 -0
  471. package/dist/weapon/WeaponFactory.d.ts.map +1 -0
  472. package/dist/weapon/WeaponFactory.js +216 -0
  473. package/dist/weapon/WeaponFactory.js.map +1 -0
  474. package/dist/weapon/index.d.ts +5 -0
  475. package/dist/weapon/index.d.ts.map +1 -0
  476. package/dist/weapon/index.js +8 -0
  477. package/dist/weapon/index.js.map +1 -0
  478. package/package.json +46 -0
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Town Screen - Town hub interface for IdleRPG
3
+ * Provides access to facilities, dungeons, and travel
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]="90b436c4-11a8-5a9c-beca-79091fd004a5")}catch(e){}}();
7
+ import { SectionScreen } from './SectionScreen.js';
8
+ import { ANSI } from '../Screen.js';
9
+ import { formatDuration } from '../../core/timeConstants.js';
10
+ // ============================================================================
11
+ // Town Screen
12
+ // ============================================================================
13
+ export class TownScreen extends SectionScreen {
14
+ data = null;
15
+ callbacks = {};
16
+ // Menu state
17
+ selectedTab = 'facilities';
18
+ selectedIndex = 0;
19
+ constructor() {
20
+ super();
21
+ }
22
+ /**
23
+ * Set callbacks
24
+ */
25
+ setCallbacks(callbacks) {
26
+ this.callbacks = { ...this.callbacks, ...callbacks };
27
+ }
28
+ /**
29
+ * Update screen data
30
+ */
31
+ updateData(data) {
32
+ this.data = data;
33
+ this.selectedIndex = 0;
34
+ }
35
+ /**
36
+ * Handle key input
37
+ */
38
+ async handleKey(key) {
39
+ if (!this.data || !key.raw)
40
+ return false;
41
+ const keyLower = key.raw.toLowerCase();
42
+ // Tab switching
43
+ switch (keyLower) {
44
+ case '1':
45
+ this.selectedTab = 'facilities';
46
+ this.selectedIndex = 0;
47
+ this.render();
48
+ return true;
49
+ case '2':
50
+ this.selectedTab = 'dungeons';
51
+ this.selectedIndex = 0;
52
+ this.render();
53
+ return true;
54
+ case '3':
55
+ this.selectedTab = 'travel';
56
+ this.selectedIndex = 0;
57
+ this.render();
58
+ return true;
59
+ }
60
+ // Get current list length
61
+ const listLength = this.getListLength();
62
+ // Navigation
63
+ switch (key.name) {
64
+ case 'up':
65
+ this.selectedIndex = Math.max(0, this.selectedIndex - 1);
66
+ this.render();
67
+ return true;
68
+ case 'down':
69
+ this.selectedIndex = Math.min(listLength - 1, this.selectedIndex + 1);
70
+ this.render();
71
+ return true;
72
+ case 'return':
73
+ this.selectCurrentItem();
74
+ return true;
75
+ }
76
+ // Shortcuts
77
+ switch (keyLower) {
78
+ case 'i':
79
+ this.callbacks.onOpenInventory?.();
80
+ return true;
81
+ case 'c':
82
+ this.callbacks.onOpenCharacter?.();
83
+ return true;
84
+ case 't':
85
+ this.callbacks.onOpenStrategy?.();
86
+ return true;
87
+ case 's':
88
+ this.callbacks.onSave?.();
89
+ return true;
90
+ }
91
+ return false;
92
+ }
93
+ /**
94
+ * Get current list length
95
+ */
96
+ getListLength() {
97
+ if (!this.data)
98
+ return 0;
99
+ switch (this.selectedTab) {
100
+ case 'facilities':
101
+ return this.data.town.facilities.length;
102
+ case 'dungeons':
103
+ return this.data.availableDungeons.length;
104
+ case 'travel':
105
+ return this.data.connectedTowns.length;
106
+ default:
107
+ return 0;
108
+ }
109
+ }
110
+ /**
111
+ * Select current item
112
+ */
113
+ selectCurrentItem() {
114
+ if (!this.data)
115
+ return;
116
+ switch (this.selectedTab) {
117
+ case 'facilities':
118
+ const facility = this.data.town.facilities[this.selectedIndex];
119
+ if (facility) {
120
+ this.callbacks.onSelectFacility?.(facility);
121
+ }
122
+ break;
123
+ case 'dungeons':
124
+ const dungeon = this.data.availableDungeons[this.selectedIndex];
125
+ if (dungeon) {
126
+ this.callbacks.onSelectDungeon?.(dungeon);
127
+ }
128
+ break;
129
+ case 'travel':
130
+ const townData = this.data.connectedTowns[this.selectedIndex];
131
+ if (townData) {
132
+ this.callbacks.onTravelToTown?.(townData.town);
133
+ }
134
+ break;
135
+ }
136
+ }
137
+ /**
138
+ * Calculate section bounds (not using sections)
139
+ */
140
+ calculateSectionBounds() {
141
+ return new Map();
142
+ }
143
+ /**
144
+ * Get global hints
145
+ */
146
+ getGlobalHints() {
147
+ return '1-3: Tab Up/Down: Select Enter: Confirm [I]nv [C]har [T]actcs [S]ave';
148
+ }
149
+ /**
150
+ * Render the screen
151
+ */
152
+ render() {
153
+ if (!this.data)
154
+ return;
155
+ this.screen.clear();
156
+ const { player, town } = this.data;
157
+ const content = this.getContentArea();
158
+ // Render header
159
+ this.renderHeader(`TOWN: ${town.name}`, `Lv.${player.stats.level} ${player.name}`);
160
+ // Calculate layout
161
+ const leftWidth = Math.floor(content.width * 0.35);
162
+ const rightWidth = content.width - leftWidth - 1;
163
+ // Render player status (left side)
164
+ this.renderPlayerStatus({ x: content.x, y: content.y, width: leftWidth, height: content.height }, player);
165
+ // Render tabs and menu (right side)
166
+ const tabHeight = 3;
167
+ this.renderTabs({ x: content.x + leftWidth + 1, y: content.y, width: rightWidth, height: tabHeight });
168
+ this.renderMenu({ x: content.x + leftWidth + 1, y: content.y + tabHeight, width: rightWidth, height: content.height - tabHeight });
169
+ // Render hint bar
170
+ this.renderHintBar();
171
+ this.screen.render();
172
+ }
173
+ /**
174
+ * Render player status panel
175
+ */
176
+ renderPlayerStatus(bounds, player) {
177
+ this.screen.drawBox(bounds.x, bounds.y, bounds.width, bounds.height, 'Status');
178
+ let y = bounds.y + 2;
179
+ const x = bounds.x + 2;
180
+ const barWidth = bounds.width - 15;
181
+ // Name and level
182
+ this.screen.write(x, y, player.name, ANSI.fg.yellow, undefined, ANSI.bold);
183
+ y++;
184
+ this.screen.write(x, y, `Level ${player.stats.level}`, ANSI.fg.white);
185
+ y += 2;
186
+ // HP Bar
187
+ this.screen.write(x, y, 'HP', ANSI.fg.gray);
188
+ this.screen.drawProgressBar(x + 4, y, barWidth, player.stats.hp, player.stats.maxHp, ANSI.fg.red);
189
+ y++;
190
+ this.screen.write(x + 4, y, `${player.stats.hp} / ${player.stats.maxHp}`, ANSI.fg.white);
191
+ y += 2;
192
+ // MP Bar
193
+ this.screen.write(x, y, 'MP', ANSI.fg.gray);
194
+ this.screen.drawProgressBar(x + 4, y, barWidth, player.stats.mp, player.stats.maxMp, ANSI.fg.blue);
195
+ y++;
196
+ this.screen.write(x + 4, y, `${player.stats.mp} / ${player.stats.maxMp}`, ANSI.fg.white);
197
+ y += 2;
198
+ // EXP Bar
199
+ this.screen.write(x, y, 'EXP', ANSI.fg.gray);
200
+ this.screen.drawProgressBar(x + 4, y, barWidth, player.stats.exp, player.stats.expToNextLevel, ANSI.fg.magenta);
201
+ y++;
202
+ this.screen.write(x + 4, y, `${player.stats.exp} / ${player.stats.expToNextLevel}`, ANSI.fg.white);
203
+ y += 2;
204
+ // Stats
205
+ this.screen.write(x, y, '── Stats ──', ANSI.fg.gray);
206
+ y++;
207
+ this.screen.write(x, y, `ATK: ${player.stats.attack}`, ANSI.fg.red);
208
+ y++;
209
+ this.screen.write(x, y, `DEF: ${player.stats.defense}`, ANSI.fg.cyan);
210
+ y++;
211
+ this.screen.write(x, y, `SPD: ${player.stats.speed}`, ANSI.fg.green);
212
+ y += 2;
213
+ // Gold
214
+ this.screen.write(x, y, `Gold: ${player.stats.gold}`, ANSI.fg.yellow);
215
+ }
216
+ /**
217
+ * Render tab bar
218
+ */
219
+ renderTabs(bounds) {
220
+ const tabs = ['1:Facilities', '2:Dungeons', '3:Travel'];
221
+ const tabWidth = Math.floor(bounds.width / tabs.length);
222
+ tabs.forEach((tab, index) => {
223
+ const x = bounds.x + index * tabWidth;
224
+ const isSelected = ((index === 0 && this.selectedTab === 'facilities') ||
225
+ (index === 1 && this.selectedTab === 'dungeons') ||
226
+ (index === 2 && this.selectedTab === 'travel'));
227
+ const bg = isSelected ? ANSI.bg.blue : ANSI.bg.black;
228
+ const fg = isSelected ? ANSI.fg.white : ANSI.fg.gray;
229
+ // Draw tab
230
+ for (let i = 0; i < tabWidth; i++) {
231
+ this.screen.write(x + i, bounds.y + 1, ' ', fg, bg);
232
+ }
233
+ const labelX = x + Math.floor((tabWidth - tab.length) / 2);
234
+ this.screen.write(labelX, bounds.y + 1, tab, fg, bg);
235
+ });
236
+ }
237
+ /**
238
+ * Render menu based on selected tab
239
+ */
240
+ renderMenu(bounds) {
241
+ if (!this.data)
242
+ return;
243
+ this.screen.drawBox(bounds.x, bounds.y, bounds.width, bounds.height);
244
+ switch (this.selectedTab) {
245
+ case 'facilities':
246
+ this.renderFacilitiesMenu(bounds);
247
+ break;
248
+ case 'dungeons':
249
+ this.renderDungeonsMenu(bounds);
250
+ break;
251
+ case 'travel':
252
+ this.renderTravelMenu(bounds);
253
+ break;
254
+ }
255
+ }
256
+ /**
257
+ * Render facilities menu
258
+ */
259
+ renderFacilitiesMenu(bounds) {
260
+ if (!this.data)
261
+ return;
262
+ let y = bounds.y + 1;
263
+ const x = bounds.x + 2;
264
+ for (let i = 0; i < this.data.town.facilities.length; i++) {
265
+ const facility = this.data.town.facilities[i];
266
+ const isSelected = i === this.selectedIndex;
267
+ const fg = isSelected ? ANSI.fg.cyan : (facility.isUnlocked ? ANSI.fg.white : ANSI.fg.gray);
268
+ const prefix = isSelected ? '> ' : ' ';
269
+ const icon = this.getFacilityIcon(facility.type);
270
+ const status = facility.isUnlocked ? '' : ' [Locked]';
271
+ this.screen.write(x, y, `${prefix}${icon} ${facility.name}${status}`, fg);
272
+ y++;
273
+ // Show description if selected
274
+ if (isSelected) {
275
+ this.screen.write(x + 4, y, facility.description.slice(0, bounds.width - 8), ANSI.fg.gray);
276
+ y++;
277
+ }
278
+ y++;
279
+ }
280
+ }
281
+ /**
282
+ * Render dungeons menu
283
+ */
284
+ renderDungeonsMenu(bounds) {
285
+ if (!this.data)
286
+ return;
287
+ let y = bounds.y + 1;
288
+ const x = bounds.x + 2;
289
+ if (this.data.availableDungeons.length === 0) {
290
+ this.screen.write(x, y, 'No dungeons available', ANSI.fg.gray);
291
+ return;
292
+ }
293
+ for (let i = 0; i < this.data.availableDungeons.length; i++) {
294
+ const dungeon = this.data.availableDungeons[i];
295
+ const isSelected = i === this.selectedIndex;
296
+ const fg = isSelected ? ANSI.fg.cyan : ANSI.fg.white;
297
+ const prefix = isSelected ? '> ' : ' ';
298
+ const diffColor = this.getDifficultyColor(dungeon.difficulty);
299
+ this.screen.write(x, y, `${prefix}${dungeon.name}`, fg);
300
+ this.screen.write(x + 25, y, dungeon.difficulty.toUpperCase(), diffColor);
301
+ y++;
302
+ // Show details if selected
303
+ if (isSelected) {
304
+ this.screen.write(x + 4, y, `Lv.${dungeon.recommendedLevel} | ${dungeon.levels.length} floors | ~${formatDuration(dungeon.estimatedTime)}`, ANSI.fg.gray);
305
+ y++;
306
+ this.screen.write(x + 4, y, dungeon.description.slice(0, bounds.width - 8), ANSI.fg.gray);
307
+ y++;
308
+ }
309
+ y++;
310
+ }
311
+ }
312
+ /**
313
+ * Render travel menu
314
+ */
315
+ renderTravelMenu(bounds) {
316
+ if (!this.data)
317
+ return;
318
+ let y = bounds.y + 1;
319
+ const x = bounds.x + 2;
320
+ if (this.data.connectedTowns.length === 0) {
321
+ this.screen.write(x, y, 'No other towns accessible', ANSI.fg.gray);
322
+ return;
323
+ }
324
+ for (let i = 0; i < this.data.connectedTowns.length; i++) {
325
+ const { town, travelTime } = this.data.connectedTowns[i];
326
+ const isSelected = i === this.selectedIndex;
327
+ const fg = isSelected ? ANSI.fg.cyan : ANSI.fg.white;
328
+ const prefix = isSelected ? '> ' : ' ';
329
+ this.screen.write(x, y, `${prefix}${town.name}`, fg);
330
+ this.screen.write(x + 25, y, formatDuration(travelTime), ANSI.fg.yellow);
331
+ y++;
332
+ if (isSelected) {
333
+ this.screen.write(x + 4, y, town.description.slice(0, bounds.width - 8), ANSI.fg.gray);
334
+ y++;
335
+ }
336
+ y++;
337
+ }
338
+ }
339
+ /**
340
+ * Get icon for facility type
341
+ */
342
+ getFacilityIcon(type) {
343
+ const icons = {
344
+ inn: '🛏',
345
+ shop: '🏪',
346
+ blacksmith: '⚒',
347
+ tavern: '🍺',
348
+ guild: '⚔',
349
+ temple: '⛪',
350
+ bank: '🏦',
351
+ arena: '🏟',
352
+ };
353
+ return icons[type] || '•';
354
+ }
355
+ /**
356
+ * Get color for difficulty
357
+ */
358
+ getDifficultyColor(difficulty) {
359
+ const colors = {
360
+ easy: ANSI.fg.green,
361
+ normal: ANSI.fg.white,
362
+ hard: ANSI.fg.yellow,
363
+ nightmare: ANSI.fg.red,
364
+ legendary: ANSI.fg.magenta,
365
+ };
366
+ return colors[difficulty] || ANSI.fg.white;
367
+ }
368
+ }
369
+ //# sourceMappingURL=TownScreen.js.map
370
+ //# debugId=90b436c4-11a8-5a9c-beca-79091fd004a5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TownScreen.js","sources":["tui/screens/TownScreen.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Town Screen - Town hub interface for IdleRPG\r\n * Provides access to facilities, dungeons, and travel\r\n */\r\n\r\nimport { SectionScreen } from './SectionScreen.js';\r\nimport type { Rect } from '../core/Component.js';\r\nimport type { KeyEvent } from '../Input.js';\r\nimport { ANSI } from '../Screen.js';\r\nimport { getStrings } from '../../i18n/index.js';\r\nimport { formatDuration } from '../../core/timeConstants.js';\r\n\r\n// Types\r\nimport type {\r\n Player,\r\n Town,\r\n TownFacility,\r\n TownFacilityType,\r\n Dungeon,\r\n} from '../../core/types.js';\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\nexport interface TownScreenData {\r\n player: Player;\r\n town: Town;\r\n availableDungeons: Dungeon[];\r\n connectedTowns: Array<{ town: Town; travelTime: number }>;\r\n}\r\n\r\nexport interface TownScreenCallbacks {\r\n onSelectFacility: (facility: TownFacility) => void;\r\n onSelectDungeon: (dungeon: Dungeon) => void;\r\n onTravelToTown: (town: Town) => void;\r\n onOpenStrategy: () => void;\r\n onOpenInventory: () => void;\r\n onOpenCharacter: () => void;\r\n onSave: () => void;\r\n}\r\n\r\n// ============================================================================\r\n// Town Screen\r\n// ============================================================================\r\n\r\nexport class TownScreen extends SectionScreen {\r\n private data: TownScreenData | null = null;\r\n private callbacks: Partial<TownScreenCallbacks> = {};\r\n\r\n // Menu state\r\n private selectedTab: 'facilities' | 'dungeons' | 'travel' = 'facilities';\r\n private selectedIndex: number = 0;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Set callbacks\r\n */\r\n setCallbacks(callbacks: Partial<TownScreenCallbacks>): void {\r\n this.callbacks = { ...this.callbacks, ...callbacks };\r\n }\r\n\r\n /**\r\n * Update screen data\r\n */\r\n updateData(data: TownScreenData): void {\r\n this.data = data;\r\n this.selectedIndex = 0;\r\n }\r\n\r\n /**\r\n * Handle key input\r\n */\r\n async handleKey(key: KeyEvent): Promise<boolean> {\r\n if (!this.data || !key.raw) return false;\r\n\r\n const keyLower = key.raw.toLowerCase();\r\n\r\n // Tab switching\r\n switch (keyLower) {\r\n case '1':\r\n this.selectedTab = 'facilities';\r\n this.selectedIndex = 0;\r\n this.render();\r\n return true;\r\n case '2':\r\n this.selectedTab = 'dungeons';\r\n this.selectedIndex = 0;\r\n this.render();\r\n return true;\r\n case '3':\r\n this.selectedTab = 'travel';\r\n this.selectedIndex = 0;\r\n this.render();\r\n return true;\r\n }\r\n\r\n // Get current list length\r\n const listLength = this.getListLength();\r\n\r\n // Navigation\r\n switch (key.name) {\r\n case 'up':\r\n this.selectedIndex = Math.max(0, this.selectedIndex - 1);\r\n this.render();\r\n return true;\r\n\r\n case 'down':\r\n this.selectedIndex = Math.min(listLength - 1, this.selectedIndex + 1);\r\n this.render();\r\n return true;\r\n\r\n case 'return':\r\n this.selectCurrentItem();\r\n return true;\r\n }\r\n\r\n // Shortcuts\r\n switch (keyLower) {\r\n case 'i':\r\n this.callbacks.onOpenInventory?.();\r\n return true;\r\n case 'c':\r\n this.callbacks.onOpenCharacter?.();\r\n return true;\r\n case 't':\r\n this.callbacks.onOpenStrategy?.();\r\n return true;\r\n case 's':\r\n this.callbacks.onSave?.();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Get current list length\r\n */\r\n private getListLength(): number {\r\n if (!this.data) return 0;\r\n\r\n switch (this.selectedTab) {\r\n case 'facilities':\r\n return this.data.town.facilities.length;\r\n case 'dungeons':\r\n return this.data.availableDungeons.length;\r\n case 'travel':\r\n return this.data.connectedTowns.length;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Select current item\r\n */\r\n private selectCurrentItem(): void {\r\n if (!this.data) return;\r\n\r\n switch (this.selectedTab) {\r\n case 'facilities':\r\n const facility = this.data.town.facilities[this.selectedIndex];\r\n if (facility) {\r\n this.callbacks.onSelectFacility?.(facility);\r\n }\r\n break;\r\n\r\n case 'dungeons':\r\n const dungeon = this.data.availableDungeons[this.selectedIndex];\r\n if (dungeon) {\r\n this.callbacks.onSelectDungeon?.(dungeon);\r\n }\r\n break;\r\n\r\n case 'travel':\r\n const townData = this.data.connectedTowns[this.selectedIndex];\r\n if (townData) {\r\n this.callbacks.onTravelToTown?.(townData.town);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Calculate section bounds (not using sections)\r\n */\r\n protected calculateSectionBounds(): Map<string, Rect> {\r\n return new Map();\r\n }\r\n\r\n /**\r\n * Get global hints\r\n */\r\n protected getGlobalHints(): string {\r\n return '1-3: Tab Up/Down: Select Enter: Confirm [I]nv [C]har [T]actcs [S]ave';\r\n }\r\n\r\n /**\r\n * Render the screen\r\n */\r\n render(): void {\r\n if (!this.data) return;\r\n\r\n this.screen.clear();\r\n\r\n const { player, town } = this.data;\r\n const content = this.getContentArea();\r\n\r\n // Render header\r\n this.renderHeader(`TOWN: ${town.name}`, `Lv.${player.stats.level} ${player.name}`);\r\n\r\n // Calculate layout\r\n const leftWidth = Math.floor(content.width * 0.35);\r\n const rightWidth = content.width - leftWidth - 1;\r\n\r\n // Render player status (left side)\r\n this.renderPlayerStatus(\r\n { x: content.x, y: content.y, width: leftWidth, height: content.height },\r\n player\r\n );\r\n\r\n // Render tabs and menu (right side)\r\n const tabHeight = 3;\r\n this.renderTabs(\r\n { x: content.x + leftWidth + 1, y: content.y, width: rightWidth, height: tabHeight }\r\n );\r\n\r\n this.renderMenu(\r\n { x: content.x + leftWidth + 1, y: content.y + tabHeight, width: rightWidth, height: content.height - tabHeight }\r\n );\r\n\r\n // Render hint bar\r\n this.renderHintBar();\r\n\r\n this.screen.render();\r\n }\r\n\r\n /**\r\n * Render player status panel\r\n */\r\n private renderPlayerStatus(bounds: Rect, player: Player): void {\r\n this.screen.drawBox(bounds.x, bounds.y, bounds.width, bounds.height, 'Status');\r\n\r\n let y = bounds.y + 2;\r\n const x = bounds.x + 2;\r\n const barWidth = bounds.width - 15;\r\n\r\n // Name and level\r\n this.screen.write(x, y, player.name, ANSI.fg.yellow, undefined, ANSI.bold);\r\n y++;\r\n this.screen.write(x, y, `Level ${player.stats.level}`, ANSI.fg.white);\r\n y += 2;\r\n\r\n // HP Bar\r\n this.screen.write(x, y, 'HP', ANSI.fg.gray);\r\n this.screen.drawProgressBar(x + 4, y, barWidth, player.stats.hp, player.stats.maxHp, ANSI.fg.red);\r\n y++;\r\n this.screen.write(x + 4, y, `${player.stats.hp} / ${player.stats.maxHp}`, ANSI.fg.white);\r\n y += 2;\r\n\r\n // MP Bar\r\n this.screen.write(x, y, 'MP', ANSI.fg.gray);\r\n this.screen.drawProgressBar(x + 4, y, barWidth, player.stats.mp, player.stats.maxMp, ANSI.fg.blue);\r\n y++;\r\n this.screen.write(x + 4, y, `${player.stats.mp} / ${player.stats.maxMp}`, ANSI.fg.white);\r\n y += 2;\r\n\r\n // EXP Bar\r\n this.screen.write(x, y, 'EXP', ANSI.fg.gray);\r\n this.screen.drawProgressBar(x + 4, y, barWidth, player.stats.exp, player.stats.expToNextLevel, ANSI.fg.magenta);\r\n y++;\r\n this.screen.write(x + 4, y, `${player.stats.exp} / ${player.stats.expToNextLevel}`, ANSI.fg.white);\r\n y += 2;\r\n\r\n // Stats\r\n this.screen.write(x, y, '── Stats ──', ANSI.fg.gray);\r\n y++;\r\n this.screen.write(x, y, `ATK: ${player.stats.attack}`, ANSI.fg.red);\r\n y++;\r\n this.screen.write(x, y, `DEF: ${player.stats.defense}`, ANSI.fg.cyan);\r\n y++;\r\n this.screen.write(x, y, `SPD: ${player.stats.speed}`, ANSI.fg.green);\r\n y += 2;\r\n\r\n // Gold\r\n this.screen.write(x, y, `Gold: ${player.stats.gold}`, ANSI.fg.yellow);\r\n }\r\n\r\n /**\r\n * Render tab bar\r\n */\r\n private renderTabs(bounds: Rect): void {\r\n const tabs = ['1:Facilities', '2:Dungeons', '3:Travel'];\r\n const tabWidth = Math.floor(bounds.width / tabs.length);\r\n\r\n tabs.forEach((tab, index) => {\r\n const x = bounds.x + index * tabWidth;\r\n const isSelected = (\r\n (index === 0 && this.selectedTab === 'facilities') ||\r\n (index === 1 && this.selectedTab === 'dungeons') ||\r\n (index === 2 && this.selectedTab === 'travel')\r\n );\r\n\r\n const bg = isSelected ? ANSI.bg.blue : ANSI.bg.black;\r\n const fg = isSelected ? ANSI.fg.white : ANSI.fg.gray;\r\n\r\n // Draw tab\r\n for (let i = 0; i < tabWidth; i++) {\r\n this.screen.write(x + i, bounds.y + 1, ' ', fg, bg);\r\n }\r\n const labelX = x + Math.floor((tabWidth - tab.length) / 2);\r\n this.screen.write(labelX, bounds.y + 1, tab, fg, bg);\r\n });\r\n }\r\n\r\n /**\r\n * Render menu based on selected tab\r\n */\r\n private renderMenu(bounds: Rect): void {\r\n if (!this.data) return;\r\n\r\n this.screen.drawBox(bounds.x, bounds.y, bounds.width, bounds.height);\r\n\r\n switch (this.selectedTab) {\r\n case 'facilities':\r\n this.renderFacilitiesMenu(bounds);\r\n break;\r\n case 'dungeons':\r\n this.renderDungeonsMenu(bounds);\r\n break;\r\n case 'travel':\r\n this.renderTravelMenu(bounds);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Render facilities menu\r\n */\r\n private renderFacilitiesMenu(bounds: Rect): void {\r\n if (!this.data) return;\r\n\r\n let y = bounds.y + 1;\r\n const x = bounds.x + 2;\r\n\r\n for (let i = 0; i < this.data.town.facilities.length; i++) {\r\n const facility = this.data.town.facilities[i];\r\n const isSelected = i === this.selectedIndex;\r\n const fg = isSelected ? ANSI.fg.cyan : (facility.isUnlocked ? ANSI.fg.white : ANSI.fg.gray);\r\n const prefix = isSelected ? '> ' : ' ';\r\n\r\n const icon = this.getFacilityIcon(facility.type);\r\n const status = facility.isUnlocked ? '' : ' [Locked]';\r\n\r\n this.screen.write(x, y, `${prefix}${icon} ${facility.name}${status}`, fg);\r\n y++;\r\n\r\n // Show description if selected\r\n if (isSelected) {\r\n this.screen.write(x + 4, y, facility.description.slice(0, bounds.width - 8), ANSI.fg.gray);\r\n y++;\r\n }\r\n\r\n y++;\r\n }\r\n }\r\n\r\n /**\r\n * Render dungeons menu\r\n */\r\n private renderDungeonsMenu(bounds: Rect): void {\r\n if (!this.data) return;\r\n\r\n let y = bounds.y + 1;\r\n const x = bounds.x + 2;\r\n\r\n if (this.data.availableDungeons.length === 0) {\r\n this.screen.write(x, y, 'No dungeons available', ANSI.fg.gray);\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.data.availableDungeons.length; i++) {\r\n const dungeon = this.data.availableDungeons[i];\r\n const isSelected = i === this.selectedIndex;\r\n const fg = isSelected ? ANSI.fg.cyan : ANSI.fg.white;\r\n const prefix = isSelected ? '> ' : ' ';\r\n\r\n const diffColor = this.getDifficultyColor(dungeon.difficulty);\r\n this.screen.write(x, y, `${prefix}${dungeon.name}`, fg);\r\n this.screen.write(x + 25, y, dungeon.difficulty.toUpperCase(), diffColor);\r\n y++;\r\n\r\n // Show details if selected\r\n if (isSelected) {\r\n this.screen.write(x + 4, y, `Lv.${dungeon.recommendedLevel} | ${dungeon.levels.length} floors | ~${formatDuration(dungeon.estimatedTime)}`, ANSI.fg.gray);\r\n y++;\r\n this.screen.write(x + 4, y, dungeon.description.slice(0, bounds.width - 8), ANSI.fg.gray);\r\n y++;\r\n }\r\n\r\n y++;\r\n }\r\n }\r\n\r\n /**\r\n * Render travel menu\r\n */\r\n private renderTravelMenu(bounds: Rect): void {\r\n if (!this.data) return;\r\n\r\n let y = bounds.y + 1;\r\n const x = bounds.x + 2;\r\n\r\n if (this.data.connectedTowns.length === 0) {\r\n this.screen.write(x, y, 'No other towns accessible', ANSI.fg.gray);\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.data.connectedTowns.length; i++) {\r\n const { town, travelTime } = this.data.connectedTowns[i];\r\n const isSelected = i === this.selectedIndex;\r\n const fg = isSelected ? ANSI.fg.cyan : ANSI.fg.white;\r\n const prefix = isSelected ? '> ' : ' ';\r\n\r\n this.screen.write(x, y, `${prefix}${town.name}`, fg);\r\n this.screen.write(x + 25, y, formatDuration(travelTime), ANSI.fg.yellow);\r\n y++;\r\n\r\n if (isSelected) {\r\n this.screen.write(x + 4, y, town.description.slice(0, bounds.width - 8), ANSI.fg.gray);\r\n y++;\r\n }\r\n\r\n y++;\r\n }\r\n }\r\n\r\n /**\r\n * Get icon for facility type\r\n */\r\n private getFacilityIcon(type: TownFacilityType): string {\r\n const icons: Record<TownFacilityType, string> = {\r\n inn: '🛏',\r\n shop: '🏪',\r\n blacksmith: '⚒',\r\n tavern: '🍺',\r\n guild: '⚔',\r\n temple: '⛪',\r\n bank: '🏦',\r\n arena: '🏟',\r\n };\r\n return icons[type] || '•';\r\n }\r\n\r\n /**\r\n * Get color for difficulty\r\n */\r\n private getDifficultyColor(difficulty: string): string {\r\n const colors: Record<string, string> = {\r\n easy: ANSI.fg.green,\r\n normal: ANSI.fg.white,\r\n hard: ANSI.fg.yellow,\r\n nightmare: ANSI.fg.red,\r\n legendary: ANSI.fg.magenta,\r\n };\r\n return colors[difficulty] || ANSI.fg.white;\r\n }\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"90b436c4-11a8-5a9c-beca-79091fd004a5"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Travel Screen - Shows travel progress with animated map
3
+ */
4
+ import { BaseScreen } from '../../app/screens/BaseScreen.js';
5
+ import type { KeyEvent } from '../Input.js';
6
+ import type { GameState, Room } from '../../core/types.js';
7
+ /**
8
+ * Travel Screen Data
9
+ */
10
+ export interface TravelScreenData {
11
+ state: GameState;
12
+ fromRoom: Room | null;
13
+ toRoom: Room | null;
14
+ progress: number;
15
+ duration: number;
16
+ events: string[];
17
+ }
18
+ /**
19
+ * Travel Screen - Animated travel progress display
20
+ */
21
+ export declare class TravelScreen extends BaseScreen {
22
+ private data;
23
+ private padding;
24
+ private headerHeight;
25
+ private onCancel?;
26
+ /**
27
+ * Set cancel handler
28
+ */
29
+ setOnCancel(handler: () => void): void;
30
+ /**
31
+ * Update travel data
32
+ */
33
+ updateData(data: TravelScreenData): void;
34
+ /**
35
+ * Handle key input
36
+ */
37
+ handleKey(key: KeyEvent): Promise<boolean>;
38
+ /**
39
+ * Render the travel screen
40
+ */
41
+ render(): void;
42
+ /**
43
+ * Render header
44
+ */
45
+ private renderHeader;
46
+ /**
47
+ * Render travel map with animated player position
48
+ */
49
+ private renderTravelMap;
50
+ /**
51
+ * Draw a path between two points
52
+ */
53
+ private drawPath;
54
+ /**
55
+ * Get room symbol
56
+ */
57
+ private getRoomSymbol;
58
+ /**
59
+ * Render travel status panel
60
+ */
61
+ private renderTravelStatus;
62
+ /**
63
+ * Render travel info panel
64
+ */
65
+ private renderTravelInfo;
66
+ }
67
+ //# sourceMappingURL=TravelScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TravelScreen.d.ts","sourceRoot":"/","sources":["tui/screens/TravelScreen.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAU,MAAM,qBAAqB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAE9B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAIxC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAQhD;;OAEG;IACH,MAAM,IAAI,IAAI;IAyCd;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiGvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA4BhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAuDzB"}