Files
cmr-mini/miniprogram/game/core/gameDefinition.ts

50 lines
1.2 KiB
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
autoPopup: boolean
once: boolean
priority: number
}
export interface GameControlDisplayContentOverride {
title?: string
body?: string
autoPopup?: boolean
once?: boolean
priority?: number
}
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
}