'use client';
import { DebugName } from '@/components/game/debug/debug-context';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { Bug } from 'lucide-react';
import { usePrestigeStore, useUIStore, useGameStore } from '@/lib/game/stores';
import { ELEMENTS } from '@/lib/game/constants';
import { getGuardianForFloor, getAllGuardianFloors } from '@/lib/game/data/guardian-encounters';
// ─── Guardian Pact Row ───────────────────────────────────────────────────────
function GuardianPactRow({ floor, isSigned, onForceSign, onRemove }: {
floor: number;
isSigned: boolean;
onForceSign: () => void;
onRemove: () => void;
}) {
const guardian = getGuardianForFloor(floor);
if (!guardian) return null;
return (
{guardian.name}
Floor {floor} | {guardian.pact}x multiplier
Element: {guardian.element.map(el => ELEMENTS[el]?.name || el).join(' + ')}
{isSigned ? (
) : (
)}
);
}
// ─── Guardian Pact List ──────────────────────────────────────────────────────
function GuardianPactList({ signedPacts, onForceSign, onRemove }: {
signedPacts: number[];
onForceSign: (floor: number) => void;
onRemove: (floor: number) => void;
}) {
const guardianFloors = getAllGuardianFloors();
return (
{guardianFloors.map((floor) => (
onForceSign(floor)}
onRemove={() => onRemove(floor)}
/>
))}
);
}
// ─── Main Component ───────────────────────────────────────────────────────────
export function PactDebug() {
const signedPacts = usePrestigeStore((s) => s.signedPacts);
const signedPactDetails = usePrestigeStore((s) => s.signedPactDetails);
const prestigeUpgrades = usePrestigeStore((s) => s.prestigeUpgrades);
const addSignedPact = usePrestigeStore((s) => s.addSignedPact);
const removePact = usePrestigeStore((s) => s.removePact);
const debugSetSignedPacts = usePrestigeStore((s) => s.debugSetSignedPacts);
const debugSetPactDetails = usePrestigeStore((s) => s.debugSetPactDetails);
const addLog = useUIStore((s) => s.addLog);
const forcePact = (floor: number) => {
const guardian = getGuardianForFloor(floor);
if (!guardian) return;
if (signedPacts.includes(floor)) {
addLog(`\u26a0\ufe0f Already signed pact with ${guardian.name}!`);
return;
}
const maxPacts = 1 + (prestigeUpgrades?.pactCapacity || 0);
if (signedPacts.length >= maxPacts) {
addLog(`⚠️ Cannot sign more pacts! Maximum: ${maxPacts}.`);
return;
}
addSignedPact(floor);
const newSignedPactDetails = {
...signedPactDetails,
[floor]: {
floor,
guardianId: guardian.element.join('+'),
signedAt: { day: useGameStore.getState().day, hour: useGameStore.getState().hour },
skillLevels: {} as Record,
},
};
debugSetPactDetails(newSignedPactDetails);
addLog(`📜 DEBUG: Pact with ${guardian.name} force-signed!`);
};
const removePactHandler = (floor: number) => {
const guardian = getGuardianForFloor(floor);
removePact(floor);
const newSignedPactDetails = { ...signedPactDetails };
delete newSignedPactDetails[floor];
debugSetPactDetails(newSignedPactDetails);
addLog(`\ud83d\udcdc DEBUG: Removed pact with ${guardian ? guardian.name : 'Unknown'}!`);
};
const clearAllPacts = () => {
addLog(`📜 DEBUG: Cleared all pacts!`);
debugSetSignedPacts([]);
debugSetPactDetails({});
};
return (
Pact Debug
Force sign pacts with guardians (bypasses mana costs and signing time)
{signedPacts.length > 0 && (
)}
Signed Pacts: {signedPacts.length} |
Max Pacts: {1 + (prestigeUpgrades?.pactCapacity || 0)}
);
}
PactDebug.displayName = 'PactDebug';