import { Node, Vec3 } from 'cc'; import BoosterType from '../Enum/BoosterType'; import ControllerSide from '../Enum/ControllerSide'; import GameState from '../Enum/GameState'; import ScoreType from '../Enum/ScoreType'; import { RewardType } from '../Manager/GachaManager'; enum GameEvent { Score, BallOut, MultiBall, TimeUpdate, GameStateChange, ObjectRelease, BoosterActive, BoosterDisable, ControlTouchStart, ControlTouchEnd, WarningTime, TicketUpdate, } export interface GameEventCallbackMap { [GameEvent.Score]: (score: number, points?: number, type?: ScoreType, position?: Vec3) => void; [GameEvent.BallOut]: () => void; [GameEvent.MultiBall]: (active: boolean) => void; [GameEvent.TimeUpdate]: (time: number) => void; [GameEvent.GameStateChange]: (state: GameState) => void; [GameEvent.ObjectRelease]: (obj: Node) => void; [GameEvent.BoosterActive]: (boosterType: BoosterType, displayName: string) => void; [GameEvent.BoosterDisable]: (boosterType: BoosterType) => void; [GameEvent.ControlTouchStart]: (touchSide: ControllerSide) => void; [GameEvent.ControlTouchEnd]: (touchSide: ControllerSide) => void; [GameEvent.WarningTime]: (warning: boolean) => void; [GameEvent.TicketUpdate]: (ticket: number) => void; } export interface GameEventArgMap { [GameEvent.Score]: [number, number, ScoreType, Vec3]; [GameEvent.BallOut]: null; [GameEvent.MultiBall]: boolean; [GameEvent.TimeUpdate]: number; [GameEvent.GameStateChange]: GameState; [GameEvent.ObjectRelease]: Node; [GameEvent.BoosterActive]: [BoosterType, string]; [GameEvent.BoosterDisable]: BoosterType; [GameEvent.ControlTouchStart]: ControllerSide; [GameEvent.ControlTouchEnd]: ControllerSide; [GameEvent.WarningTime]: boolean; [GameEvent.TicketUpdate]: number; } export default GameEvent;