cleanup: delete computed-stats.ts shim and store/index.ts
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 57s

- Delete src/lib/game/computed-stats.ts (root-level re-export shim)
- Delete src/lib/game/store/index.ts (nothing imports from it)
- Update __tests__/computed-stats.test.ts to import from ../utils instead
- Clean up craftingStore.ts imports (remove unused useGameStore, CraftingApply)

Typecheck and lint pass (pre-existing DisciplinesTab.tsx errors unchanged)
This commit is contained in:
2026-05-18 12:08:38 +02:00
parent 20c2ebd7b5
commit 2805f75f5e
54 changed files with 333 additions and 2936 deletions
+68 -71
View File
@@ -17,60 +17,60 @@ export interface CombatState {
floorHP: number;
floorMaxHP: number;
maxFloorReached: number;
// Action state
activeSpell: string;
currentAction: GameAction;
castProgress: number;
// Spire mode
spireMode: boolean;
// Room system for special floors
currentRoom: FloorState;
// Spire climbing state
clearedFloors: Record<number, boolean>;
climbDirection: 'up' | 'down' | null;
isDescending: boolean;
// Golemancy (summoned golems)
golemancy: GolemancyState;
// Equipment spell states for multi-casting
equipmentSpellStates: EquipmentSpellState[];
// Combat special effect tracking
comboHitCount: number;
floorHitCount: number;
// Spells
spells: Record<string, SpellState>;
// Activity Log (for Spire Mode UI)
activityLog: ActivityLogEntry[];
// Achievements
achievements: AchievementState;
// Stats tracking
totalSpellsCast: number;
totalDamageDealt: number;
totalCraftsCompleted: number;
// Actions
setCurrentFloor: (floor: number) => void;
advanceFloor: () => void;
setFloorHP: (hp: number) => void;
setMaxFloorReached: (floor: number) => void;
setAction: (action: GameAction) => void;
setSpell: (spellId: string) => void;
setCastProgress: (progress: number) => void;
// Room state
setCurrentRoom: (room: FloorState) => void;
// Spire climbing
setClimbDirection: (direction: 'up' | 'down' | null) => void;
setClearedFloor: (floor: number, cleared: boolean) => void;
@@ -79,29 +79,28 @@ export interface CombatState {
exitSpireMode: () => void;
startClimbUp: () => void;
startClimbDown: () => void;
// Golemancy
toggleGolem: (golemId: string) => void;
setEnabledGolems: (golemIds: string[]) => void;
// Spells
learnSpell: (spellId: string) => void;
setSpellState: (spellId: string, state: Partial<SpellState>) => void;
// Activity Log
addActivityLog: (eventType: ActivityEventType, message: string, details?: ActivityLogEntry['details']) => void;
// Stats
incrementSpellsCast: () => void;
addDamageDealt: (damage: number) => void;
incrementCraftsCompleted: () => void;
// Spire mode
enterSpireMode: () => void;
// Combat tick
processCombatTick: (
skills: Record<string, number>,
rawMana: number,
elements: Record<string, { current: number; max: number; unlocked: boolean }>,
maxMana: number,
@@ -109,10 +108,10 @@ export interface CombatState {
onFloorCleared: (floor: number, wasGuardian: boolean) => void,
onDamageDealt: (damage: number) => { rawMana: number; elements: Record<string, { current: number; max: number; unlocked: boolean }> },
) => { rawMana: number; elements: Record<string, { current: number; max: number; unlocked: boolean }>; logMessages: string[]; totalManaGathered: number };
// Reset
resetCombat: (startFloor: number, spellsToKeep?: string[]) => void;
// Debug helpers
debugSetFloor: (floor: number) => void;
resetFloorHP: () => void;
@@ -130,48 +129,48 @@ export const useCombatStore = create<CombatState>()(
currentAction: 'meditate',
castProgress: 0,
spireMode: false,
// Room system
currentRoom: generateFloorState(1),
// Spire climbing state
clearedFloors: {},
climbDirection: null,
isDescending: false,
// Golemancy
golemancy: {
enabledGolems: [],
summonedGolems: [],
lastSummonFloor: 0,
},
// Equipment spell states
equipmentSpellStates: [],
// Combat tracking
comboHitCount: 0,
floorHitCount: 0,
// Spells
spells: {
manaBolt: { learned: true, level: 1, studyProgress: 0 },
},
// Activity Log
activityLog: [],
// Achievements
achievements: {
unlocked: [],
progress: {},
},
// Stats tracking
totalSpellsCast: 0,
totalDamageDealt: 0,
totalCraftsCompleted: 0,
setCurrentFloor: (floor: number) => {
set({
currentFloor: floor,
@@ -179,7 +178,7 @@ export const useCombatStore = create<CombatState>()(
floorMaxHP: getFloorMaxHP(floor),
});
},
advanceFloor: () => {
set((state) => {
const newFloor = Math.min(state.currentFloor + 1, 100);
@@ -192,52 +191,52 @@ export const useCombatStore = create<CombatState>()(
};
});
},
setFloorHP: (hp: number) => {
set({ floorHP: Math.max(0, hp) });
},
setMaxFloorReached: (floor: number) => {
set((state) => ({
maxFloorReached: Math.max(state.maxFloorReached, floor),
}));
},
setAction: (action: GameAction) => {
set({ currentAction: action });
},
setSpell: (spellId: string) => {
const state = get();
if (state.spells[spellId]?.learned) {
set({ activeSpell: spellId });
}
},
setCastProgress: (progress: number) => {
set({ castProgress: progress });
},
// Room state
setCurrentRoom: (room: FloorState) => {
set({ currentRoom: room });
},
// Spire climbing
setClimbDirection: (direction: 'up' | 'down' | null) => {
set({ climbDirection: direction });
},
setClearedFloor: (floor: number, cleared: boolean) => {
set((state) => ({
clearedFloors: { ...state.clearedFloors, [floor]: cleared },
}));
},
setIsDescending: (descending: boolean) => {
set({ isDescending: descending });
},
climbDownFloor: () => {
set((s) => {
if (s.currentFloor <= 1) return s;
@@ -251,41 +250,41 @@ export const useCombatStore = create<CombatState>()(
};
});
},
exitSpireMode: () => {
set({ spireMode: false, currentAction: 'meditate', climbDirection: null, isDescending: false });
},
startClimbUp: () => set({ climbDirection: 'up', currentAction: 'climb' }),
startClimbDown: () => set({ climbDirection: 'down', currentAction: 'climb' }),
// Golemancy
toggleGolem: (golemId: string) => {
set((s) => {
const enabledGolems = s.golemancy?.enabledGolems || [];
const isEnabled = enabledGolems.includes(golemId);
return {
golemancy: {
...s.golemancy,
enabledGolems: isEnabled
? enabledGolems.filter(id => id !== golemId)
: [...enabledGolems, golemId]
golemancy: {
...s.golemancy,
enabledGolems: isEnabled
? enabledGolems.filter(id => id !== golemId)
: [...enabledGolems, golemId]
},
};
});
},
setEnabledGolems: (golemIds: string[]) => {
set((s) => ({
golemancy: { ...s.golemancy, enabledGolems: golemIds },
}));
},
enterSpireMode: () => {
set({ spireMode: true });
},
learnSpell: (spellId: string) => {
set((state) => ({
spells: {
@@ -294,7 +293,7 @@ export const useCombatStore = create<CombatState>()(
},
}));
},
setSpellState: (spellId: string, spellState: Partial<SpellState>) => {
set((state) => ({
spells: {
@@ -303,29 +302,28 @@ export const useCombatStore = create<CombatState>()(
},
}));
},
// Activity Log
addActivityLog: (eventType: ActivityEventType, message: string, details?: ActivityLogEntry['details']) => {
set((state) => ({
activityLog: addActivityLogEntry(state, eventType, message, details),
}));
},
// Stats
incrementSpellsCast: () => {
set((state) => ({ totalSpellsCast: state.totalSpellsCast + 1 }));
},
addDamageDealt: (damage: number) => {
set((state) => ({ totalDamageDealt: state.totalDamageDealt + damage }));
},
incrementCraftsCompleted: () => {
set((state) => ({ totalCraftsCompleted: state.totalCraftsCompleted + 1 }));
},
processCombatTick: (
skills: Record<string, number>,
rawMana: number,
elements: Record<string, { current: number; max: number; unlocked: boolean }>,
maxMana: number,
@@ -336,7 +334,6 @@ export const useCombatStore = create<CombatState>()(
return processCombatTick(
get,
set,
skills,
rawMana,
elements,
maxMana,
@@ -345,10 +342,10 @@ export const useCombatStore = create<CombatState>()(
onDamageDealt,
);
},
resetCombat: (startFloor: number, spellsToKeep: string[] = []) => {
const startSpells = makeInitialSpells(spellsToKeep);
set({
currentFloor: startFloor,
floorHP: getFloorMaxHP(startFloor),
@@ -360,7 +357,7 @@ export const useCombatStore = create<CombatState>()(
spells: startSpells,
});
},
// Debug helpers
debugSetFloor: (floor: number) => {
set({
@@ -369,13 +366,13 @@ export const useCombatStore = create<CombatState>()(
floorMaxHP: getFloorMaxHP(floor),
});
},
resetFloorHP: () => {
set((state) => ({
floorHP: state.floorMaxHP,
}));
},
debugSetTime: (day: number, hour: number) => {
useGameStore.setState({ day, hour });
},
@@ -386,7 +383,7 @@ export const useCombatStore = create<CombatState>()(
currentFloor: state.currentFloor,
maxFloorReached: state.maxFloorReached,
spells: state.spells,
activeSpell: state.activeSpell,
activeSpell: state.activeAction,
}),
}
)