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,397 @@
1
+ /**
2
+ * State Adapter - Converts IdleGameState to GameState format for UI compatibility
3
+ *
4
+ * This adapter bridges the new IdleGameManager with the existing GameUI
5
+ * by converting the IdleRPG state structure to the legacy GameState format.
6
+ *
7
+ * Also provides team-aware state conversion for the new multi-character system.
8
+ */
9
+
10
+ !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]="6df3027b-b65b-5cb9-bc3c-073f22c9770e")}catch(e){}}();
11
+ import { actorToPlayer } from './Actor.js';
12
+ import { getActiveMembers, getTeamLeaderId } from './Team.js';
13
+ /**
14
+ * Convert IdleGamePhase to legacy GamePhase
15
+ */
16
+ function convertPhase(phase) {
17
+ switch (phase) {
18
+ case 'in_town':
19
+ case 'resting':
20
+ case 'dead':
21
+ return 'exploring';
22
+ case 'traveling_to_dungeon':
23
+ case 'returning_to_town':
24
+ return 'traveling';
25
+ case 'in_dungeon':
26
+ return 'exploring'; // or 'combat' if in combat
27
+ default:
28
+ return 'exploring';
29
+ }
30
+ }
31
+ /**
32
+ * Pre-defined positions for facilities around the town center
33
+ * Creates a radial layout around the center (which is at 2, 2)
34
+ */
35
+ const FACILITY_POSITIONS = [
36
+ { x: 2, y: 0 }, // North
37
+ { x: 4, y: 1 }, // NE
38
+ { x: 4, y: 3 }, // SE
39
+ { x: 2, y: 4 }, // South
40
+ { x: 0, y: 3 }, // SW
41
+ { x: 0, y: 1 }, // NW
42
+ { x: 3, y: 0 }, // N-extra
43
+ { x: 1, y: 4 }, // S-extra
44
+ ];
45
+ /**
46
+ * Create a Room from a TownFacility
47
+ */
48
+ function facilityToRoom(facility, index, townId) {
49
+ const typeMap = {
50
+ inn: 'rest',
51
+ shop: 'shop',
52
+ blacksmith: 'shop',
53
+ tavern: 'rest',
54
+ guild: 'event',
55
+ temple: 'rest',
56
+ bank: 'shop',
57
+ };
58
+ // Use pre-defined positions or fallback to grid layout
59
+ const pos = FACILITY_POSITIONS[index] || { x: (index % 3) * 2, y: Math.floor(index / 3) * 2 };
60
+ return {
61
+ id: `${townId}_facility_${index}`,
62
+ type: typeMap[facility.type] || 'empty',
63
+ position: { x: pos.x, y: pos.y, floor: 1 },
64
+ name: facility.name,
65
+ description: facility.description,
66
+ isExplored: true,
67
+ isCleared: true,
68
+ connections: [],
69
+ };
70
+ }
71
+ /**
72
+ * Create a GameMap from a Town
73
+ */
74
+ function townToGameMap(town) {
75
+ const rooms = new Map();
76
+ // Town center at (2, 2) - center of the radial layout
77
+ const centerRoom = {
78
+ id: `${town.id}_center`,
79
+ type: 'town',
80
+ position: { x: 2, y: 2, floor: 1 },
81
+ name: town.name,
82
+ description: town.description,
83
+ isExplored: true,
84
+ isCleared: true,
85
+ connections: [],
86
+ };
87
+ rooms.set(centerRoom.id, centerRoom);
88
+ // Create rooms for each facility (positioned around center)
89
+ town.facilities.forEach((facility, index) => {
90
+ const room = facilityToRoom(facility, index, town.id);
91
+ room.connections.push(centerRoom.id);
92
+ centerRoom.connections.push(room.id);
93
+ rooms.set(room.id, room);
94
+ });
95
+ // Dungeon exits positioned to the right of the town
96
+ const dungeonExitPositions = [
97
+ { x: 5, y: 2 }, // East
98
+ { x: 5, y: 1 }, // NE
99
+ { x: 5, y: 3 }, // SE
100
+ ];
101
+ // Create exit rooms for connected dungeons
102
+ town.connectedDungeons.forEach((dungeonId, index) => {
103
+ const pos = dungeonExitPositions[index] || { x: 5, y: index };
104
+ const exitRoom = {
105
+ id: `${town.id}_dungeon_exit_${index}`,
106
+ type: 'dungeon_entrance',
107
+ position: { x: pos.x, y: pos.y, floor: 1 },
108
+ name: `→ ${dungeonId}`,
109
+ description: 'A path leading to adventure...',
110
+ isExplored: true,
111
+ isCleared: true,
112
+ connections: [centerRoom.id],
113
+ };
114
+ centerRoom.connections.push(exitRoom.id);
115
+ rooms.set(exitRoom.id, exitRoom);
116
+ });
117
+ return {
118
+ id: town.id,
119
+ name: town.name,
120
+ type: 'town',
121
+ floor: 1,
122
+ rooms,
123
+ startRoomId: centerRoom.id,
124
+ generatedAt: Date.now(),
125
+ };
126
+ }
127
+ /**
128
+ * Convert DungeonRoom to Room
129
+ */
130
+ function dungeonRoomToRoom(dungeonRoom) {
131
+ const typeMap = {
132
+ entrance: 'dungeon_entrance',
133
+ combat: 'combat',
134
+ treasure: 'treasure',
135
+ rest: 'rest',
136
+ puzzle: 'event',
137
+ trap: 'event',
138
+ boss: 'combat',
139
+ exit: 'dungeon_entrance',
140
+ empty: 'empty',
141
+ shop: 'shop',
142
+ shrine: 'event',
143
+ dead_end: 'empty',
144
+ safe_room: 'rest',
145
+ };
146
+ return {
147
+ id: dungeonRoom.id,
148
+ type: typeMap[dungeonRoom.type] || 'empty',
149
+ position: { ...dungeonRoom.position, floor: 1 },
150
+ name: dungeonRoom.name,
151
+ description: dungeonRoom.description,
152
+ isExplored: dungeonRoom.isExplored,
153
+ isCleared: dungeonRoom.isCleared,
154
+ connections: dungeonRoom.connections.map(c => c.targetRoomId),
155
+ enemies: dungeonRoom.content.enemies,
156
+ items: dungeonRoom.content.items,
157
+ };
158
+ }
159
+ /**
160
+ * Create a GameMap from Dungeon and DungeonRunnerState
161
+ */
162
+ function dungeonToGameMap(dungeon, runnerState) {
163
+ const rooms = new Map();
164
+ // Get current level
165
+ const currentLevelIndex = runnerState?.currentLevel ?? 0;
166
+ const currentLevel = dungeon.levels[currentLevelIndex];
167
+ if (currentLevel) {
168
+ // Convert all rooms in current level
169
+ for (const dungeonRoom of currentLevel.rooms) {
170
+ const room = dungeonRoomToRoom(dungeonRoom);
171
+ // Mark explored rooms
172
+ if (runnerState?.exploredRooms.has(dungeonRoom.id)) {
173
+ room.isExplored = true;
174
+ }
175
+ if (runnerState?.clearedRooms.has(dungeonRoom.id)) {
176
+ room.isCleared = true;
177
+ }
178
+ rooms.set(room.id, room);
179
+ }
180
+ }
181
+ const startRoomId = currentLevel?.entranceRoomId || '';
182
+ return {
183
+ id: dungeon.id,
184
+ name: `${dungeon.name} - Level ${currentLevelIndex + 1}`,
185
+ type: 'dungeon',
186
+ floor: currentLevelIndex + 1,
187
+ rooms,
188
+ startRoomId,
189
+ bossRoomId: currentLevel?.bossRoomId,
190
+ generatedAt: Date.now(),
191
+ };
192
+ }
193
+ /**
194
+ * Create TravelState from IdleGameState
195
+ */
196
+ function createTravelState(state) {
197
+ if (state.phase !== 'traveling_to_dungeon' && state.phase !== 'returning_to_town') {
198
+ return undefined;
199
+ }
200
+ const fromId = state.phase === 'traveling_to_dungeon'
201
+ ? `${state.currentTown.id}_center`
202
+ : state.currentDungeon?.id || 'dungeon';
203
+ const toId = state.phase === 'traveling_to_dungeon'
204
+ ? state.currentDungeon?.id || 'dungeon'
205
+ : `${state.currentTown.id}_center`;
206
+ return {
207
+ fromRoomId: fromId,
208
+ toRoomId: toId,
209
+ startTime: Date.now() - (state.travelProgress * state.travelDuration * 1000),
210
+ duration: state.travelDuration,
211
+ progress: state.travelProgress,
212
+ events: [],
213
+ };
214
+ }
215
+ /**
216
+ * Convert IdleGameState to GameState
217
+ */
218
+ export function adaptIdleGameStateToGameState(idleState) {
219
+ let gameMap;
220
+ let currentRoom;
221
+ if (idleState.phase === 'in_dungeon' && idleState.currentDungeon && idleState.dungeonRunner) {
222
+ // In dungeon - use dungeon map
223
+ const runnerState = idleState.dungeonRunner.getState();
224
+ gameMap = dungeonToGameMap(idleState.currentDungeon, runnerState);
225
+ // Get current room
226
+ const currentRoomId = runnerState?.currentRoomId || gameMap.startRoomId;
227
+ currentRoom = gameMap.rooms.get(currentRoomId) || {
228
+ id: 'unknown',
229
+ type: 'empty',
230
+ position: { x: 0, y: 0, floor: 1 },
231
+ name: 'Unknown',
232
+ description: 'You are lost...',
233
+ isExplored: true,
234
+ isCleared: false,
235
+ connections: [],
236
+ };
237
+ }
238
+ else {
239
+ // In town or traveling - use town map
240
+ gameMap = townToGameMap(idleState.currentTown);
241
+ currentRoom = gameMap.rooms.get(gameMap.startRoomId) || {
242
+ id: idleState.currentTown.id,
243
+ type: 'town',
244
+ position: { x: 0, y: 0, floor: 1 },
245
+ name: idleState.currentTown.name,
246
+ description: idleState.currentTown.description,
247
+ isExplored: true,
248
+ isCleared: true,
249
+ connections: [],
250
+ };
251
+ }
252
+ // Convert phase
253
+ let phase = convertPhase(idleState.phase);
254
+ // Check if in combat
255
+ if (idleState.phase === 'in_dungeon' && idleState.dungeonRunner) {
256
+ const runnerState = idleState.dungeonRunner.getState();
257
+ if (runnerState?.activeCombat) {
258
+ phase = 'combat';
259
+ }
260
+ }
261
+ // Build GameState
262
+ const gameState = {
263
+ phase,
264
+ player: idleState.player,
265
+ currentMap: gameMap,
266
+ currentRoom,
267
+ pendingEvents: [],
268
+ travelState: createTravelState(idleState),
269
+ gameTime: idleState.statistics.totalPlayTime,
270
+ lastUpdateTime: Date.now(),
271
+ isPaused: false,
272
+ };
273
+ // Add combat state if in combat
274
+ if (phase === 'combat' && idleState.dungeonRunner) {
275
+ const runnerState = idleState.dungeonRunner.getState();
276
+ if (runnerState?.activeCombat) {
277
+ gameState.combat = {
278
+ isActive: true,
279
+ enemies: runnerState.activeCombat.enemies.map(e => ({
280
+ ...e,
281
+ id: e.id || `enemy_${Math.random().toString(36).substr(2, 9)}`,
282
+ })),
283
+ turn: runnerState.activeCombat.turn,
284
+ playerHp: idleState.player.stats.hp,
285
+ log: runnerState.activeCombat.log || [],
286
+ strategy: 'balanced',
287
+ startTime: Date.now(),
288
+ estimatedEndTime: Date.now() + 60000,
289
+ };
290
+ }
291
+ }
292
+ return gameState;
293
+ }
294
+ /**
295
+ * Get connected rooms for UI display
296
+ * Returns facilities in town or adjacent rooms in dungeon
297
+ */
298
+ export function getConnectedRoomsForUI(idleState) {
299
+ if (idleState.phase === 'in_town' || idleState.phase === 'resting') {
300
+ // Show facilities as connected rooms
301
+ return idleState.currentTown.facilities.map((facility, index) => facilityToRoom(facility, index, idleState.currentTown.id));
302
+ }
303
+ if (idleState.phase === 'in_dungeon' && idleState.currentDungeon && idleState.dungeonRunner) {
304
+ const runnerState = idleState.dungeonRunner.getState();
305
+ if (!runnerState)
306
+ return [];
307
+ const currentLevelIndex = runnerState.currentLevel;
308
+ const currentLevel = idleState.currentDungeon.levels[currentLevelIndex];
309
+ if (!currentLevel)
310
+ return [];
311
+ const currentRoom = currentLevel.rooms.find(r => r.id === runnerState.currentRoomId);
312
+ if (!currentRoom)
313
+ return [];
314
+ // Get connected rooms
315
+ return currentRoom.connections
316
+ .map(conn => {
317
+ const room = currentLevel.rooms.find(r => r.id === conn.targetRoomId);
318
+ return room ? dungeonRoomToRoom(room) : null;
319
+ })
320
+ .filter((r) => r !== null);
321
+ }
322
+ return [];
323
+ }
324
+ /**
325
+ * Get the team leader as a Player for legacy UI components
326
+ */
327
+ export function getTeamLeaderAsPlayer(team, actors) {
328
+ const leaderId = getTeamLeaderId(team);
329
+ if (!leaderId)
330
+ return null;
331
+ const leader = actors[leaderId];
332
+ if (!leader)
333
+ return null;
334
+ // Convert actor to player, using team's shared gold
335
+ const player = actorToPlayer(leader);
336
+ player.stats.gold = team.sharedGold;
337
+ player.inventory = [...leader.inventory, ...team.sharedInventory];
338
+ return player;
339
+ }
340
+ export function getTeamStatsSummary(team, actors) {
341
+ const activeActors = getActiveMembers(team, actors);
342
+ const aliveActors = activeActors.filter(a => a.stats.hp > 0);
343
+ return {
344
+ totalHp: activeActors.reduce((sum, a) => sum + a.stats.hp, 0),
345
+ totalMaxHp: activeActors.reduce((sum, a) => sum + a.stats.maxHp, 0),
346
+ averageLevel: activeActors.length > 0
347
+ ? Math.floor(activeActors.reduce((sum, a) => sum + a.stats.level, 0) / activeActors.length)
348
+ : 0,
349
+ totalAttack: activeActors.reduce((sum, a) => sum + a.stats.attack, 0),
350
+ totalDefense: activeActors.reduce((sum, a) => sum + a.stats.defense, 0),
351
+ activeCount: activeActors.length,
352
+ aliveCount: aliveActors.length,
353
+ };
354
+ }
355
+ /**
356
+ * Get HP status string for all team members
357
+ * Format: "Alice: 80/100 | Bob: 50/80 | ..."
358
+ */
359
+ export function getTeamHpStatusString(team, actors) {
360
+ const activeActors = getActiveMembers(team, actors);
361
+ return activeActors
362
+ .map(a => `${a.name}: ${a.stats.hp}/${a.stats.maxHp}`)
363
+ .join(' | ');
364
+ }
365
+ /**
366
+ * Get compact team status for status bar
367
+ * Format: "Team (3/4): Lv5 HP:85%"
368
+ */
369
+ export function getCompactTeamStatus(team, actors) {
370
+ const summary = getTeamStatsSummary(team, actors);
371
+ const hpPercent = summary.totalMaxHp > 0
372
+ ? Math.floor((summary.totalHp / summary.totalMaxHp) * 100)
373
+ : 0;
374
+ return `Team (${summary.aliveCount}/${summary.activeCount}): Lv${summary.averageLevel} HP:${hpPercent}%`;
375
+ }
376
+ /**
377
+ * Convert team combat state to legacy combat state for UI
378
+ * Uses the team leader's perspective
379
+ */
380
+ export function teamCombatToLegacyCombat(teamCombat, team, actors) {
381
+ // Calculate total team HP for legacy display
382
+ const totalHp = team.activeMembers.reduce((sum, id) => {
383
+ return sum + (teamCombat.actorHp[id] ?? 0);
384
+ }, 0);
385
+ return {
386
+ isActive: teamCombat.isActive,
387
+ turn: teamCombat.turn,
388
+ playerHp: totalHp,
389
+ enemies: teamCombat.enemies,
390
+ log: teamCombat.log,
391
+ strategy: 'balanced',
392
+ startTime: teamCombat.startTime,
393
+ estimatedEndTime: teamCombat.estimatedEndTime,
394
+ };
395
+ }
396
+ //# sourceMappingURL=StateAdapter.js.map
397
+ //# debugId=6df3027b-b65b-5cb9-bc3c-073f22c9770e
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateAdapter.js","sources":["core/StateAdapter.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * State Adapter - Converts IdleGameState to GameState format for UI compatibility\r\n *\r\n * This adapter bridges the new IdleGameManager with the existing GameUI\r\n * by converting the IdleRPG state structure to the legacy GameState format.\r\n *\r\n * Also provides team-aware state conversion for the new multi-character system.\r\n */\r\n\r\nimport type {\r\n GameState,\r\n GameMap,\r\n Room,\r\n RoomType,\r\n Player,\r\n TravelState,\r\n GameEvent,\r\n Town,\r\n Dungeon,\r\n DungeonRoom,\r\n TownFacility,\r\n Actor,\r\n Team,\r\n TeamCombatState,\r\n} from './types.js';\r\nimport type { IdleGameState, IdleGamePhase } from './IdleGameManager.js';\r\nimport type { DungeonRunnerState } from './DungeonRunner.js';\r\nimport { actorToPlayer } from './Actor.js';\r\nimport { getActiveMembers, getTeamLeaderId } from './Team.js';\r\n\r\n/**\r\n * Convert IdleGamePhase to legacy GamePhase\r\n */\r\nfunction convertPhase(phase: IdleGamePhase): 'exploring' | 'traveling' | 'combat' | 'dialog' {\r\n switch (phase) {\r\n case 'in_town':\r\n case 'resting':\r\n case 'dead':\r\n return 'exploring';\r\n case 'traveling_to_dungeon':\r\n case 'returning_to_town':\r\n return 'traveling';\r\n case 'in_dungeon':\r\n return 'exploring'; // or 'combat' if in combat\r\n default:\r\n return 'exploring';\r\n }\r\n}\r\n\r\n/**\r\n * Pre-defined positions for facilities around the town center\r\n * Creates a radial layout around the center (which is at 2, 2)\r\n */\r\nconst FACILITY_POSITIONS: Array<{ x: number; y: number }> = [\r\n { x: 2, y: 0 }, // North\r\n { x: 4, y: 1 }, // NE\r\n { x: 4, y: 3 }, // SE\r\n { x: 2, y: 4 }, // South\r\n { x: 0, y: 3 }, // SW\r\n { x: 0, y: 1 }, // NW\r\n { x: 3, y: 0 }, // N-extra\r\n { x: 1, y: 4 }, // S-extra\r\n];\r\n\r\n/**\r\n * Create a Room from a TownFacility\r\n */\r\nfunction facilityToRoom(facility: TownFacility, index: number, townId: string): Room {\r\n const typeMap: Record<string, RoomType> = {\r\n inn: 'rest',\r\n shop: 'shop',\r\n blacksmith: 'shop',\r\n tavern: 'rest',\r\n guild: 'event',\r\n temple: 'rest',\r\n bank: 'shop',\r\n };\r\n\r\n // Use pre-defined positions or fallback to grid layout\r\n const pos = FACILITY_POSITIONS[index] || { x: (index % 3) * 2, y: Math.floor(index / 3) * 2 };\r\n\r\n return {\r\n id: `${townId}_facility_${index}`,\r\n type: typeMap[facility.type] || 'empty',\r\n position: { x: pos.x, y: pos.y, floor: 1 },\r\n name: facility.name,\r\n description: facility.description,\r\n isExplored: true,\r\n isCleared: true,\r\n connections: [],\r\n };\r\n}\r\n\r\n/**\r\n * Create a GameMap from a Town\r\n */\r\nfunction townToGameMap(town: Town): GameMap {\r\n const rooms = new Map<string, Room>();\r\n\r\n // Town center at (2, 2) - center of the radial layout\r\n const centerRoom: Room = {\r\n id: `${town.id}_center`,\r\n type: 'town',\r\n position: { x: 2, y: 2, floor: 1 },\r\n name: town.name,\r\n description: town.description,\r\n isExplored: true,\r\n isCleared: true,\r\n connections: [],\r\n };\r\n rooms.set(centerRoom.id, centerRoom);\r\n\r\n // Create rooms for each facility (positioned around center)\r\n town.facilities.forEach((facility, index) => {\r\n const room = facilityToRoom(facility, index, town.id);\r\n room.connections.push(centerRoom.id);\r\n centerRoom.connections.push(room.id);\r\n rooms.set(room.id, room);\r\n });\r\n\r\n // Dungeon exits positioned to the right of the town\r\n const dungeonExitPositions = [\r\n { x: 5, y: 2 }, // East\r\n { x: 5, y: 1 }, // NE\r\n { x: 5, y: 3 }, // SE\r\n ];\r\n\r\n // Create exit rooms for connected dungeons\r\n town.connectedDungeons.forEach((dungeonId, index) => {\r\n const pos = dungeonExitPositions[index] || { x: 5, y: index };\r\n const exitRoom: Room = {\r\n id: `${town.id}_dungeon_exit_${index}`,\r\n type: 'dungeon_entrance',\r\n position: { x: pos.x, y: pos.y, floor: 1 },\r\n name: `→ ${dungeonId}`,\r\n description: 'A path leading to adventure...',\r\n isExplored: true,\r\n isCleared: true,\r\n connections: [centerRoom.id],\r\n };\r\n centerRoom.connections.push(exitRoom.id);\r\n rooms.set(exitRoom.id, exitRoom);\r\n });\r\n\r\n return {\r\n id: town.id,\r\n name: town.name,\r\n type: 'town',\r\n floor: 1,\r\n rooms,\r\n startRoomId: centerRoom.id,\r\n generatedAt: Date.now(),\r\n };\r\n}\r\n\r\n/**\r\n * Convert DungeonRoom to Room\r\n */\r\nfunction dungeonRoomToRoom(dungeonRoom: DungeonRoom): Room {\r\n const typeMap: Record<string, RoomType> = {\r\n entrance: 'dungeon_entrance',\r\n combat: 'combat',\r\n treasure: 'treasure',\r\n rest: 'rest',\r\n puzzle: 'event',\r\n trap: 'event',\r\n boss: 'combat',\r\n exit: 'dungeon_entrance',\r\n empty: 'empty',\r\n shop: 'shop',\r\n shrine: 'event',\r\n dead_end: 'empty',\r\n safe_room: 'rest',\r\n };\r\n\r\n return {\r\n id: dungeonRoom.id,\r\n type: typeMap[dungeonRoom.type] || 'empty',\r\n position: { ...dungeonRoom.position, floor: 1 },\r\n name: dungeonRoom.name,\r\n description: dungeonRoom.description,\r\n isExplored: dungeonRoom.isExplored,\r\n isCleared: dungeonRoom.isCleared,\r\n connections: dungeonRoom.connections.map(c => c.targetRoomId),\r\n enemies: dungeonRoom.content.enemies,\r\n items: dungeonRoom.content.items,\r\n };\r\n}\r\n\r\n/**\r\n * Create a GameMap from Dungeon and DungeonRunnerState\r\n */\r\nfunction dungeonToGameMap(dungeon: Dungeon, runnerState: DungeonRunnerState | null): GameMap {\r\n const rooms = new Map<string, Room>();\r\n\r\n // Get current level\r\n const currentLevelIndex = runnerState?.currentLevel ?? 0;\r\n const currentLevel = dungeon.levels[currentLevelIndex];\r\n\r\n if (currentLevel) {\r\n // Convert all rooms in current level\r\n for (const dungeonRoom of currentLevel.rooms) {\r\n const room = dungeonRoomToRoom(dungeonRoom);\r\n\r\n // Mark explored rooms\r\n if (runnerState?.exploredRooms.has(dungeonRoom.id)) {\r\n room.isExplored = true;\r\n }\r\n if (runnerState?.clearedRooms.has(dungeonRoom.id)) {\r\n room.isCleared = true;\r\n }\r\n\r\n rooms.set(room.id, room);\r\n }\r\n }\r\n\r\n const startRoomId = currentLevel?.entranceRoomId || '';\r\n\r\n return {\r\n id: dungeon.id,\r\n name: `${dungeon.name} - Level ${currentLevelIndex + 1}`,\r\n type: 'dungeon',\r\n floor: currentLevelIndex + 1,\r\n rooms,\r\n startRoomId,\r\n bossRoomId: currentLevel?.bossRoomId,\r\n generatedAt: Date.now(),\r\n };\r\n}\r\n\r\n/**\r\n * Create TravelState from IdleGameState\r\n */\r\nfunction createTravelState(state: IdleGameState): TravelState | undefined {\r\n if (state.phase !== 'traveling_to_dungeon' && state.phase !== 'returning_to_town') {\r\n return undefined;\r\n }\r\n\r\n const fromId = state.phase === 'traveling_to_dungeon'\r\n ? `${state.currentTown.id}_center`\r\n : state.currentDungeon?.id || 'dungeon';\r\n\r\n const toId = state.phase === 'traveling_to_dungeon'\r\n ? state.currentDungeon?.id || 'dungeon'\r\n : `${state.currentTown.id}_center`;\r\n\r\n return {\r\n fromRoomId: fromId,\r\n toRoomId: toId,\r\n startTime: Date.now() - (state.travelProgress * state.travelDuration * 1000),\r\n duration: state.travelDuration,\r\n progress: state.travelProgress,\r\n events: [],\r\n };\r\n}\r\n\r\n/**\r\n * Convert IdleGameState to GameState\r\n */\r\nexport function adaptIdleGameStateToGameState(idleState: IdleGameState): GameState {\r\n let gameMap: GameMap;\r\n let currentRoom: Room;\r\n\r\n if (idleState.phase === 'in_dungeon' && idleState.currentDungeon && idleState.dungeonRunner) {\r\n // In dungeon - use dungeon map\r\n const runnerState = idleState.dungeonRunner.getState();\r\n gameMap = dungeonToGameMap(idleState.currentDungeon, runnerState);\r\n\r\n // Get current room\r\n const currentRoomId = runnerState?.currentRoomId || gameMap.startRoomId;\r\n currentRoom = gameMap.rooms.get(currentRoomId) || {\r\n id: 'unknown',\r\n type: 'empty',\r\n position: { x: 0, y: 0, floor: 1 },\r\n name: 'Unknown',\r\n description: 'You are lost...',\r\n isExplored: true,\r\n isCleared: false,\r\n connections: [],\r\n };\r\n } else {\r\n // In town or traveling - use town map\r\n gameMap = townToGameMap(idleState.currentTown);\r\n currentRoom = gameMap.rooms.get(gameMap.startRoomId) || {\r\n id: idleState.currentTown.id,\r\n type: 'town',\r\n position: { x: 0, y: 0, floor: 1 },\r\n name: idleState.currentTown.name,\r\n description: idleState.currentTown.description,\r\n isExplored: true,\r\n isCleared: true,\r\n connections: [],\r\n };\r\n }\r\n\r\n // Convert phase\r\n let phase = convertPhase(idleState.phase);\r\n\r\n // Check if in combat\r\n if (idleState.phase === 'in_dungeon' && idleState.dungeonRunner) {\r\n const runnerState = idleState.dungeonRunner.getState();\r\n if (runnerState?.activeCombat) {\r\n phase = 'combat';\r\n }\r\n }\r\n\r\n // Build GameState\r\n const gameState: GameState = {\r\n phase,\r\n player: idleState.player,\r\n currentMap: gameMap,\r\n currentRoom,\r\n pendingEvents: [],\r\n travelState: createTravelState(idleState),\r\n gameTime: idleState.statistics.totalPlayTime,\r\n lastUpdateTime: Date.now(),\r\n isPaused: false,\r\n };\r\n\r\n // Add combat state if in combat\r\n if (phase === 'combat' && idleState.dungeonRunner) {\r\n const runnerState = idleState.dungeonRunner.getState();\r\n if (runnerState?.activeCombat) {\r\n gameState.combat = {\r\n isActive: true,\r\n enemies: runnerState.activeCombat.enemies.map(e => ({\r\n ...e,\r\n id: e.id || `enemy_${Math.random().toString(36).substr(2, 9)}`,\r\n })),\r\n turn: runnerState.activeCombat.turn,\r\n playerHp: idleState.player.stats.hp,\r\n log: runnerState.activeCombat.log || [],\r\n strategy: 'balanced',\r\n startTime: Date.now(),\r\n estimatedEndTime: Date.now() + 60000,\r\n };\r\n }\r\n }\r\n\r\n return gameState;\r\n}\r\n\r\n/**\r\n * Get connected rooms for UI display\r\n * Returns facilities in town or adjacent rooms in dungeon\r\n */\r\nexport function getConnectedRoomsForUI(idleState: IdleGameState): Room[] {\r\n if (idleState.phase === 'in_town' || idleState.phase === 'resting') {\r\n // Show facilities as connected rooms\r\n return idleState.currentTown.facilities.map((facility, index) =>\r\n facilityToRoom(facility, index, idleState.currentTown.id)\r\n );\r\n }\r\n\r\n if (idleState.phase === 'in_dungeon' && idleState.currentDungeon && idleState.dungeonRunner) {\r\n const runnerState = idleState.dungeonRunner.getState();\r\n if (!runnerState) return [];\r\n\r\n const currentLevelIndex = runnerState.currentLevel;\r\n const currentLevel = idleState.currentDungeon.levels[currentLevelIndex];\r\n if (!currentLevel) return [];\r\n\r\n const currentRoom = currentLevel.rooms.find(r => r.id === runnerState.currentRoomId);\r\n if (!currentRoom) return [];\r\n\r\n // Get connected rooms\r\n return currentRoom.connections\r\n .map(conn => {\r\n const room = currentLevel.rooms.find(r => r.id === conn.targetRoomId);\r\n return room ? dungeonRoomToRoom(room) : null;\r\n })\r\n .filter((r): r is Room => r !== null);\r\n }\r\n\r\n return [];\r\n}\r\n\r\n// ============================================================================\r\n// Team-aware State Adapters\r\n// ============================================================================\r\n\r\n/**\r\n * Team-aware game state for the new multi-character system\r\n */\r\nexport interface TeamGameState {\r\n phase: 'exploring' | 'traveling' | 'combat' | 'dialog';\r\n team: Team;\r\n actors: Record<string, Actor>;\r\n activeActors: Actor[]; // Currently active team members\r\n leader: Actor | null; // Team leader for display\r\n currentMap: GameMap;\r\n currentRoom: Room;\r\n combat?: TeamCombatState;\r\n pendingEvents: GameEvent[];\r\n travelState?: TravelState;\r\n gameTime: number;\r\n lastUpdateTime: number;\r\n isPaused: boolean;\r\n}\r\n\r\n/**\r\n * Get the team leader as a Player for legacy UI components\r\n */\r\nexport function getTeamLeaderAsPlayer(team: Team, actors: Record<string, Actor>): Player | null {\r\n const leaderId = getTeamLeaderId(team);\r\n if (!leaderId) return null;\r\n\r\n const leader = actors[leaderId];\r\n if (!leader) return null;\r\n\r\n // Convert actor to player, using team's shared gold\r\n const player = actorToPlayer(leader);\r\n player.stats.gold = team.sharedGold;\r\n player.inventory = [...leader.inventory, ...team.sharedInventory];\r\n return player;\r\n}\r\n\r\n/**\r\n * Get summary stats for the entire team\r\n */\r\nexport interface TeamStatsSummary {\r\n totalHp: number;\r\n totalMaxHp: number;\r\n averageLevel: number;\r\n totalAttack: number;\r\n totalDefense: number;\r\n activeCount: number;\r\n aliveCount: number;\r\n}\r\n\r\nexport function getTeamStatsSummary(team: Team, actors: Record<string, Actor>): TeamStatsSummary {\r\n const activeActors = getActiveMembers(team, actors);\r\n const aliveActors = activeActors.filter(a => a.stats.hp > 0);\r\n\r\n return {\r\n totalHp: activeActors.reduce((sum, a) => sum + a.stats.hp, 0),\r\n totalMaxHp: activeActors.reduce((sum, a) => sum + a.stats.maxHp, 0),\r\n averageLevel: activeActors.length > 0\r\n ? Math.floor(activeActors.reduce((sum, a) => sum + a.stats.level, 0) / activeActors.length)\r\n : 0,\r\n totalAttack: activeActors.reduce((sum, a) => sum + a.stats.attack, 0),\r\n totalDefense: activeActors.reduce((sum, a) => sum + a.stats.defense, 0),\r\n activeCount: activeActors.length,\r\n aliveCount: aliveActors.length,\r\n };\r\n}\r\n\r\n/**\r\n * Get HP status string for all team members\r\n * Format: \"Alice: 80/100 | Bob: 50/80 | ...\"\r\n */\r\nexport function getTeamHpStatusString(team: Team, actors: Record<string, Actor>): string {\r\n const activeActors = getActiveMembers(team, actors);\r\n return activeActors\r\n .map(a => `${a.name}: ${a.stats.hp}/${a.stats.maxHp}`)\r\n .join(' | ');\r\n}\r\n\r\n/**\r\n * Get compact team status for status bar\r\n * Format: \"Team (3/4): Lv5 HP:85%\"\r\n */\r\nexport function getCompactTeamStatus(team: Team, actors: Record<string, Actor>): string {\r\n const summary = getTeamStatsSummary(team, actors);\r\n const hpPercent = summary.totalMaxHp > 0\r\n ? Math.floor((summary.totalHp / summary.totalMaxHp) * 100)\r\n : 0;\r\n return `Team (${summary.aliveCount}/${summary.activeCount}): Lv${summary.averageLevel} HP:${hpPercent}%`;\r\n}\r\n\r\n/**\r\n * Convert team combat state to legacy combat state for UI\r\n * Uses the team leader's perspective\r\n */\r\nexport function teamCombatToLegacyCombat(\r\n teamCombat: TeamCombatState,\r\n team: Team,\r\n actors: Record<string, Actor>\r\n): {\r\n isActive: boolean;\r\n turn: number;\r\n playerHp: number;\r\n enemies: typeof teamCombat.enemies;\r\n log: typeof teamCombat.log;\r\n strategy: 'balanced';\r\n startTime: number;\r\n estimatedEndTime: number;\r\n} {\r\n // Calculate total team HP for legacy display\r\n const totalHp = team.activeMembers.reduce((sum, id) => {\r\n return sum + (teamCombat.actorHp[id] ?? 0);\r\n }, 0);\r\n\r\n return {\r\n isActive: teamCombat.isActive,\r\n turn: teamCombat.turn,\r\n playerHp: totalHp,\r\n enemies: teamCombat.enemies,\r\n log: teamCombat.log,\r\n strategy: 'balanced',\r\n startTime: teamCombat.startTime,\r\n estimatedEndTime: teamCombat.estimatedEndTime,\r\n };\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"6df3027b-b65b-5cb9-bc3c-073f22c9770e"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Team - Functions for creating and managing character teams
3
+ *
4
+ * A Team consists of up to 4 active members and any number of reserve members.
5
+ * Teams share inventory, gold, and position on the map.
6
+ */
7
+ import type { Team, Actor, Player, TeamFormation, StrategyStateMachine, CurrentLocation, Position, InventoryItem } from './types.js';
8
+ /**
9
+ * Maximum number of active members in a team
10
+ */
11
+ export declare const MAX_ACTIVE_MEMBERS = 4;
12
+ /**
13
+ * Default team location (starting town)
14
+ */
15
+ export declare const DEFAULT_LOCATION: CurrentLocation;
16
+ /**
17
+ * Create a new empty team
18
+ */
19
+ export declare function createTeam(name: string, leaderId?: string): Team;
20
+ /**
21
+ * Create a team with a single actor (for migration from single-player)
22
+ */
23
+ export declare function createTeamWithActor(actor: Actor, teamName?: string): Team;
24
+ /**
25
+ * Create a team from a legacy Player
26
+ * Used for save migration
27
+ */
28
+ export declare function createTeamFromPlayer(player: Player): {
29
+ team: Team;
30
+ actor: Actor;
31
+ };
32
+ /**
33
+ * Add an actor to the team's active roster
34
+ * Returns false if team is full
35
+ */
36
+ export declare function addActiveTeamMember(team: Team, actor: Actor): boolean;
37
+ /**
38
+ * Move an actor to the reserve roster
39
+ */
40
+ export declare function moveToReserve(team: Team, actor: Actor): void;
41
+ /**
42
+ * Remove an actor from the team entirely
43
+ */
44
+ export declare function removeFromTeam(team: Team, actor: Actor): void;
45
+ /**
46
+ * Swap positions of two active members
47
+ */
48
+ export declare function swapActivePositions(team: Team, index1: number, index2: number): boolean;
49
+ /**
50
+ * Set the team leader (move to position 0)
51
+ */
52
+ export declare function setTeamLeader(team: Team, actorId: string): boolean;
53
+ /**
54
+ * Get the team leader ID
55
+ */
56
+ export declare function getTeamLeaderId(team: Team): string | null;
57
+ /**
58
+ * Get actors that can fight (active status, HP > 0)
59
+ */
60
+ export declare function getActiveActorsForCombat(team: Team, actors: Record<string, Actor>): Actor[];
61
+ /**
62
+ * Get all active members regardless of combat status
63
+ */
64
+ export declare function getActiveMembers(team: Team, actors: Record<string, Actor>): Actor[];
65
+ /**
66
+ * Get reserve members
67
+ */
68
+ export declare function getReserveMembers(team: Team, actors: Record<string, Actor>): Actor[];
69
+ /**
70
+ * Check if all active members are dead
71
+ */
72
+ export declare function isTeamWiped(team: Team, actors: Record<string, Actor>): boolean;
73
+ /**
74
+ * Get total team level (sum of all active members)
75
+ */
76
+ export declare function getTeamTotalLevel(team: Team, actors: Record<string, Actor>): number;
77
+ /**
78
+ * Get average team level
79
+ */
80
+ export declare function getTeamAverageLevel(team: Team, actors: Record<string, Actor>): number;
81
+ /**
82
+ * Set the team's formation
83
+ */
84
+ export declare function setTeamFormation(team: Team, formation: TeamFormation): void;
85
+ /**
86
+ * Get the position index for an actor in the team
87
+ * Returns -1 if not found
88
+ */
89
+ export declare function getActorFormationPosition(team: Team, actorId: string): number;
90
+ /**
91
+ * Check if an actor is on the frontline based on formation
92
+ */
93
+ export declare function isActorOnFrontline(team: Team, actorId: string): boolean;
94
+ /**
95
+ * Get damage multiplier for an actor based on formation
96
+ */
97
+ export declare function getFormationDamageMultiplier(team: Team, actorId: string): number;
98
+ /**
99
+ * Add gold to team's shared pool
100
+ */
101
+ export declare function addTeamGold(team: Team, amount: number): void;
102
+ /**
103
+ * Spend gold from team's shared pool
104
+ * Returns true if successful
105
+ */
106
+ export declare function spendTeamGold(team: Team, amount: number): boolean;
107
+ /**
108
+ * Add item to team's shared inventory
109
+ */
110
+ export declare function addItemToTeam(team: Team, item: InventoryItem): void;
111
+ /**
112
+ * Remove item from team's shared inventory
113
+ * Returns true if successful
114
+ */
115
+ export declare function removeItemFromTeam(team: Team, itemId: string, quantity?: number): boolean;
116
+ /**
117
+ * Distribute experience evenly among active team members
118
+ * Returns actors that leveled up
119
+ */
120
+ export declare function distributeTeamExperience(team: Team, actors: Record<string, Actor>, totalExp: number, addExperienceFn: (actor: Actor, exp: number) => boolean): Actor[];
121
+ /**
122
+ * Update team position
123
+ */
124
+ export declare function setTeamPosition(team: Team, position: Position): void;
125
+ /**
126
+ * Update team location
127
+ */
128
+ export declare function setTeamLocation(team: Team, location: CurrentLocation): void;
129
+ /**
130
+ * Update team strategy
131
+ */
132
+ export declare function setTeamStrategy(team: Team, strategy: StrategyStateMachine): void;
133
+ /**
134
+ * Get team summary for display
135
+ */
136
+ export declare function getTeamSummary(team: Team, actors: Record<string, Actor>): string;
137
+ /**
138
+ * Get formation display name
139
+ */
140
+ export declare function getFormationDisplayName(formation: TeamFormation): string;
141
+ /**
142
+ * Get formation description
143
+ */
144
+ export declare function getFormationDescription(formation: TeamFormation): string;
145
+ //# sourceMappingURL=Team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Team.d.ts","sourceRoot":"/","sources":["core/Team.ts"],"names":[],"mappings":"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"}