游戏基本元素释放逻辑优化
This commit is contained in:
parent
3274810144
commit
a361dd85b2
|
@ -18,6 +18,7 @@ type Gameplay struct {
|
|||
|
||||
gameplayStartEventHandles []game.GameplayStartEventHandle
|
||||
gameplayTimeChangeEventHandles []game.GameplayTimeChangeEventHandle
|
||||
gameplayReleaseEventHandles []game.GameplayReleaseEventHandle
|
||||
}
|
||||
|
||||
func (slf *Gameplay) GameStart(handle func() error) error {
|
||||
|
@ -42,6 +43,13 @@ func (slf *Gameplay) SetTimeOffset(offset time.Duration) {
|
|||
slf.OnGameplayTimeChangeEvent()
|
||||
}
|
||||
|
||||
func (slf *Gameplay) Release() {
|
||||
slf.OnGameplayReleaseEvent()
|
||||
slf.gameplayStartEventHandles = nil
|
||||
slf.gameplayTimeChangeEventHandles = nil
|
||||
slf.gameplayReleaseEventHandles = nil
|
||||
}
|
||||
|
||||
func (slf *Gameplay) RegGameplayStartEvent(handle game.GameplayStartEventHandle) {
|
||||
slf.gameplayStartEventHandles = append(slf.gameplayStartEventHandles, handle)
|
||||
}
|
||||
|
@ -66,7 +74,12 @@ func (slf *Gameplay) OnGameplayTimeChangeEvent() {
|
|||
}
|
||||
}
|
||||
|
||||
func (slf *Gameplay) Release() {
|
||||
slf.gameplayStartEventHandles = nil
|
||||
slf.gameplayTimeChangeEventHandles = nil
|
||||
func (slf *Gameplay) RegGameplayReleaseEvent(handle game.GameplayReleaseEventHandle) {
|
||||
slf.gameplayReleaseEventHandles = append(slf.gameplayReleaseEventHandles, handle)
|
||||
}
|
||||
|
||||
func (slf *Gameplay) OnGameplayReleaseEvent() {
|
||||
for _, handle := range slf.gameplayReleaseEventHandles {
|
||||
handle()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -197,6 +197,8 @@ func (slf *World[PlayerID, Player]) Release() {
|
|||
slf.actorGeneratedEventHandles = nil
|
||||
slf.actorAnnihilationEventHandles = nil
|
||||
slf.actorOwnerChangeEventHandles = nil
|
||||
slf.worldResetEventHandles = nil
|
||||
slf.worldReleasedEventHandles = nil
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,9 +24,13 @@ type Gameplay interface {
|
|||
// RegGameplayTimeChangeEvent 游戏玩法的时间被改变(非自然流逝)时将立刻执行被注册的事件处理函数
|
||||
RegGameplayTimeChangeEvent(handle GameplayTimeChangeEventHandle)
|
||||
OnGameplayTimeChangeEvent()
|
||||
// RegGameplayReleaseEvent 游戏玩法资源被释放前将立即执行被注册的事件处理函数
|
||||
RegGameplayReleaseEvent(handle GameplayReleaseEventHandle)
|
||||
OnGameplayReleaseEvent()
|
||||
}
|
||||
|
||||
type (
|
||||
GameplayStartEventHandle func(startTime time.Time)
|
||||
GameplayTimeChangeEventHandle func(current time.Time)
|
||||
GameplayReleaseEventHandle func()
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue