리팩토링: 코드 최적화
This commit is contained in:
+1
-32
@@ -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,
|
||||
};
|
||||
},
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user