리팩토링: 코드 최적화

This commit is contained in:
2026-05-25 18:42:13 +09:00
parent 5ee33bf0d3
commit d56cada1ec
11 changed files with 215 additions and 175 deletions
+1 -32
View File
@@ -10,7 +10,7 @@ import type {
UserAnswer,
} from "@/lib/engine/types";
interface GameSession {
export interface GameSession {
problems: ParenthesisSignProblem[];
currentIndex: number;
results: (GradeResult | null)[];
@@ -22,10 +22,6 @@ interface GameState {
submitAnswer: (answer: UserAnswer) => void;
nextProblem: () => void;
resetSession: () => void;
currentProblem: () => ParenthesisSignProblem | null;
currentResult: () => GradeResult | null;
isComplete: () => boolean;
score: () => { correct: number; total: number };
}
const DEFAULT_SESSION_COUNT = 10;
@@ -79,31 +75,4 @@ export const useGameStore = create<GameState>((set, get) => ({
resetSession: () => {
set({ session: createSession() });
},
currentProblem: () => {
const { session } = get();
if (!session) return null;
return session.problems[session.currentIndex] ?? null;
},
currentResult: () => {
const { session } = get();
if (!session) return null;
return session.results[session.currentIndex] ?? null;
},
isComplete: () => {
const { session } = get();
return Boolean(session && session.currentIndex >= session.problems.length);
},
score: () => {
const { session } = get();
if (!session) return { correct: 0, total: 0 };
return {
correct: session.results.filter((result) => result?.correct).length,
total: session.problems.length,
};
},
}));