refactor: 将 moving、aoi、leaderboard 包从 game 包中移动至 utils 包
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package aoi
|
||||
|
||||
import "github.com/kercylan98/minotaur/utils/generic"
|
||||
|
||||
type (
|
||||
EntityJoinVisionEventHandle[EID generic.Basic, PosType generic.SignedNumber, E TwoDimensionalEntity[EID, PosType]] func(entity, target E)
|
||||
EntityLeaveVisionEventHandle[EID generic.Basic, PosType generic.SignedNumber, E TwoDimensionalEntity[EID, PosType]] func(entity, target E)
|
||||
)
|
||||
|
||||
type event[EID generic.Basic, PosType generic.SignedNumber, E TwoDimensionalEntity[EID, PosType]] struct {
|
||||
entityJoinVisionEventHandles []EntityJoinVisionEventHandle[EID, PosType, E]
|
||||
entityLeaveVisionEventHandles []EntityLeaveVisionEventHandle[EID, PosType, E]
|
||||
}
|
||||
|
||||
// RegEntityJoinVisionEvent 在新对象进入视野时将会立刻执行被注册的事件处理函数
|
||||
func (slf *event[EID, PosType, E]) RegEntityJoinVisionEvent(handle EntityJoinVisionEventHandle[EID, PosType, E]) {
|
||||
slf.entityJoinVisionEventHandles = append(slf.entityJoinVisionEventHandles, handle)
|
||||
}
|
||||
|
||||
// OnEntityJoinVisionEvent 在新对象进入视野时将会立刻执行被注册的事件处理函数
|
||||
func (slf *event[EID, PosType, E]) OnEntityJoinVisionEvent(entity, target E) {
|
||||
for _, handle := range slf.entityJoinVisionEventHandles {
|
||||
handle(entity, target)
|
||||
}
|
||||
}
|
||||
|
||||
// RegEntityLeaveVisionEvent 在新对象离开视野时将会立刻执行被注册的事件处理函数
|
||||
func (slf *event[EID, PosType, E]) RegEntityLeaveVisionEvent(handle EntityLeaveVisionEventHandle[EID, PosType, E]) {
|
||||
slf.entityLeaveVisionEventHandles = append(slf.entityLeaveVisionEventHandles, handle)
|
||||
}
|
||||
|
||||
// OnEntityLeaveVisionEvent 在新对象离开视野时将会立刻执行被注册的事件处理函数
|
||||
func (slf *event[EID, PosType, E]) OnEntityLeaveVisionEvent(entity, target E) {
|
||||
for _, handle := range slf.entityLeaveVisionEventHandles {
|
||||
handle(entity, target)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user