gameDefinition.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { type LonLatPoint } from '../../utils/projection'
  2. import { type GameAudioConfig } from '../audio/audioConfig'
  3. export type GameMode = 'classic-sequential' | 'score-o'
  4. export type GameControlKind = 'start' | 'control' | 'finish'
  5. export type PunchPolicyType = 'enter' | 'enter-confirm'
  6. export interface GameContentExperienceConfig {
  7. type: 'native' | 'h5'
  8. url: string | null
  9. bridge: string
  10. fallback: 'native'
  11. }
  12. export interface GameContentExperienceConfigOverride {
  13. type?: 'native' | 'h5'
  14. url?: string
  15. bridge?: string
  16. fallback?: 'native'
  17. }
  18. export interface GameControlDisplayContent {
  19. title: string
  20. body: string
  21. autoPopup: boolean
  22. once: boolean
  23. priority: number
  24. clickTitle: string | null
  25. clickBody: string | null
  26. contentExperience: GameContentExperienceConfig | null
  27. clickExperience: GameContentExperienceConfig | null
  28. }
  29. export interface GameControlDisplayContentOverride {
  30. title?: string
  31. body?: string
  32. autoPopup?: boolean
  33. once?: boolean
  34. priority?: number
  35. clickTitle?: string
  36. clickBody?: string
  37. contentExperience?: GameContentExperienceConfigOverride
  38. clickExperience?: GameContentExperienceConfigOverride
  39. }
  40. export interface GameControl {
  41. id: string
  42. code: string
  43. label: string
  44. kind: GameControlKind
  45. point: LonLatPoint
  46. sequence: number | null
  47. score: number | null
  48. displayContent: GameControlDisplayContent | null
  49. }
  50. export interface GameDefinition {
  51. id: string
  52. mode: GameMode
  53. title: string
  54. controlRadiusMeters: number
  55. punchRadiusMeters: number
  56. punchPolicy: PunchPolicyType
  57. requiresFocusSelection: boolean
  58. skipEnabled: boolean
  59. skipRadiusMeters: number
  60. skipRequiresConfirm: boolean
  61. controls: GameControl[]
  62. autoFinishOnLastControl: boolean
  63. audioConfig?: GameAudioConfig
  64. }