]> git.lizzy.rs Git - hydra-dragonfire.git/blob - convert/push_static.go
4eb7cb07e556f22d489d27a06f52669987f10b6d
[hydra-dragonfire.git] / convert / push_static.go
1 package convert
2
3 import (
4         "github.com/anon55555/mt"
5         "github.com/yuin/gopher-lua"
6         "image/color"
7 )
8
9 //go:generate ./push_mkauto.lua
10
11 func vec2(l *lua.LState, val [2]lua.LNumber) {
12         l.Push(l.GetGlobal("vec2"))
13         l.Push(val[0])
14         l.Push(val[1])
15         l.Call(2, 1)
16 }
17
18 func vec3(l *lua.LState, val [3]lua.LNumber) {
19         l.Push(l.GetGlobal("vec3"))
20         l.Push(val[0])
21         l.Push(val[1])
22         l.Push(val[2])
23         l.Call(3, 1)
24 }
25
26 func popValue(l *lua.LState) lua.LValue {
27         ret := l.Get(-1)
28         l.Pop(1)
29         return ret
30 }
31
32 func pushVec2(l *lua.LState, val [2]lua.LNumber) lua.LValue {
33         vec2(l, val)
34         return popValue(l)
35 }
36
37 func pushVec3(l *lua.LState, val [3]lua.LNumber) lua.LValue {
38         vec3(l, val)
39         return popValue(l)
40 }
41
42 func pushBox1(l *lua.LState, val [2]lua.LNumber) lua.LValue {
43         l.Push(l.GetGlobal("box"))
44         l.Push(val[0])
45         l.Push(val[1])
46         l.Call(2, 1)
47         return popValue(l)
48 }
49
50 func pushBox2(l *lua.LState, val [2][2]lua.LNumber) lua.LValue {
51         l.Push(l.GetGlobal("box"))
52         vec2(l, val[0])
53         vec2(l, val[1])
54         l.Call(2, 1)
55         return popValue(l)
56 }
57
58 func pushBox3(l *lua.LState, val [2][3]lua.LNumber) lua.LValue {
59         l.Push(l.GetGlobal("box"))
60         vec3(l, val[0])
61         vec3(l, val[1])
62         l.Call(2, 1)
63         return popValue(l)
64 }
65
66 func pushColor(l *lua.LState, val color.NRGBA) lua.LValue {
67         tbl := l.NewTable()
68         l.SetField(tbl, "r", lua.LNumber(val.R))
69         l.SetField(tbl, "g", lua.LNumber(val.G))
70         l.SetField(tbl, "b", lua.LNumber(val.B))
71         l.SetField(tbl, "a", lua.LNumber(val.A))
72         return tbl
73 }
74
75 func pushStringSet(l *lua.LState, val []string) lua.LValue {
76         tbl := l.NewTable()
77         for _, str := range val {
78                 l.SetField(tbl, str, lua.LTrue)
79         }
80         return tbl
81 }
82
83 func stringList[T ~string](l *lua.LState, val []T) lua.LValue {
84         tbl := l.NewTable()
85         for _, s := range val {
86                 tbl.Append(lua.LString(s))
87         }
88         return tbl
89 }
90
91 func pushStringList(l *lua.LState, val []string) lua.LValue {
92         return stringList[string](l, val)
93 }
94
95 func pushTextureList(l *lua.LState, val []mt.Texture) lua.LValue {
96         return stringList[mt.Texture](l, val)
97 }