Fix LeftPanel.tsx to use modular stores instead of legacy useGameStore
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s

- Added useCraftingStore import for crafting progress fields
- Changed spireMode/enterSpireMode to useCombatStore
- Changed currentStudyTarget to useSkillStore
- Changed crafting progress fields to useCraftingStore
- Added useCraftingStore export to stores/index.ts
- Kept useGameStore only for gatherMana, day, hour
This commit is contained in:
Refactoring Agent
2026-05-05 11:10:33 +02:00
parent 235bc09856
commit dc1aad3700
7 changed files with 42 additions and 28 deletions
@@ -1,13 +1,12 @@
'use client';
import { EquipmentSlot } from '@/lib/game/data/equipment';
import type { GameStore } from '@/lib/game/types';
// GameStore import removed - not used
import { ActionButton } from '@/components/ui/action-button';
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
import { X } from 'lucide-react';
interface EquipmentControlsProps {
store: GameStore;
onUnequip: (slot: EquipmentSlot) => void;
onDelete: (instanceId: string, name: string) => void;
selectedSlot: EquipmentSlot | null;
@@ -17,7 +16,6 @@ interface EquipmentControlsProps {
}
export function EquipmentControls({
store,
onUnequip,
onDelete,
selectedSlot,
@@ -3,7 +3,7 @@
import { useState } from 'react';
import { EquipmentSlot } from '@/lib/game/data/equipment';
import { EQUIPMENT_TYPES } from '@/lib/game/data/equipment';
import type { GameStore, EquipmentInstance } from '@/lib/game/types';
import type { EquipmentInstance } from '@/lib/game/types';
import { GameCard } from '@/components/ui/game-card';
import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
@@ -17,7 +17,6 @@ import {
import { EnchantmentsPanel } from './EnchantmentsPanel';
interface EquipmentInventoryProps {
store: GameStore;
unequippedItems: EquipmentInstance[];
onEquip: (instanceId: string, slot: EquipmentSlot) => void;
onDelete: (instanceId: string, name: string) => void;
@@ -27,7 +26,6 @@ interface EquipmentInventoryProps {
}
export function EquipmentInventory({
store,
unequippedItems,
onEquip,
onDelete,
@@ -1,8 +1,8 @@
'use client';
import { EquipmentSlot } from '@/lib/game/data/equipment';
import { SLOT_NAMES } from '@/lib/game/data/equipment';
import type { GameStore, EquipmentInstance } from '@/lib/game/types';
import { SLOT_NAMES, EQUIPMENT_TYPES } from '@/lib/game/data/equipment';
import type { EquipmentInstance } from '@/lib/game/types';
import { GameCard } from '@/components/ui/game-card';
import { Badge } from '@/components/ui/badge';
import { AlertCircle, Sword, Shield, HardHat, Shirt, Hand, Footprints, Gem } from 'lucide-react';
@@ -23,7 +23,8 @@ const SLOT_ICONS: Record<EquipmentSlot, React.ElementType> = {
};
interface EquipmentSlotGridProps {
store: GameStore;
equippedInstances: Record<string, string | null>;
equipmentInstances: Record<string, EquipmentInstance>;
selectedSlot: EquipmentSlot | null;
onSlotClick: (slot: EquipmentSlot) => void;
onUnequip: (slot: EquipmentSlot) => void;
@@ -32,7 +33,8 @@ interface EquipmentSlotGridProps {
}
export function EquipmentSlotGrid({
store,
equippedInstances,
equipmentInstances,
selectedSlot,
onSlotClick,
onUnequip,
@@ -40,9 +42,9 @@ export function EquipmentSlotGrid({
SLOT_GROUPS,
}: EquipmentSlotGridProps) {
const renderSlot = (slot: EquipmentSlot) => {
const instanceId = store.equippedInstances[slot];
const instance = instanceId ? store.equipmentInstances[instanceId] : null;
const equipmentType = instance ? (store as any).EQUIPMENT_TYPES?.[instance.typeId] : null;
const instanceId = equippedInstances[slot];
const instance = instanceId ? equipmentInstances[instanceId] : null;
const equipmentType = instance ? EQUIPMENT_TYPES?.[instance.typeId] : null;
const blocked = isSlotBlocked(slot);
const isEmpty = !instance;
const SlotIcon = SLOT_ICONS[slot];
+2 -1
View File
@@ -15,6 +15,7 @@ import {
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Badge } from '@/components/ui/badge';
import { ScrollArea } from '@/components/ui/scroll-area';
import { fmt } from '@/lib/game/stores';
export function PrestigeTab() {
@@ -51,7 +52,7 @@ export function PrestigeTab() {
const effect = upgradeEffects ? upgradeEffects.specials.has(id) : false;
return (
<Card key={id} className={effect ? "border-[var(--color-success)]/50 bg-[var(--color-success)]/10" : "bg-gray-900/80 border-gray-700">
<Card key={id} className={effect ? "border-[var(--color-success)]/50 bg-[var(--color-success)]/10" : "bg-gray-900/80 border-gray-700"}>
<CardHeader>
<CardTitle className="text-sm flex items-center gap-2">
<span>{def.name}</span>