This commit is contained in:
2026-10-18 04:40:55 +07:00
parent c36d3fd314
commit 41d3e8ac5e
12 changed files with 4105 additions and 157 deletions
+44
View File
@@ -0,0 +1,44 @@
import type {
ScreenCommand,
ScreenMode,
SaveScreenPlanReq,
} from './api/generated/crabs/evening_detective_server/index.js'
import type { ScreenPlan } from '../src/types/screen.js'
const modes = [
'SCREEN_MODE_UNSPECIFIED',
'SCREEN_MODE_COVER',
'SCREEN_MODE_INTRO',
'SCREEN_MODE_INTRO_DONE',
'SCREEN_MODE_CONCLUSION',
'SCREEN_MODE_CONCLUSION_DONE',
'SCREEN_MODE_RESULTS',
'SCREEN_MODE_TIMER',
'SCREEN_MODE_TEXT',
] as const satisfies readonly ScreenMode[]
const commands = [
'SCREEN_COMMAND_UNSPECIFIED',
'SCREEN_COMMAND_PLAY',
'SCREEN_COMMAND_PAUSE',
'SCREEN_COMMAND_RESUME',
'SCREEN_COMMAND_STOP',
'SCREEN_COMMAND_REPLAY',
'SCREEN_COMMAND_SEEK',
'SCREEN_COMMAND_VOLUME',
'SCREEN_COMMAND_TIMER_START',
'SCREEN_COMMAND_TIMER_PAUSE',
'SCREEN_COMMAND_TIMER_RESUME',
'SCREEN_COMMAND_TIMER_RESET',
] as const satisfies readonly ScreenCommand[]
export function apiScreenMode(mode: number): ScreenMode {
const value = modes[mode]
if (!value) throw new Error('Некорректный режим экрана')
return value
}
export function apiScreenCommand(command: number): ScreenCommand {
const value = commands[command]
if (!value) throw new Error('Некорректная команда экрана')
return value
}
export function apiPlan(plan: ScreenPlan): Pick<SaveScreenPlanReq, 'steps' | 'currentStep'> {
return { ...plan, steps: plan.steps.map((step) => ({ ...step, mode: apiScreenMode(step.mode) })) }
}