37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import type { MiniGameDraftGenerationState } from '../../services/miniGameDraftGenerationProgress';
|
|
import type { SelectionStage } from './platformEntryTypes';
|
|
|
|
type VisualNovelEntryGenerationPhase = 'generating' | 'ready' | 'failed';
|
|
|
|
type PlatformGenerationProgressClockInput = {
|
|
selectionStage: SelectionStage;
|
|
generationState?: MiniGameDraftGenerationState | null;
|
|
visualNovelGenerationStartedAtMs?: number | null;
|
|
visualNovelGenerationPhase?: VisualNovelEntryGenerationPhase;
|
|
};
|
|
|
|
export function shouldTickPlatformGenerationProgressClock({
|
|
selectionStage,
|
|
generationState,
|
|
visualNovelGenerationStartedAtMs,
|
|
visualNovelGenerationPhase,
|
|
}: PlatformGenerationProgressClockInput) {
|
|
if (selectionStage === 'visual-novel-generating') {
|
|
return (
|
|
visualNovelGenerationStartedAtMs != null &&
|
|
visualNovelGenerationPhase !== 'ready' &&
|
|
visualNovelGenerationPhase !== 'failed'
|
|
);
|
|
}
|
|
|
|
if (!selectionStage.endsWith('-generating')) {
|
|
return false;
|
|
}
|
|
|
|
return Boolean(
|
|
generationState &&
|
|
generationState.phase !== 'ready' &&
|
|
generationState.phase !== 'failed',
|
|
);
|
|
}
|