Tyler f9512b2485
All checks were successful
continuous-integration/drone/push Build is passing
Move to event loop, prettify warps, add delay to warp with damage counter
2021-06-12 01:29:30 -04:00

43 lines
741 B
Go

package event
import (
lua "github.com/yuin/gopher-lua"
luar "layeh.com/gopher-luar"
"meow.tf/residentsleeper/events"
"meow.tf/residentsleeper/scripting/eventloop"
)
func Loader(L *lua.LState) int {
// register functions to the table
mod := L.SetFuncs(L.NewTable(), exports)
// returns the module
L.Push(mod)
return 1
}
var exports = map[string]lua.LGFunction{
"on": onFunc,
}
func onFunc(L *lua.LState) int {
name := L.CheckString(1)
handler := L.CheckFunction(2)
loop := eventloop.FromState(L)
events.On(name, func(args ...interface{}) {
loop.RunOnLoop(func(L *lua.LState) {
L.Push(handler)
for _, arg := range args {
L.Push(luar.New(L, arg))
}
L.PCall(len(args), 0, handler)
})
})
return 0
}