/
bindings.go
106 lines (82 loc) · 2.05 KB
/
bindings.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package ospokemon
import "taylz.io/types"
const PARTbindings = "bindings"
type Bindings map[string]*Binding
func (b Bindings) Part() string {
return PARTbindings
}
func (parts Parts) GetBindings() Bindings {
bindings, _ := parts[PARTbindings].(Bindings)
return bindings
}
func (bindings Bindings) SetAction(key string, action *Action) {
var binding *Binding
if binding = action.GetBinding(); binding != nil {
bindings.Remove(binding.Key)
}
if binding = bindings[key]; binding != nil {
binding.RemoveParts()
} else {
binding = MakeBinding()
binding.Key = key
}
binding.SetAction(action)
bindings[binding.Key] = binding
}
func (bindings Bindings) SetItemslot(key string, itemslot *Itemslot) {
var binding *Binding
if binding = itemslot.GetBinding(); binding != nil {
bindings.Remove(binding.Key)
}
if binding = bindings[key]; binding != nil {
binding.RemoveParts()
} else {
binding = MakeBinding()
binding.Key = key
}
binding.SetItemslot(itemslot)
bindings[binding.Key] = binding
}
func (bindings Bindings) SetWalk(key string, walk string) {
var binding *Binding
// if binding = walk.GetBinding(); binding != nil {
// bindings.Remove(binding.Key)
// }
if binding = bindings[key]; binding != nil {
binding.RemoveParts()
} else {
binding = MakeBinding()
binding.Key = key
}
binding.SetWalk(walk)
bindings[binding.Key] = binding
}
func (bindings Bindings) SetMenu(key string, menu string) error {
var binding *Binding
// if binding = menu.GetBinding(); binding != nil {
// bindings.Remove(binding.Key)
// }
if binding = bindings[key]; binding != nil {
binding.RemoveParts()
} else {
binding = MakeBinding()
binding.Key = key
}
binding.SetMenu(menu)
bindings[binding.Key] = binding
return nil
}
func (bindings Bindings) Remove(key string) error {
if binding := bindings[key]; binding != nil {
binding.RemoveParts()
}
delete(bindings, key)
return nil
}
func (bindings Bindings) Json() types.Dict {
json := types.Dict{}
for key, binding := range bindings {
json[key] = binding.Json()
}
return json
}