init
This commit is contained in:
71
engine/types.ts
Normal file
71
engine/types.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
export interface SceneNode {
|
||||
id: string
|
||||
videoUrl: string
|
||||
subtitleUrl?: string
|
||||
choices?: Choice[]
|
||||
qte?: QTEDefinition
|
||||
nextScene?: string
|
||||
onEnter?: Effect[]
|
||||
}
|
||||
|
||||
export interface Choice {
|
||||
text: string
|
||||
targetScene: string
|
||||
conditions?: Condition[]
|
||||
effects?: Effect[]
|
||||
timeLimit?: number
|
||||
}
|
||||
|
||||
export interface Condition {
|
||||
variable: string
|
||||
op: '>' | '<' | '>=' | '<=' | '==' | '!=' | 'hasFlag'
|
||||
value: number | string | boolean
|
||||
}
|
||||
|
||||
export interface Effect {
|
||||
type: 'set' | 'add' | 'toggleFlag' | 'triggerEvent'
|
||||
target: string
|
||||
value?: number | string | boolean
|
||||
}
|
||||
|
||||
export interface QTEDefinition {
|
||||
triggerTime: number
|
||||
prompt: string
|
||||
keys: string[]
|
||||
timeLimit: number
|
||||
successScene: string
|
||||
failScene: string
|
||||
effects?: {
|
||||
success: Effect[]
|
||||
fail: Effect[]
|
||||
}
|
||||
}
|
||||
|
||||
export interface GameData {
|
||||
scenes: Record<string, SceneNode>
|
||||
startScene: string
|
||||
variables: Record<string, number>
|
||||
}
|
||||
|
||||
export interface ChoiceRecord {
|
||||
sceneId: string
|
||||
choiceIndex: number
|
||||
choiceText: string
|
||||
}
|
||||
|
||||
export interface SaveData {
|
||||
slot: number
|
||||
timestamp: number
|
||||
currentScene: string
|
||||
variables: Record<string, number>
|
||||
flags: string[]
|
||||
history: ChoiceRecord[]
|
||||
thumbnail?: string
|
||||
}
|
||||
|
||||
export type EngineEvent =
|
||||
| 'sceneChange'
|
||||
| 'choiceRequest'
|
||||
| 'gameEnd'
|
||||
| 'qteTrigger'
|
||||
| 'videoEnd'
|
||||
Reference in New Issue
Block a user