Phase 3: Split DebugTab.tsx into functional components
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m17s

This commit is contained in:
Refactoring Agent
2026-04-24 14:12:52 +02:00
parent 23d0a129c1
commit d6b85d6367
11 changed files with 924 additions and 861 deletions
+30
View File
@@ -31,6 +31,9 @@ export interface ManaState {
setElementMax: (max: number) => void;
craftComposite: (target: string, recipe: string[]) => boolean;
// Helper for gameStore coordination
processConvertAction: (rawMana: number) => { rawMana: number; elements: Record<string, ElementState> } | null;
// Reset
resetMana: (
prestigeUpgrades: Record<string, number>,
@@ -214,6 +217,33 @@ export const useManaStore = create<ManaState>()(
return true;
},
processConvertAction: (rawMana: number) => {
const state = get();
const elements = { ...state.elements };
const unlockedElements = Object.entries(elements)
.filter(([, e]) => e.unlocked && e.current < e.max);
if (unlockedElements.length === 0 || rawMana < 100) return null;
unlockedElements.sort((a, b) => (b[1].max - b[1].current) - (a[1].max - a[1].current));
const [targetId, targetState] = unlockedElements[0];
const canConvert = Math.min(
Math.floor(rawMana / 100),
targetState.max - targetState.current
);
if (canConvert <= 0) return null;
rawMana -= canConvert * 100;
const updatedElements = {
...elements,
[targetId]: { ...targetState, current: targetState.current + canConvert }
};
return { rawMana, elements: updatedElements };
},
resetMana: (
prestigeUpgrades: Record<string, number>,
skills: Record<string, number> = {},