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