import { Node } from 'cc'; import GameState from '../Enum/GameState'; import ScoreType from '../Enum/ScoreType'; enum GameEvent { Score, BallOut, MultiBall, TimeUpdate, GameStateChange, ScoreObjectRelease, } export interface GameEventCallbackMap { [GameEvent.Score]: (score: number, type?: ScoreType) => void; [GameEvent.BallOut]: () => void; [GameEvent.MultiBall]: (active: boolean) => void; [GameEvent.TimeUpdate]: (time: number) => void; [GameEvent.GameStateChange]: (state: GameState) => void; [GameEvent.ScoreObjectRelease]: (obj: Node) => void; } export interface GameEventArgMap { [GameEvent.Score]: [number, ScoreType]; [GameEvent.BallOut]: null; [GameEvent.MultiBall]: boolean; [GameEvent.TimeUpdate]: number; [GameEvent.GameStateChange]: GameState; [GameEvent.ScoreObjectRelease]: Node; } export default GameEvent;