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,75 @@
1
+ /**
2
+ * WorkshopHandler - Handles affix workshop functionality
3
+ *
4
+ * Extracted from main.ts to reduce file size.
5
+ * Manages affix viewing, forging, and research.
6
+ */
7
+ import type { IdleGameManager } from '../core/IdleGameManager.js';
8
+ export type WorkshopSubMode = 'main' | 'view' | 'forge' | 'research';
9
+ /**
10
+ * Handles affix workshop functionality
11
+ */
12
+ export declare class WorkshopHandler {
13
+ private idleGameManager;
14
+ private addLog;
15
+ private _workshopMode;
16
+ private _subMode;
17
+ constructor(idleGameManager: IdleGameManager, addLog: (message: string) => void);
18
+ /**
19
+ * Check if in workshop mode
20
+ */
21
+ get workshopMode(): boolean;
22
+ /**
23
+ * Get current sub-mode
24
+ */
25
+ get subMode(): WorkshopSubMode;
26
+ /**
27
+ * Exit workshop
28
+ */
29
+ exit(): void;
30
+ /**
31
+ * Enter workshop
32
+ */
33
+ enter(): void;
34
+ /**
35
+ * Show workshop main menu
36
+ */
37
+ showMenu(): void;
38
+ /**
39
+ * Handle workshop input
40
+ */
41
+ handleInput(num: number): void;
42
+ /**
43
+ * Show affix collection
44
+ */
45
+ private showCollection;
46
+ /**
47
+ * Handle view affix input
48
+ */
49
+ private handleViewInput;
50
+ /**
51
+ * Show affix details
52
+ */
53
+ private showAffixDetails;
54
+ /**
55
+ * Show forge menu
56
+ */
57
+ private showForgeMenu;
58
+ /**
59
+ * Handle forge input
60
+ */
61
+ private handleForgeInput;
62
+ /**
63
+ * Show research menu
64
+ */
65
+ private showResearchMenu;
66
+ /**
67
+ * Get a hint for an unknown affix
68
+ */
69
+ private getAffixHint;
70
+ /**
71
+ * Handle research input
72
+ */
73
+ private handleResearchInput;
74
+ }
75
+ //# sourceMappingURL=WorkshopHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkshopHandler.d.ts","sourceRoot":"/","sources":["handlers/WorkshopHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAErE;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAA4B;IAG1C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAA2B;gBAGzC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAMnC;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,eAAe,CAE7B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI,IAAI;IAmBhB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA2B9B;;OAEG;IACH,OAAO,CAAC,cAAc;IA+CtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmCvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsCrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgExB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAwC5B"}
@@ -0,0 +1,401 @@
1
+ /**
2
+ * WorkshopHandler - Handles affix workshop functionality
3
+ *
4
+ * Extracted from main.ts to reduce file size.
5
+ * Manages affix viewing, forging, and research.
6
+ */
7
+
8
+ !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]="f0e27d1e-4550-530f-b84d-ba384573fc70")}catch(e){}}();
9
+ import { getAffixRegistry } from '../affix/AffixRegistry.js';
10
+ /**
11
+ * Handles affix workshop functionality
12
+ */
13
+ export class WorkshopHandler {
14
+ idleGameManager;
15
+ addLog;
16
+ // State
17
+ _workshopMode = false;
18
+ _subMode = 'main';
19
+ constructor(idleGameManager, addLog) {
20
+ this.idleGameManager = idleGameManager;
21
+ this.addLog = addLog;
22
+ }
23
+ /**
24
+ * Check if in workshop mode
25
+ */
26
+ get workshopMode() {
27
+ return this._workshopMode;
28
+ }
29
+ /**
30
+ * Get current sub-mode
31
+ */
32
+ get subMode() {
33
+ return this._subMode;
34
+ }
35
+ /**
36
+ * Exit workshop
37
+ */
38
+ exit() {
39
+ this._workshopMode = false;
40
+ this._subMode = 'main';
41
+ this.addLog('Exiting workshop...');
42
+ }
43
+ /**
44
+ * Enter workshop
45
+ */
46
+ enter() {
47
+ this._workshopMode = true;
48
+ this._subMode = 'main';
49
+ this.showMenu();
50
+ }
51
+ /**
52
+ * Show workshop main menu
53
+ */
54
+ showMenu() {
55
+ const player = this.idleGameManager.getState()?.player;
56
+ if (!player)
57
+ return;
58
+ const unlockedCount = player.unlockedAffixes.length;
59
+ const registry = getAffixRegistry();
60
+ const totalAffixes = registry.getAll().length;
61
+ this.addLog('════════ AFFIX WORKSHOP ════════');
62
+ this.addLog(`Affixes discovered: ${unlockedCount}/${totalAffixes}`);
63
+ this.addLog('');
64
+ this.addLog('[1] View Affixes - Browse your collection');
65
+ this.addLog('[2] Forge - Apply affixes to weapons');
66
+ this.addLog('[3] Research - Study unknown affixes');
67
+ this.addLog('[0] Exit Workshop');
68
+ this.addLog('');
69
+ this.addLog('Select an option:');
70
+ }
71
+ /**
72
+ * Handle workshop input
73
+ */
74
+ handleInput(num) {
75
+ if (this._subMode === 'main') {
76
+ switch (num) {
77
+ case 0:
78
+ this.exit();
79
+ break;
80
+ case 1:
81
+ this.showCollection();
82
+ break;
83
+ case 2:
84
+ this.showForgeMenu();
85
+ break;
86
+ case 3:
87
+ this.showResearchMenu();
88
+ break;
89
+ default:
90
+ this.addLog('Invalid option.');
91
+ }
92
+ }
93
+ else if (this._subMode === 'view') {
94
+ this.handleViewInput(num);
95
+ }
96
+ else if (this._subMode === 'forge') {
97
+ this.handleForgeInput(num);
98
+ }
99
+ else if (this._subMode === 'research') {
100
+ this.handleResearchInput(num);
101
+ }
102
+ }
103
+ /**
104
+ * Show affix collection
105
+ */
106
+ showCollection() {
107
+ const player = this.idleGameManager.getState()?.player;
108
+ if (!player)
109
+ return;
110
+ this._subMode = 'view';
111
+ const registry = getAffixRegistry();
112
+ const allAffixes = registry.getAll();
113
+ this.addLog('────── Your Affixes ──────');
114
+ const prefixes = allAffixes.filter(a => a.type === 'prefix');
115
+ const suffixes = allAffixes.filter(a => a.type === 'suffix');
116
+ const legendaries = allAffixes.filter(a => a.type === 'legendary');
117
+ const isUnlocked = (id) => player.unlockedAffixes.includes(id);
118
+ const raritySymbol = (r) => {
119
+ const symbols = {
120
+ common: '◯', uncommon: '●', rare: '◆', epic: '★', legendary: '✦'
121
+ };
122
+ return symbols[r] || '?';
123
+ };
124
+ this.addLog('');
125
+ this.addLog('PREFIXES:');
126
+ prefixes.slice(0, 4).forEach((a, i) => {
127
+ const status = isUnlocked(a.id) ? `${raritySymbol(a.rarity)} ${a.name}` : `? ???`;
128
+ this.addLog(` [${i + 1}] ${status}`);
129
+ });
130
+ this.addLog('');
131
+ this.addLog('SUFFIXES:');
132
+ suffixes.slice(0, 4).forEach((a, i) => {
133
+ const status = isUnlocked(a.id) ? `${raritySymbol(a.rarity)} ${a.name}` : `? ???`;
134
+ this.addLog(` [${i + 5}] ${status}`);
135
+ });
136
+ this.addLog('');
137
+ this.addLog('LEGENDARY:');
138
+ legendaries.slice(0, 3).forEach((a, i) => {
139
+ const status = isUnlocked(a.id) ? `✦ ${a.name}` : `? ???`;
140
+ this.addLog(` [${i + 9}] ${status}`);
141
+ });
142
+ this.addLog('');
143
+ this.addLog('[0] Back to Workshop');
144
+ }
145
+ /**
146
+ * Handle view affix input
147
+ */
148
+ handleViewInput(num) {
149
+ if (num === 0) {
150
+ this._subMode = 'main';
151
+ this.showMenu();
152
+ return;
153
+ }
154
+ const player = this.idleGameManager.getState()?.player;
155
+ if (!player)
156
+ return;
157
+ const registry = getAffixRegistry();
158
+ const allAffixes = registry.getAll();
159
+ const prefixes = allAffixes.filter(a => a.type === 'prefix');
160
+ const suffixes = allAffixes.filter(a => a.type === 'suffix');
161
+ const legendaries = allAffixes.filter(a => a.type === 'legendary');
162
+ let affix;
163
+ if (num >= 1 && num <= 4) {
164
+ affix = prefixes[num - 1];
165
+ }
166
+ else if (num >= 5 && num <= 8) {
167
+ affix = suffixes[num - 5];
168
+ }
169
+ else if (num >= 9 && num <= 11) {
170
+ affix = legendaries[num - 9];
171
+ }
172
+ if (affix && player.unlockedAffixes.includes(affix.id)) {
173
+ this.showAffixDetails(affix);
174
+ }
175
+ else if (affix) {
176
+ this.addLog('This affix has not been discovered yet.');
177
+ this.addLog('Defeat enemies or complete quests to discover new affixes.');
178
+ }
179
+ else {
180
+ this.addLog('Invalid selection.');
181
+ }
182
+ }
183
+ /**
184
+ * Show affix details
185
+ */
186
+ showAffixDetails(affix) {
187
+ const rarityLabels = {
188
+ common: 'Common', uncommon: 'Uncommon', rare: 'Rare', epic: 'Epic', legendary: 'Legendary'
189
+ };
190
+ this.addLog(`══════ ${affix.name} ══════`);
191
+ this.addLog(`Type: ${affix.type.toUpperCase()}`);
192
+ this.addLog(`Rarity: ${rarityLabels[affix.rarity]}`);
193
+ this.addLog('');
194
+ this.addLog(affix.description);
195
+ if (affix.statModifiers) {
196
+ this.addLog('');
197
+ this.addLog('Stats:');
198
+ for (const [stat, value] of Object.entries(affix.statModifiers)) {
199
+ if (value !== undefined && value !== 0) {
200
+ const sign = value > 0 ? '+' : '';
201
+ this.addLog(` ${stat}: ${sign}${value}`);
202
+ }
203
+ }
204
+ }
205
+ if (affix.onHitEffects && affix.onHitEffects.length > 0) {
206
+ this.addLog('');
207
+ this.addLog('On Hit:');
208
+ for (const effect of affix.onHitEffects) {
209
+ const chance = effect.chance < 1 ? `${Math.round(effect.chance * 100)}% chance` : '';
210
+ this.addLog(` ${effect.type} ${effect.element || ''} ${effect.value} ${chance}`);
211
+ }
212
+ }
213
+ if (affix.requiresLevel) {
214
+ this.addLog('');
215
+ this.addLog(`Requires Level: ${affix.requiresLevel}`);
216
+ }
217
+ this.addLog('');
218
+ this.addLog('[0] Back');
219
+ }
220
+ /**
221
+ * Show forge menu
222
+ */
223
+ showForgeMenu() {
224
+ const player = this.idleGameManager.getState()?.player;
225
+ if (!player)
226
+ return;
227
+ this._subMode = 'forge';
228
+ this.addLog('────── Forge ──────');
229
+ if (!player.equipment.weapon) {
230
+ this.addLog('You have no weapon equipped!');
231
+ this.addLog('Equip a weapon first to apply affixes.');
232
+ }
233
+ else {
234
+ const weapon = player.equipment.weapon;
235
+ this.addLog(`Current Weapon: ${weapon.name}`);
236
+ this.addLog(`Attack: ${weapon.baseAttack} | Durability: ${weapon.durability}/${weapon.maxDurability}`);
237
+ this.addLog(`Affixes: ${weapon.affixes.length > 0 ? weapon.affixes.map(a => a.name).join(', ') : 'None'}`);
238
+ this.addLog('');
239
+ if (player.unlockedAffixes.length === 0) {
240
+ this.addLog('You have no unlocked affixes to apply.');
241
+ }
242
+ else {
243
+ this.addLog('Available affixes to apply:');
244
+ const registry = getAffixRegistry();
245
+ player.unlockedAffixes.slice(0, 5).forEach((id, i) => {
246
+ const affix = registry.get(id);
247
+ if (affix) {
248
+ this.addLog(` [${i + 1}] ${affix.name} (${affix.rarity})`);
249
+ }
250
+ });
251
+ this.addLog('');
252
+ this.addLog('(Forging costs gold based on rarity)');
253
+ }
254
+ }
255
+ this.addLog('');
256
+ this.addLog('[0] Back to Workshop');
257
+ }
258
+ /**
259
+ * Handle forge input
260
+ */
261
+ handleForgeInput(num) {
262
+ if (num === 0) {
263
+ this._subMode = 'main';
264
+ this.showMenu();
265
+ return;
266
+ }
267
+ const player = this.idleGameManager.getState()?.player;
268
+ if (!player || !player.equipment.weapon) {
269
+ this.addLog('No weapon to forge!');
270
+ return;
271
+ }
272
+ const affixId = player.unlockedAffixes[num - 1];
273
+ if (!affixId) {
274
+ this.addLog('Invalid selection.');
275
+ return;
276
+ }
277
+ const registry = getAffixRegistry();
278
+ const affix = registry.get(affixId);
279
+ if (!affix) {
280
+ this.addLog('Affix not found.');
281
+ return;
282
+ }
283
+ // Calculate cost
284
+ const costByRarity = {
285
+ common: 20, uncommon: 50, rare: 100, epic: 250, legendary: 500
286
+ };
287
+ const cost = costByRarity[affix.rarity] || 50;
288
+ if (player.stats.gold < cost) {
289
+ this.addLog(`Not enough gold! Need ${cost}g, have ${player.stats.gold}g.`);
290
+ return;
291
+ }
292
+ // Check if affix is compatible
293
+ const existingAffixes = player.equipment.weapon.affixes;
294
+ const hasConflict = existingAffixes.some(existing => affix.incompatibleWith?.includes(existing.definitionId) ||
295
+ registry.get(existing.definitionId)?.incompatibleWith?.includes(affix.id));
296
+ if (hasConflict) {
297
+ this.addLog('This affix conflicts with an existing one!');
298
+ return;
299
+ }
300
+ // Apply affix
301
+ player.stats.gold -= cost;
302
+ player.equipment.weapon.affixes.push({
303
+ definitionId: affix.id,
304
+ name: affix.name,
305
+ type: affix.type,
306
+ rarity: affix.rarity,
307
+ });
308
+ this.addLog(`✓ Applied "${affix.name}" to ${player.equipment.weapon.name}!`);
309
+ this.addLog(` Cost: ${cost}g | Remaining: ${player.stats.gold}g`);
310
+ this.showForgeMenu();
311
+ }
312
+ /**
313
+ * Show research menu
314
+ */
315
+ showResearchMenu() {
316
+ const player = this.idleGameManager.getState()?.player;
317
+ if (!player)
318
+ return;
319
+ this._subMode = 'research';
320
+ const registry = getAffixRegistry();
321
+ const allAffixes = registry.getAll();
322
+ const locked = allAffixes.filter(a => !player.unlockedAffixes.includes(a.id));
323
+ this.addLog('────── Research ──────');
324
+ this.addLog('Study mysterious affixes to unlock them.');
325
+ this.addLog('');
326
+ if (locked.length === 0) {
327
+ this.addLog('All affixes have been discovered!');
328
+ }
329
+ else {
330
+ this.addLog(`Unknown affixes: ${locked.length}`);
331
+ this.addLog('');
332
+ const hints = locked.slice(0, 3);
333
+ hints.forEach((a, i) => {
334
+ const hint = this.getAffixHint(a);
335
+ this.addLog(` [${i + 1}] ${hint} (${a.rarity})`);
336
+ });
337
+ this.addLog('');
338
+ this.addLog('Research cost: 100g per attempt (50% success)');
339
+ }
340
+ this.addLog('');
341
+ this.addLog('[0] Back to Workshop');
342
+ }
343
+ /**
344
+ * Get a hint for an unknown affix
345
+ */
346
+ getAffixHint(affix) {
347
+ if (affix.type === 'legendary') {
348
+ return '??? (Legendary power)';
349
+ }
350
+ if (affix.statModifiers) {
351
+ const stats = Object.keys(affix.statModifiers);
352
+ if (stats.length > 0) {
353
+ return `??? (Affects ${stats[0]})`;
354
+ }
355
+ }
356
+ if (affix.onHitEffects && affix.onHitEffects.length > 0) {
357
+ return `??? (On-hit effect)`;
358
+ }
359
+ return '??? (Unknown)';
360
+ }
361
+ /**
362
+ * Handle research input
363
+ */
364
+ handleResearchInput(num) {
365
+ if (num === 0) {
366
+ this._subMode = 'main';
367
+ this.showMenu();
368
+ return;
369
+ }
370
+ const player = this.idleGameManager.getState()?.player;
371
+ if (!player)
372
+ return;
373
+ const registry = getAffixRegistry();
374
+ const allAffixes = registry.getAll();
375
+ const locked = allAffixes.filter(a => !player.unlockedAffixes.includes(a.id));
376
+ const affixToResearch = locked[num - 1];
377
+ if (!affixToResearch) {
378
+ this.addLog('Invalid selection.');
379
+ return;
380
+ }
381
+ const cost = 100;
382
+ if (player.stats.gold < cost) {
383
+ this.addLog(`Not enough gold! Need ${cost}g, have ${player.stats.gold}g.`);
384
+ return;
385
+ }
386
+ // Deduct cost
387
+ player.stats.gold -= cost;
388
+ // 50% chance of success
389
+ if (Math.random() < 0.5) {
390
+ player.unlockedAffixes.push(affixToResearch.id);
391
+ this.addLog(`✓ Research successful! Discovered: ${affixToResearch.name}`);
392
+ }
393
+ else {
394
+ this.addLog('✗ Research failed. The affix remains a mystery...');
395
+ }
396
+ this.addLog(` Spent: ${cost}g | Remaining: ${player.stats.gold}g`);
397
+ this.showResearchMenu();
398
+ }
399
+ }
400
+ //# sourceMappingURL=WorkshopHandler.js.map
401
+ //# debugId=f0e27d1e-4550-530f-b84d-ba384573fc70
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkshopHandler.js","sources":["handlers/WorkshopHandler.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * WorkshopHandler - Handles affix workshop functionality\r\n *\r\n * Extracted from main.ts to reduce file size.\r\n * Manages affix viewing, forging, and research.\r\n */\r\n\r\nimport { getAffixRegistry } from '../affix/AffixRegistry.js';\r\nimport type { IdleGameManager } from '../core/IdleGameManager.js';\r\nimport type { AffixPlugin } from '../affix/types.js';\r\n\r\nexport type WorkshopSubMode = 'main' | 'view' | 'forge' | 'research';\r\n\r\n/**\r\n * Handles affix workshop functionality\r\n */\r\nexport class WorkshopHandler {\r\n private idleGameManager: IdleGameManager;\r\n private addLog: (message: string) => void;\r\n\r\n // State\r\n private _workshopMode = false;\r\n private _subMode: WorkshopSubMode = 'main';\r\n\r\n constructor(\r\n idleGameManager: IdleGameManager,\r\n addLog: (message: string) => void\r\n ) {\r\n this.idleGameManager = idleGameManager;\r\n this.addLog = addLog;\r\n }\r\n\r\n /**\r\n * Check if in workshop mode\r\n */\r\n get workshopMode(): boolean {\r\n return this._workshopMode;\r\n }\r\n\r\n /**\r\n * Get current sub-mode\r\n */\r\n get subMode(): WorkshopSubMode {\r\n return this._subMode;\r\n }\r\n\r\n /**\r\n * Exit workshop\r\n */\r\n exit(): void {\r\n this._workshopMode = false;\r\n this._subMode = 'main';\r\n this.addLog('Exiting workshop...');\r\n }\r\n\r\n /**\r\n * Enter workshop\r\n */\r\n enter(): void {\r\n this._workshopMode = true;\r\n this._subMode = 'main';\r\n this.showMenu();\r\n }\r\n\r\n /**\r\n * Show workshop main menu\r\n */\r\n showMenu(): void {\r\n const player = this.idleGameManager.getState()?.player;\r\n if (!player) return;\r\n\r\n const unlockedCount = player.unlockedAffixes.length;\r\n const registry = getAffixRegistry();\r\n const totalAffixes = registry.getAll().length;\r\n\r\n this.addLog('════════ AFFIX WORKSHOP ════════');\r\n this.addLog(`Affixes discovered: ${unlockedCount}/${totalAffixes}`);\r\n this.addLog('');\r\n this.addLog('[1] View Affixes - Browse your collection');\r\n this.addLog('[2] Forge - Apply affixes to weapons');\r\n this.addLog('[3] Research - Study unknown affixes');\r\n this.addLog('[0] Exit Workshop');\r\n this.addLog('');\r\n this.addLog('Select an option:');\r\n }\r\n\r\n /**\r\n * Handle workshop input\r\n */\r\n handleInput(num: number): void {\r\n if (this._subMode === 'main') {\r\n switch (num) {\r\n case 0:\r\n this.exit();\r\n break;\r\n case 1:\r\n this.showCollection();\r\n break;\r\n case 2:\r\n this.showForgeMenu();\r\n break;\r\n case 3:\r\n this.showResearchMenu();\r\n break;\r\n default:\r\n this.addLog('Invalid option.');\r\n }\r\n } else if (this._subMode === 'view') {\r\n this.handleViewInput(num);\r\n } else if (this._subMode === 'forge') {\r\n this.handleForgeInput(num);\r\n } else if (this._subMode === 'research') {\r\n this.handleResearchInput(num);\r\n }\r\n }\r\n\r\n /**\r\n * Show affix collection\r\n */\r\n private showCollection(): void {\r\n const player = this.idleGameManager.getState()?.player;\r\n if (!player) return;\r\n\r\n this._subMode = 'view';\r\n const registry = getAffixRegistry();\r\n const allAffixes = registry.getAll();\r\n\r\n this.addLog('────── Your Affixes ──────');\r\n\r\n const prefixes = allAffixes.filter(a => a.type === 'prefix');\r\n const suffixes = allAffixes.filter(a => a.type === 'suffix');\r\n const legendaries = allAffixes.filter(a => a.type === 'legendary');\r\n\r\n const isUnlocked = (id: string) => player.unlockedAffixes.includes(id);\r\n const raritySymbol = (r: string) => {\r\n const symbols: Record<string, string> = {\r\n common: '◯', uncommon: '●', rare: '◆', epic: '★', legendary: '✦'\r\n };\r\n return symbols[r] || '?';\r\n };\r\n\r\n this.addLog('');\r\n this.addLog('PREFIXES:');\r\n prefixes.slice(0, 4).forEach((a, i) => {\r\n const status = isUnlocked(a.id) ? `${raritySymbol(a.rarity)} ${a.name}` : `? ???`;\r\n this.addLog(` [${i + 1}] ${status}`);\r\n });\r\n\r\n this.addLog('');\r\n this.addLog('SUFFIXES:');\r\n suffixes.slice(0, 4).forEach((a, i) => {\r\n const status = isUnlocked(a.id) ? `${raritySymbol(a.rarity)} ${a.name}` : `? ???`;\r\n this.addLog(` [${i + 5}] ${status}`);\r\n });\r\n\r\n this.addLog('');\r\n this.addLog('LEGENDARY:');\r\n legendaries.slice(0, 3).forEach((a, i) => {\r\n const status = isUnlocked(a.id) ? `✦ ${a.name}` : `? ???`;\r\n this.addLog(` [${i + 9}] ${status}`);\r\n });\r\n\r\n this.addLog('');\r\n this.addLog('[0] Back to Workshop');\r\n }\r\n\r\n /**\r\n * Handle view affix input\r\n */\r\n private handleViewInput(num: number): void {\r\n if (num === 0) {\r\n this._subMode = 'main';\r\n this.showMenu();\r\n return;\r\n }\r\n\r\n const player = this.idleGameManager.getState()?.player;\r\n if (!player) return;\r\n\r\n const registry = getAffixRegistry();\r\n const allAffixes = registry.getAll();\r\n const prefixes = allAffixes.filter(a => a.type === 'prefix');\r\n const suffixes = allAffixes.filter(a => a.type === 'suffix');\r\n const legendaries = allAffixes.filter(a => a.type === 'legendary');\r\n\r\n let affix: AffixPlugin | undefined;\r\n if (num >= 1 && num <= 4) {\r\n affix = prefixes[num - 1];\r\n } else if (num >= 5 && num <= 8) {\r\n affix = suffixes[num - 5];\r\n } else if (num >= 9 && num <= 11) {\r\n affix = legendaries[num - 9];\r\n }\r\n\r\n if (affix && player.unlockedAffixes.includes(affix.id)) {\r\n this.showAffixDetails(affix);\r\n } else if (affix) {\r\n this.addLog('This affix has not been discovered yet.');\r\n this.addLog('Defeat enemies or complete quests to discover new affixes.');\r\n } else {\r\n this.addLog('Invalid selection.');\r\n }\r\n }\r\n\r\n /**\r\n * Show affix details\r\n */\r\n private showAffixDetails(affix: AffixPlugin): void {\r\n const rarityLabels: Record<string, string> = {\r\n common: 'Common', uncommon: 'Uncommon', rare: 'Rare', epic: 'Epic', legendary: 'Legendary'\r\n };\r\n\r\n this.addLog(`══════ ${affix.name} ══════`);\r\n this.addLog(`Type: ${affix.type.toUpperCase()}`);\r\n this.addLog(`Rarity: ${rarityLabels[affix.rarity]}`);\r\n this.addLog('');\r\n this.addLog(affix.description);\r\n\r\n if (affix.statModifiers) {\r\n this.addLog('');\r\n this.addLog('Stats:');\r\n for (const [stat, value] of Object.entries(affix.statModifiers)) {\r\n if (value !== undefined && value !== 0) {\r\n const sign = value > 0 ? '+' : '';\r\n this.addLog(` ${stat}: ${sign}${value}`);\r\n }\r\n }\r\n }\r\n\r\n if (affix.onHitEffects && affix.onHitEffects.length > 0) {\r\n this.addLog('');\r\n this.addLog('On Hit:');\r\n for (const effect of affix.onHitEffects) {\r\n const chance = effect.chance < 1 ? `${Math.round(effect.chance * 100)}% chance` : '';\r\n this.addLog(` ${effect.type} ${effect.element || ''} ${effect.value} ${chance}`);\r\n }\r\n }\r\n\r\n if (affix.requiresLevel) {\r\n this.addLog('');\r\n this.addLog(`Requires Level: ${affix.requiresLevel}`);\r\n }\r\n\r\n this.addLog('');\r\n this.addLog('[0] Back');\r\n }\r\n\r\n /**\r\n * Show forge menu\r\n */\r\n private showForgeMenu(): void {\r\n const player = this.idleGameManager.getState()?.player;\r\n if (!player) return;\r\n\r\n this._subMode = 'forge';\r\n\r\n this.addLog('────── Forge ──────');\r\n\r\n if (!player.equipment.weapon) {\r\n this.addLog('You have no weapon equipped!');\r\n this.addLog('Equip a weapon first to apply affixes.');\r\n } else {\r\n const weapon = player.equipment.weapon;\r\n this.addLog(`Current Weapon: ${weapon.name}`);\r\n this.addLog(`Attack: ${weapon.baseAttack} | Durability: ${weapon.durability}/${weapon.maxDurability}`);\r\n this.addLog(`Affixes: ${weapon.affixes.length > 0 ? weapon.affixes.map(a => a.name).join(', ') : 'None'}`);\r\n this.addLog('');\r\n\r\n if (player.unlockedAffixes.length === 0) {\r\n this.addLog('You have no unlocked affixes to apply.');\r\n } else {\r\n this.addLog('Available affixes to apply:');\r\n const registry = getAffixRegistry();\r\n player.unlockedAffixes.slice(0, 5).forEach((id, i) => {\r\n const affix = registry.get(id);\r\n if (affix) {\r\n this.addLog(` [${i + 1}] ${affix.name} (${affix.rarity})`);\r\n }\r\n });\r\n this.addLog('');\r\n this.addLog('(Forging costs gold based on rarity)');\r\n }\r\n }\r\n\r\n this.addLog('');\r\n this.addLog('[0] Back to Workshop');\r\n }\r\n\r\n /**\r\n * Handle forge input\r\n */\r\n private handleForgeInput(num: number): void {\r\n if (num === 0) {\r\n this._subMode = 'main';\r\n this.showMenu();\r\n return;\r\n }\r\n\r\n const player = this.idleGameManager.getState()?.player;\r\n if (!player || !player.equipment.weapon) {\r\n this.addLog('No weapon to forge!');\r\n return;\r\n }\r\n\r\n const affixId = player.unlockedAffixes[num - 1];\r\n if (!affixId) {\r\n this.addLog('Invalid selection.');\r\n return;\r\n }\r\n\r\n const registry = getAffixRegistry();\r\n const affix = registry.get(affixId);\r\n if (!affix) {\r\n this.addLog('Affix not found.');\r\n return;\r\n }\r\n\r\n // Calculate cost\r\n const costByRarity: Record<string, number> = {\r\n common: 20, uncommon: 50, rare: 100, epic: 250, legendary: 500\r\n };\r\n const cost = costByRarity[affix.rarity] || 50;\r\n\r\n if (player.stats.gold < cost) {\r\n this.addLog(`Not enough gold! Need ${cost}g, have ${player.stats.gold}g.`);\r\n return;\r\n }\r\n\r\n // Check if affix is compatible\r\n const existingAffixes = player.equipment.weapon.affixes;\r\n const hasConflict = existingAffixes.some(existing =>\r\n affix.incompatibleWith?.includes(existing.definitionId) ||\r\n registry.get(existing.definitionId)?.incompatibleWith?.includes(affix.id)\r\n );\r\n\r\n if (hasConflict) {\r\n this.addLog('This affix conflicts with an existing one!');\r\n return;\r\n }\r\n\r\n // Apply affix\r\n player.stats.gold -= cost;\r\n player.equipment.weapon.affixes.push({\r\n definitionId: affix.id,\r\n name: affix.name,\r\n type: affix.type,\r\n rarity: affix.rarity,\r\n });\r\n\r\n this.addLog(`✓ Applied \"${affix.name}\" to ${player.equipment.weapon.name}!`);\r\n this.addLog(` Cost: ${cost}g | Remaining: ${player.stats.gold}g`);\r\n\r\n this.showForgeMenu();\r\n }\r\n\r\n /**\r\n * Show research menu\r\n */\r\n private showResearchMenu(): void {\r\n const player = this.idleGameManager.getState()?.player;\r\n if (!player) return;\r\n\r\n this._subMode = 'research';\r\n\r\n const registry = getAffixRegistry();\r\n const allAffixes = registry.getAll();\r\n const locked = allAffixes.filter(a => !player.unlockedAffixes.includes(a.id));\r\n\r\n this.addLog('────── Research ──────');\r\n this.addLog('Study mysterious affixes to unlock them.');\r\n this.addLog('');\r\n\r\n if (locked.length === 0) {\r\n this.addLog('All affixes have been discovered!');\r\n } else {\r\n this.addLog(`Unknown affixes: ${locked.length}`);\r\n this.addLog('');\r\n\r\n const hints = locked.slice(0, 3);\r\n hints.forEach((a, i) => {\r\n const hint = this.getAffixHint(a);\r\n this.addLog(` [${i + 1}] ${hint} (${a.rarity})`);\r\n });\r\n\r\n this.addLog('');\r\n this.addLog('Research cost: 100g per attempt (50% success)');\r\n }\r\n\r\n this.addLog('');\r\n this.addLog('[0] Back to Workshop');\r\n }\r\n\r\n /**\r\n * Get a hint for an unknown affix\r\n */\r\n private getAffixHint(affix: AffixPlugin): string {\r\n if (affix.type === 'legendary') {\r\n return '??? (Legendary power)';\r\n }\r\n\r\n if (affix.statModifiers) {\r\n const stats = Object.keys(affix.statModifiers);\r\n if (stats.length > 0) {\r\n return `??? (Affects ${stats[0]})`;\r\n }\r\n }\r\n\r\n if (affix.onHitEffects && affix.onHitEffects.length > 0) {\r\n return `??? (On-hit effect)`;\r\n }\r\n\r\n return '??? (Unknown)';\r\n }\r\n\r\n /**\r\n * Handle research input\r\n */\r\n private handleResearchInput(num: number): void {\r\n if (num === 0) {\r\n this._subMode = 'main';\r\n this.showMenu();\r\n return;\r\n }\r\n\r\n const player = this.idleGameManager.getState()?.player;\r\n if (!player) return;\r\n\r\n const registry = getAffixRegistry();\r\n const allAffixes = registry.getAll();\r\n const locked = allAffixes.filter(a => !player.unlockedAffixes.includes(a.id));\r\n\r\n const affixToResearch = locked[num - 1];\r\n if (!affixToResearch) {\r\n this.addLog('Invalid selection.');\r\n return;\r\n }\r\n\r\n const cost = 100;\r\n if (player.stats.gold < cost) {\r\n this.addLog(`Not enough gold! Need ${cost}g, have ${player.stats.gold}g.`);\r\n return;\r\n }\r\n\r\n // Deduct cost\r\n player.stats.gold -= cost;\r\n\r\n // 50% chance of success\r\n if (Math.random() < 0.5) {\r\n player.unlockedAffixes.push(affixToResearch.id);\r\n this.addLog(`✓ Research successful! Discovered: ${affixToResearch.name}`);\r\n } else {\r\n this.addLog('✗ Research failed. The affix remains a mystery...');\r\n }\r\n\r\n this.addLog(` Spent: ${cost}g | Remaining: ${player.stats.gold}g`);\r\n this.showResearchMenu();\r\n }\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"f0e27d1e-4550-530f-b84d-ba384573fc70"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Handlers Module
3
+ *
4
+ * Exports handler classes that encapsulate specific functionality
5
+ * extracted from main.ts for better code organization.
6
+ */
7
+ export { TitleScreenHandler } from './TitleScreenHandler.js';
8
+ export { DialogHandler } from './DialogHandler.js';
9
+ export { SaveLoadHandler } from './SaveLoadHandler.js';
10
+ export { WorkshopHandler, type WorkshopSubMode } from './WorkshopHandler.js';
11
+ export type { HandlerDeps, Handler } from './types.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Handlers Module
3
+ *
4
+ * Exports handler classes that encapsulate specific functionality
5
+ * extracted from main.ts for better code organization.
6
+ */
7
+
8
+ !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]="44a485d6-d27d-55f5-9d85-7b9985d507e0")}catch(e){}}();
9
+ export { TitleScreenHandler } from './TitleScreenHandler.js';
10
+ export { DialogHandler } from './DialogHandler.js';
11
+ export { SaveLoadHandler } from './SaveLoadHandler.js';
12
+ export { WorkshopHandler } from './WorkshopHandler.js';
13
+ //# sourceMappingURL=index.js.map
14
+ //# debugId=44a485d6-d27d-55f5-9d85-7b9985d507e0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["handlers/index.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Handlers Module\r\n *\r\n * Exports handler classes that encapsulate specific functionality\r\n * extracted from main.ts for better code organization.\r\n */\r\n\r\nexport { TitleScreenHandler } from './TitleScreenHandler.js';\r\nexport { DialogHandler } from './DialogHandler.js';\r\nexport { SaveLoadHandler } from './SaveLoadHandler.js';\r\nexport { WorkshopHandler, type WorkshopSubMode } from './WorkshopHandler.js';\r\nexport type { HandlerDeps, Handler } from './types.js';\r\n"],"names":[],"mappings":"AAAA;;;;;GAKG;;;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAC","debug_id":"44a485d6-d27d-55f5-9d85-7b9985d507e0"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Handler Types - Shared types for main.ts handlers
3
+ */
4
+ import type { IdleGameManager } from '../core/IdleGameManager.js';
5
+ import type { Router } from '../app/Router.js';
6
+ import type { EventBus } from '../app/EventBus.js';
7
+ import type { GameUI } from '../tui/GameUIAdapter.js';
8
+ import type { Screen } from '../tui/Screen.js';
9
+ import type { InputManager } from '../tui/Input.js';
10
+ import type { NPCManager } from '../npc/NPCManager.js';
11
+ import type { QuestManager } from '../quest/QuestManager.js';
12
+ /**
13
+ * Shared dependencies passed to handlers
14
+ */
15
+ export interface HandlerDeps {
16
+ ui: GameUI;
17
+ screen: Screen;
18
+ input: InputManager;
19
+ idleGameManager: IdleGameManager;
20
+ router: Router;
21
+ bus: EventBus;
22
+ npcManager: NPCManager;
23
+ questManager: QuestManager;
24
+ /** Add event log message */
25
+ addLog: (message: string) => void;
26
+ }
27
+ /**
28
+ * Base interface for handlers
29
+ */
30
+ export interface Handler {
31
+ /** Optional cleanup method */
32
+ cleanup?(): void;
33
+ }
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["handlers/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,4BAA4B;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,8BAA8B;IAC9B,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Handler Types - Shared types for main.ts handlers
3
+ */
4
+
5
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3a882e8e-7698-597c-b1db-caa21889cff5")}catch(e){}}();
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
8
+ //# debugId=3a882e8e-7698-597c-b1db-caa21889cff5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["handlers/types.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Handler Types - Shared types for main.ts handlers\r\n */\r\n\r\nimport type { IdleGameManager } from '../core/IdleGameManager.js';\r\nimport type { Router } from '../app/Router.js';\r\nimport type { EventBus } from '../app/EventBus.js';\r\nimport type { GameUI } from '../tui/GameUIAdapter.js';\r\nimport type { Screen } from '../tui/Screen.js';\r\nimport type { InputManager } from '../tui/Input.js';\r\nimport type { NPCManager } from '../npc/NPCManager.js';\r\nimport type { QuestManager } from '../quest/QuestManager.js';\r\n\r\n/**\r\n * Shared dependencies passed to handlers\r\n */\r\nexport interface HandlerDeps {\r\n ui: GameUI;\r\n screen: Screen;\r\n input: InputManager;\r\n idleGameManager: IdleGameManager;\r\n router: Router;\r\n bus: EventBus;\r\n npcManager: NPCManager;\r\n questManager: QuestManager;\r\n /** Add event log message */\r\n addLog: (message: string) => void;\r\n}\r\n\r\n/**\r\n * Base interface for handlers\r\n */\r\nexport interface Handler {\r\n /** Optional cleanup method */\r\n cleanup?(): void;\r\n}\r\n"],"names":[],"mappings":"AAAA;;GAEG","debug_id":"3a882e8e-7698-597c-b1db-caa21889cff5"}
@@ -0,0 +1,3 @@
1
+ import type { LocaleData } from './types.js';
2
+ export declare const en: LocaleData;
3
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"/","sources":["i18n/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,EAAE,EAAE,UAiJhB,CAAC"}