diff --git a/game/builtin/gameplay_over.go b/game/builtin/gameplay_over.go new file mode 100644 index 0000000..3b2b6c8 --- /dev/null +++ b/game/builtin/gameplay_over.go @@ -0,0 +1,27 @@ +package builtin + +import ( + "minotaur/game" +) + +func NewGameplayOver() *GameplayOver { + return &GameplayOver{} +} + +type GameplayOver struct { + gameplayOverEventHandles []game.GameplayOverEventHandle +} + +func (slf *GameplayOver) GameOver() { + slf.OnGameplayOverEvent() +} + +func (slf *GameplayOver) RegGameplayOverEvent(handle game.GameplayOverEventHandle) { + slf.gameplayOverEventHandles = append(slf.gameplayOverEventHandles, handle) +} + +func (slf *GameplayOver) OnGameplayOverEvent() { + for _, handle := range slf.gameplayOverEventHandles { + handle() + } +} diff --git a/game/gameplay_over.go b/game/gameplay_over.go new file mode 100644 index 0000000..b60e864 --- /dev/null +++ b/game/gameplay_over.go @@ -0,0 +1,14 @@ +package game + +type GameplayOver interface { + // GameOver 游戏玩法结束 + GameOver() + + // RegGameplayOverEvent 游戏玩法结束时将立即调用被注册的事件处理函数 + RegGameplayOverEvent(handle GameplayOverEventHandle) + OnGameplayOverEvent() +} + +type ( + GameplayOverEventHandle func() +)