Add generic event

This commit is contained in:
Tnze
2021-02-27 14:49:11 +08:00
parent 3b83aaf8ae
commit 8e7ac43bf5
10 changed files with 316 additions and 195 deletions

View File

@ -5,7 +5,8 @@ import (
)
type Events struct {
handlers map[int32]*handlerHeap
generic *handlerHeap // for every packet
handlers map[int32]*handlerHeap // for specific packet id only
}
func (e *Events) AddListener(listeners ...PacketHandler) {
@ -21,6 +22,18 @@ func (e *Events) AddListener(listeners ...PacketHandler) {
}
}
// AddGeneric adds listeners like AddListener, but the packet ID is ignored.
// Generic listener is always called before specific packet listener.
func (e *Events) AddGeneric(listeners ...PacketHandler) {
for _, l := range listeners {
if e.generic == nil {
e.generic = &handlerHeap{l}
} else {
e.generic.Push(l)
}
}
}
type PacketHandlerFunc func(p pk.Packet) error
type PacketHandler struct {
ID int32