문제 수 선택 기능 추가 - 5문제 / 10문제
This commit is contained in:
+16
-6
@@ -16,17 +16,21 @@ export interface GameSession {
|
||||
results: (GradeResult | null)[];
|
||||
}
|
||||
|
||||
export type ProblemCount = 5 | 10;
|
||||
|
||||
interface GameState {
|
||||
session: GameSession | null;
|
||||
initSession: (count?: number) => void;
|
||||
selectedProblemCount: ProblemCount;
|
||||
setProblemCount: (count: ProblemCount) => void;
|
||||
initSession: (count?: ProblemCount) => void;
|
||||
submitAnswer: (answer: UserAnswer) => void;
|
||||
nextProblem: () => void;
|
||||
resetSession: () => void;
|
||||
}
|
||||
|
||||
const DEFAULT_SESSION_COUNT = 10;
|
||||
const DEFAULT_SESSION_COUNT: ProblemCount = 10;
|
||||
|
||||
function createSession(count = DEFAULT_SESSION_COUNT): GameSession {
|
||||
function createSession(count: ProblemCount = DEFAULT_SESSION_COUNT): GameSession {
|
||||
const problems = generateSession(count);
|
||||
|
||||
return {
|
||||
@@ -38,8 +42,14 @@ function createSession(count = DEFAULT_SESSION_COUNT): GameSession {
|
||||
|
||||
export const useGameStore = create<GameState>((set, get) => ({
|
||||
session: null,
|
||||
initSession: (count = DEFAULT_SESSION_COUNT) => {
|
||||
set({ session: createSession(count) });
|
||||
selectedProblemCount: DEFAULT_SESSION_COUNT,
|
||||
setProblemCount: (count) => {
|
||||
set({ selectedProblemCount: count });
|
||||
},
|
||||
initSession: (count) => {
|
||||
const selectedProblemCount = count ?? get().selectedProblemCount;
|
||||
|
||||
set({ session: createSession(selectedProblemCount) });
|
||||
},
|
||||
submitAnswer: (answer) => {
|
||||
const { session } = get();
|
||||
@@ -73,6 +83,6 @@ export const useGameStore = create<GameState>((set, get) => ({
|
||||
});
|
||||
},
|
||||
resetSession: () => {
|
||||
set({ session: createSession() });
|
||||
set({ session: createSession(get().selectedProblemCount) });
|
||||
},
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user