You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
925 B
41 lines
925 B
import { Player, PlayerPhantom } from "./Player"
|
|
import { Action } from "./Action"
|
|
import { CourtObject } from "./CourtObjects"
|
|
|
|
export interface Tactic {
|
|
readonly id: number
|
|
readonly name: string
|
|
readonly courtType: CourtType
|
|
readonly currentStepContent: StepContent
|
|
readonly rootStepNode: StepInfoNode
|
|
}
|
|
|
|
export interface StepContent {
|
|
readonly stepId: number
|
|
readonly components: TacticComponent[]
|
|
}
|
|
|
|
export interface StepInfoNode {
|
|
readonly id: number
|
|
readonly children: StepInfoNode[]
|
|
}
|
|
|
|
export type TacticComponent = Player | CourtObject | PlayerPhantom
|
|
export type ComponentId = string
|
|
export type CourtType = "PLAIN" | "HALF"
|
|
|
|
export interface Component<T, Positioning> {
|
|
/**
|
|
* The component's type
|
|
*/
|
|
readonly type: T
|
|
/**
|
|
* The component's identifier
|
|
*/
|
|
readonly id: ComponentId
|
|
|
|
readonly pos: Positioning
|
|
|
|
readonly actions: Action[]
|
|
}
|