]> git.lizzy.rs Git - hydra-dragonfire.git/blobdiff - hydra.go
Expose supported serialize and proto versions to Lua
[hydra-dragonfire.git] / hydra.go
index e3d2427d7e9ece09c06101f479c37950b73c19a8..3bc74142505f96249bdc611eef3afc930253f2cb 100644 (file)
--- a/hydra.go
+++ b/hydra.go
@@ -2,7 +2,7 @@ package main
 
 import (
        _ "embed"
-       "github.com/dragonfireclient/hydra/tolua"
+       "github.com/dragonfireclient/hydra-dragonfire/convert"
        "github.com/yuin/gopher-lua"
        "os"
        "os/signal"
@@ -13,8 +13,27 @@ import (
 var lastTime = time.Now()
 var canceled = false
 
+var serializeVer uint8 = 28
+var protoVer uint16 = 39
+
+//go:embed builtin/luax/init.lua
+var builtinLuaX string
+
 //go:embed builtin/vector.lua
-var vectorLibrary string
+var builtinVector string
+
+//go:embed builtin/escapes.lua
+var builtinEscapes string
+
+//go:embed builtin/client.lua
+var builtinClient string
+
+var builtinFiles = []string{
+       builtinLuaX,
+       builtinVector,
+       builtinEscapes,
+       builtinClient,
+}
 
 var hydraFuncs = map[string]lua.LGFunction{
        "client":     l_client,
@@ -47,7 +66,7 @@ func l_poll(l *lua.LState) int {
        } else {
                l.Push(client.userdata)
        }
-       l.Push(tolua.Pkt(l, pkt))
+       l.Push(convert.PushPkt(l, pkt))
        l.Push(lua.LBool(timeout))
        return 3
 }
@@ -81,13 +100,17 @@ func main() {
 
        hydra := l.SetFuncs(l.NewTable(), hydraFuncs)
        l.SetField(hydra, "BS", lua.LNumber(10.0))
+       l.SetField(hydra, "serialize_ver", lua.LNumber(serializeVer))
+       l.SetField(hydra, "proto_ver", lua.LNumber(protoVer))
        l.SetGlobal("hydra", hydra)
 
        l.SetField(l.NewTypeMetatable("hydra.auth"), "__index", l.SetFuncs(l.NewTable(), authFuncs))
        l.SetField(l.NewTypeMetatable("hydra.client"), "__index", l.NewFunction(l_client_index))
 
-       if err := l.DoString(vectorLibrary); err != nil {
-               panic(err)
+       for _, str := range builtinFiles {
+               if err := l.DoString(str); err != nil {
+                       panic(err)
+               }
        }
 
        if err := l.DoFile(os.Args[1]); err != nil {