]> git.lizzy.rs Git - hydra-dragonfire.git/blob - comp_map.go
Merge pull request #4 from Minetest-j45/master
[hydra-dragonfire.git] / comp_map.go
1 package main
2
3 import (
4         "github.com/dragonfireclient/mt"
5         "github.com/yuin/gopher-lua"
6 )
7
8 type CompMap struct {
9         client   *Client
10         mapdata  *Map
11         userdata *lua.LUserData
12 }
13
14 var compMapFuncs = map[string]lua.LGFunction{
15         "get": l_comp_map_get,
16         "set": l_comp_map_set,
17 }
18
19 func getCompMap(l *lua.LState) *CompMap {
20         return l.CheckUserData(1).Value.(*CompMap)
21 }
22
23 func (comp *CompMap) create(client *Client, l *lua.LState) {
24         comp.client = client
25         comp.mapdata = newMap(l)
26         comp.userdata = l.NewUserData()
27         comp.userdata.Value = comp
28         l.SetMetatable(comp.userdata, l.GetTypeMetatable("hydra.comp.map"))
29 }
30
31 func (comp *CompMap) push() lua.LValue {
32         return comp.userdata
33 }
34
35 func (comp *CompMap) connect() {
36 }
37
38 func (comp *CompMap) process(pkt *mt.Pkt) {
39         comp.mapdata.process(comp.client, pkt)
40 }
41
42 func l_comp_map_set(l *lua.LState) int {
43         comp := getCompMap(l)
44         comp.mapdata = getMap(l, 2)
45         return 0
46 }
47
48 func l_comp_map_get(l *lua.LState) int {
49         comp := getCompMap(l)
50         l.Push(comp.mapdata.userdata)
51         return 1
52 }