65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/yuin/gopher-lua"
|
|
"io/ioutil"
|
|
luajson "layeh.com/gopher-json"
|
|
"layeh.com/gopher-luar"
|
|
"meow.tf/residentsleeper/scripting/commands"
|
|
"meow.tf/residentsleeper/scripting/config"
|
|
"meow.tf/residentsleeper/scripting/event"
|
|
"meow.tf/residentsleeper/scripting/eventloop"
|
|
"meow.tf/residentsleeper/scripting/minecraft"
|
|
"meow.tf/residentsleeper/scripting/regexp"
|
|
"path"
|
|
)
|
|
|
|
func loadScripts(scriptPath string) error {
|
|
files, err := ioutil.ReadDir(scriptPath)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, file := range files {
|
|
if file.IsDir() {
|
|
continue
|
|
}
|
|
|
|
log.WithField("file", file.Name()).Info("Loading script")
|
|
|
|
err = loadScript(path.Join(scriptPath, file.Name()))
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func loadScript(scriptFile string) error {
|
|
loop := eventloop.NewEventLoop()
|
|
|
|
var err error
|
|
|
|
loop.Run(func(L *lua.LState) {
|
|
luajson.Preload(L)
|
|
|
|
L.PreloadModule("config", config.Loader)
|
|
L.PreloadModule("event", event.Loader)
|
|
L.PreloadModule("regexp", regexp.Loader)
|
|
L.PreloadModule("minecraft", minecraft.Loader)
|
|
L.PreloadModule("commands", commands.Loader)
|
|
|
|
L.SetGlobal("rcon", luar.New(L, client))
|
|
|
|
err = L.DoFile(scriptFile)
|
|
})
|
|
|
|
loop.Start()
|
|
|
|
return err
|
|
}
|