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