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
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:
@@ -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];
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user