fix(spire): reset currentAction to meditate on spire exit; fix(crafting): wire enchanting state hooks to EnchantmentDesigner/Preparer/Applier
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m53s

This commit is contained in:
2026-05-10 21:28:46 +02:00
parent cad72fe88c
commit ae0bf3e38d
4 changed files with 88 additions and 15 deletions
+22 -14
View File
@@ -16,6 +16,7 @@ import {
import { useCombatStore, useCraftingStore } from '@/lib/game/stores';
import { DebugName } from '@/lib/game/debug-context';
import { useGameToast } from '@/components/game/GameToast';
import type { DesignEffect } from '@/lib/game/types';
export function CraftingTab() {
const showToast = useGameToast();
@@ -30,6 +31,13 @@ export function CraftingTab() {
const [activeTab, setActiveTab] = useState<'fabricate' | 'enchant'>('fabricate');
const [enchantStage, setEnchantStage] = useState<'design' | 'prepare' | 'apply'>('design');
// Enchant state
const [selectedEquipmentType, setSelectedEquipmentType] = useState<string | null>(null);
const [selectedEffects, setSelectedEffects] = useState<DesignEffect[]>([]);
const [designName, setDesignName] = useState('');
const [selectedDesign, setSelectedDesign] = useState<string | null>(null);
const [selectedEquipmentInstance, setSelectedEquipmentInstance] = useState<string | null>(null);
// Safe toFixed helper
const safeToFixed = (value: number | undefined, decimals: number = 0): string => {
if (value === undefined || isNaN(value)) return '0';
@@ -121,28 +129,28 @@ export function CraftingTab() {
{/* Enchant Stage Content */}
{enchantStage === 'design' && (
<EnchantmentDesigner
selectedEquipmentType={null}
setSelectedEquipmentType={() => {}}
selectedEffects={[]}
setSelectedEffects={() => {}}
designName={''}
setDesignName={() => {}}
selectedDesign={null}
setSelectedDesign={() => {}}
selectedEquipmentType={selectedEquipmentType}
setSelectedEquipmentType={setSelectedEquipmentType}
selectedEffects={selectedEffects}
setSelectedEffects={setSelectedEffects}
designName={designName}
setDesignName={setDesignName}
selectedDesign={selectedDesign}
setSelectedDesign={setSelectedDesign}
/>
)}
{enchantStage === 'prepare' && (
<EnchantmentPreparer
selectedEquipmentInstance={null}
setSelectedEquipmentInstance={() => {}}
selectedEquipmentInstance={selectedEquipmentInstance}
setSelectedEquipmentInstance={setSelectedEquipmentInstance}
/>
)}
{enchantStage === 'apply' && (
<EnchantmentApplier
selectedEquipmentInstance={null}
setSelectedEquipmentInstance={() => {}}
selectedDesign={null}
setSelectedDesign={() => {}}
selectedEquipmentInstance={selectedEquipmentInstance}
setSelectedEquipmentInstance={setSelectedEquipmentInstance}
selectedDesign={selectedDesign}
setSelectedDesign={setSelectedDesign}
onEnchantmentApplied={handleEnchantmentApplied}
onCapacityExceeded={handleCapacityExceeded}
/>