游戏世界事件完善

This commit is contained in:
kercylan98
2023-04-25 17:24:56 +08:00
parent c685fa163b
commit 8d1ae98671
2 changed files with 45 additions and 0 deletions
+33
View File
@@ -34,6 +34,9 @@ type World[PlayerID comparable] struct {
actorGeneratedEventHandles []game.ActorGeneratedEventHandle
actorAnnihilationEventHandles []game.ActorAnnihilationEventHandle
actorOwnerChangeEventHandles []game.ActorOwnerChangeEventHandle[PlayerID]
worldGeneratedEventHandles []game.WorldGeneratedEventHandle[PlayerID]
worldResetEventHandles []game.WorldResetEventHandle[PlayerID]
worldReleasedEventHandles []game.WorldReleaseEventHandle[PlayerID]
released atomic.Bool
}
@@ -186,6 +189,36 @@ 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]) {
slf.worldResetEventHandles = append(slf.worldResetEventHandles, handle)
}
func (slf *World[PlayerID]) OnWorldResetEvent() {
for _, handle := range slf.worldResetEventHandles {
handle(slf)
}
}
func (slf *World[PlayerID]) RegWorldReleaseEvent(handle game.WorldReleaseEventHandle[PlayerID]) {
slf.worldReleasedEventHandles = append(slf.worldReleasedEventHandles, handle)
}
func (slf *World[PlayerID]) OnWorldReleaseEvent() {
for _, handle := range slf.worldReleasedEventHandles {
handle(slf)
}
}
func (slf *World[PlayerID]) RegPlayerJoinWorldEvent(handle game.PlayerJoinWorldEventHandle[PlayerID]) {
slf.playerJoinWorldEventHandles = append(slf.playerJoinWorldEventHandles, handle)
}