]> git.lizzy.rs Git - hydra-dragonfire.git/blob - types.go
641045786f5a57a29aed8658dd29066b9d99f8f7
[hydra-dragonfire.git] / types.go
1 package main
2
3 import (
4         "github.com/Shopify/go-lua"
5         "github.com/anon55555/mt"
6         "image/color"
7 )
8
9 func luaPushVec2(l *lua.State, val [2]float64) {
10         l.Global("vec2")
11         l.PushNumber(val[0])
12         l.PushNumber(val[1])
13         l.Call(2, 1)
14 }
15
16 func luaPushVec3(l *lua.State, val [3]float64) {
17         l.Global("vec3")
18         l.PushNumber(val[0])
19         l.PushNumber(val[1])
20         l.PushNumber(val[2])
21         l.Call(3, 1)
22 }
23
24 func luaPushBox1(l *lua.State, val [2]float64) {
25         l.Global("box")
26         l.PushNumber(val[0])
27         l.PushNumber(val[1])
28         l.Call(2, 1)
29 }
30
31 func luaPushBox2(l *lua.State, val [2][2]float64) {
32         l.Global("box")
33         luaPushVec2(l, val[0])
34         luaPushVec2(l, val[1])
35         l.Call(2, 1)
36 }
37
38 func luaPushBox3(l *lua.State, val [2][3]float64) {
39         l.Global("box")
40         luaPushVec3(l, val[0])
41         luaPushVec3(l, val[1])
42         l.Call(2, 1)
43 }
44
45 func luaPushColor(l *lua.State, val color.NRGBA) {
46         l.NewTable()
47         l.PushInteger(int(val.R))
48         l.SetField(-2, "r")
49         l.PushInteger(int(val.G))
50         l.SetField(-2, "g")
51         l.PushInteger(int(val.B))
52         l.SetField(-2, "b")
53         l.PushInteger(int(val.A))
54         l.SetField(-2, "a")
55 }
56
57 func luaPushStringSet(l *lua.State, val []string) {
58         l.NewTable()
59         for _, str := range val {
60                 l.PushBoolean(true)
61                 l.SetField(-2, str)
62         }
63 }
64
65 func luaPushStringList(l *lua.State, val []string) {
66         l.NewTable()
67         for i, str := range val {
68                 l.PushString(str)
69                 l.RawSetInt(-2, i+1)
70         }
71 }
72
73 // i hate go for making me do this instead of just using luaPushStringList
74 // but i dont want to make an unsafe cast either
75 func luaPushTextureList(l *lua.State, val []mt.Texture) {
76         l.NewTable()
77         for i, str := range val {
78                 l.PushString(string(str))
79                 l.RawSetInt(-2, i+1)
80         }
81 }