游戏世界事件完善
This commit is contained in:
parent
8d1ae98671
commit
0d744f69fa
|
@ -34,7 +34,6 @@ type World[PlayerID comparable] struct {
|
||||||
actorGeneratedEventHandles []game.ActorGeneratedEventHandle
|
actorGeneratedEventHandles []game.ActorGeneratedEventHandle
|
||||||
actorAnnihilationEventHandles []game.ActorAnnihilationEventHandle
|
actorAnnihilationEventHandles []game.ActorAnnihilationEventHandle
|
||||||
actorOwnerChangeEventHandles []game.ActorOwnerChangeEventHandle[PlayerID]
|
actorOwnerChangeEventHandles []game.ActorOwnerChangeEventHandle[PlayerID]
|
||||||
worldGeneratedEventHandles []game.WorldGeneratedEventHandle[PlayerID]
|
|
||||||
worldResetEventHandles []game.WorldResetEventHandle[PlayerID]
|
worldResetEventHandles []game.WorldResetEventHandle[PlayerID]
|
||||||
worldReleasedEventHandles []game.WorldReleaseEventHandle[PlayerID]
|
worldReleasedEventHandles []game.WorldReleaseEventHandle[PlayerID]
|
||||||
|
|
||||||
|
@ -171,10 +170,12 @@ func (slf *World[PlayerID]) Reset() {
|
||||||
slf.owners.Clear()
|
slf.owners.Clear()
|
||||||
slf.actors.Clear()
|
slf.actors.Clear()
|
||||||
slf.actorGuid.Store(0)
|
slf.actorGuid.Store(0)
|
||||||
|
slf.OnWorldResetEvent()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (slf *World[PlayerID]) Release() {
|
func (slf *World[PlayerID]) Release() {
|
||||||
if !slf.released.Swap(true) {
|
if !slf.released.Swap(true) {
|
||||||
|
slf.OnWorldReleaseEvent()
|
||||||
slf.Reset()
|
slf.Reset()
|
||||||
slf.players = nil
|
slf.players = nil
|
||||||
slf.playerActors = nil
|
slf.playerActors = nil
|
||||||
|
@ -189,16 +190,6 @@ func (slf *World[PlayerID]) Release() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (slf *World[PlayerID]) RegWorldGeneratedEvent(handle game.WorldGeneratedEventHandle[PlayerID]) {
|
|
||||||
slf.worldGeneratedEventHandles = append(slf.worldGeneratedEventHandles, handle)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *World[PlayerID]) OnWorldGeneratedEvent() {
|
|
||||||
for _, handle := range slf.worldGeneratedEventHandles {
|
|
||||||
handle(slf)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *World[PlayerID]) RegWorldResetEvent(handle game.WorldResetEventHandle[PlayerID]) {
|
func (slf *World[PlayerID]) RegWorldResetEvent(handle game.WorldResetEventHandle[PlayerID]) {
|
||||||
slf.worldResetEventHandles = append(slf.worldResetEventHandles, handle)
|
slf.worldResetEventHandles = append(slf.worldResetEventHandles, handle)
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,9 +44,6 @@ type World[PlayerID comparable] interface {
|
||||||
// Release 释放世界资源,释放后世界将不可用
|
// Release 释放世界资源,释放后世界将不可用
|
||||||
Release()
|
Release()
|
||||||
|
|
||||||
// RegWorldGeneratedEvent 世界创建完成时将立即执行被注册的事件处理函数
|
|
||||||
RegWorldGeneratedEvent(handle WorldGeneratedEventHandle[PlayerID])
|
|
||||||
OnWorldGeneratedEvent()
|
|
||||||
// RegWorldResetEvent 世界被重置后将立即执行被注册的事件处理函数
|
// RegWorldResetEvent 世界被重置后将立即执行被注册的事件处理函数
|
||||||
RegWorldResetEvent(handle WorldResetEventHandle[PlayerID])
|
RegWorldResetEvent(handle WorldResetEventHandle[PlayerID])
|
||||||
OnWorldResetEvent()
|
OnWorldResetEvent()
|
||||||
|
@ -71,7 +68,6 @@ type World[PlayerID comparable] interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
WorldGeneratedEventHandle[ID comparable] func(world World[ID])
|
|
||||||
WorldResetEventHandle[ID comparable] func(world World[ID])
|
WorldResetEventHandle[ID comparable] func(world World[ID])
|
||||||
WorldReleaseEventHandle[ID comparable] func(world World[ID])
|
WorldReleaseEventHandle[ID comparable] func(world World[ID])
|
||||||
PlayerJoinWorldEventHandle[ID comparable] func(player Player[ID])
|
PlayerJoinWorldEventHandle[ID comparable] func(player Player[ID])
|
||||||
|
|
Loading…
Reference in New Issue