import type { Dispatch, SetStateAction } from 'react'; import type { Character, GameState, StoryOption, } from '../types'; import { applyRecoveryEffectToState, type BattlePlan, buildBattlePlan as buildBattlePlanFromEngine, } from './combat/battlePlan'; import { createCombatPlayback } from './combat/playback'; import type { EscapePlaybackSync } from './combat/escapeFlow'; import { buildResolvedChoiceState as buildResolvedChoiceStateFromEngine, type ResolvedChoiceState, } from './combat/resolvedChoice'; export { buildSkillEffects } from './combat/skillEffects'; export type { ResolvedChoiceState } from './combat/resolvedChoice'; const TOTAL_SEQUENCE_MS = 6000; const TURN_VISUAL_MS = 820; const RESET_STAGE_MS = 260; const MIN_TURN_COUNT = 6; export type ResolvedChoicePlaybackSync = EscapePlaybackSync; void applyRecoveryEffectToState; export function useCombatFlow({ setGameState, }: { setGameState: Dispatch>; }) { const buildBattlePlan = (state: GameState, option: StoryOption, character: Character): BattlePlan => buildBattlePlanFromEngine({ state, option, character, totalSequenceMs: TOTAL_SEQUENCE_MS, turnVisualMs: TURN_VISUAL_MS, resetStageMs: RESET_STAGE_MS, minTurnCount: MIN_TURN_COUNT, }); const buildResolvedChoiceState = ( state: GameState, option: StoryOption, character: Character, ): ResolvedChoiceState => buildResolvedChoiceStateFromEngine({ state, option, character, buildBattlePlan, }); const { playResolvedChoice } = createCombatPlayback({ setGameState, turnVisualMs: TURN_VISUAL_MS, resetStageMs: RESET_STAGE_MS, }); return { buildResolvedChoiceState, playResolvedChoice, }; }