Major updates/patches, functionality, api
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Tyler
2020-07-09 21:01:29 -04:00
parent afb79eaceb
commit b52b38179a
32 changed files with 1798 additions and 302 deletions

54
events/events.go Normal file
View File

@ -0,0 +1,54 @@
package events
import (
"sync"
)
type eventHandler func(args ...interface{})
var (
eventMap = make(map[string][]eventHandler)
eventMapLock sync.RWMutex
allListeners = make([]eventHandler, 0)
initialized = false
)
func On(name string, f eventHandler) {
eventMapLock.Lock()
defer eventMapLock.Unlock()
handlers, exists := eventMap[name]
if !exists {
handlers = make([]eventHandler, 0)
}
handlers = append(handlers, f)
eventMap[name] = handlers
}
func OnALl(f eventHandler) {
allListeners = append(allListeners, f)
}
func Call(name string, args ...interface{}) {
if !initialized && name != Init {
Call(Init)
initialized = true
}
eventMapLock.RLock()
handlers, exists := eventMap[name]
eventMapLock.RUnlock()
if !exists {
return
}
for _, handler := range handlers {
handler(args...)
}
}

29
events/names.go Normal file
View File

@ -0,0 +1,29 @@
package events
const (
Init = "init"
ServerStarted = "server_started"
ServerClosing = "server_closing"
// LoggedIn, Args: User, Address, X, Y, Z
LoggedIn = "logged_in"
// Authenticated, Args: User, UUID
Authenticated = "authenticated"
// Join, Args: User
Join = "join"
// Leave, Args: User
Leave = "leave"
// Op, Args: User, Source?
Op = "op"
// Deop, Args: User, Source?
Deop = "deop"
// Message, Args: User, Message
Message = "message"
)