39 lines
974 B
TypeScript
39 lines
974 B
TypeScript
import { type LonLatPoint } from '../../utils/projection'
|
|
import { type GameAudioConfig } from '../audio/audioConfig'
|
|
|
|
export type GameMode = 'classic-sequential' | 'score-o'
|
|
export type GameControlKind = 'start' | 'control' | 'finish'
|
|
export type PunchPolicyType = 'enter' | 'enter-confirm'
|
|
|
|
export interface GameControlDisplayContent {
|
|
title: string
|
|
body: string
|
|
}
|
|
|
|
export interface GameControl {
|
|
id: string
|
|
code: string
|
|
label: string
|
|
kind: GameControlKind
|
|
point: LonLatPoint
|
|
sequence: number | null
|
|
score: number | null
|
|
displayContent: GameControlDisplayContent | null
|
|
}
|
|
|
|
export interface GameDefinition {
|
|
id: string
|
|
mode: GameMode
|
|
title: string
|
|
controlRadiusMeters: number
|
|
punchRadiusMeters: number
|
|
punchPolicy: PunchPolicyType
|
|
requiresFocusSelection: boolean
|
|
skipEnabled: boolean
|
|
skipRadiusMeters: number
|
|
skipRequiresConfirm: boolean
|
|
controls: GameControl[]
|
|
autoFinishOnLastControl: boolean
|
|
audioConfig?: GameAudioConfig
|
|
}
|