-
Notifications
You must be signed in to change notification settings - Fork 0
/
en-game-map.go
90 lines (79 loc) · 1.91 KB
/
en-game-map.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
package amiibo
import "fmt"
// ENGGameMap is map of ENGGame.
type ENGGameMap (map[string]ENGGame)
// Add adds a ENGGame to the ENGGameMap.
func (e *ENGGameMap) Add(v *ENGGame) (ok bool) {
(*e)[v.GetID()] = *v
ok = e.Has(v.GetID())
return
}
// Del deletes a ENGGame from the ENGGameMap.
func (e *ENGGameMap) Del(ID string) (ok bool) {
delete(*e, ID)
ok = e.Has(ID) == false
return
}
// Each performs a for-each loop through the ENGGameMap.
func (e *ENGGameMap) Each(f func(string, ENGGame)) {
for k, v := range *e {
f(k, v)
}
}
// Get gets an ENGGame from the ENGGameMap.
func (e *ENGGameMap) Get(ID string) (v ENGGame, ok bool) {
v, ok = (*e)[ID]
return
}
// Has checks if the ENGGameMap has a ENGGame with the corresponding ID.
func (e *ENGGameMap) Has(ID string) (ok bool) {
_, ok = e.Get(ID)
return
}
// Len returns the len of the ENGGameMap.
func (e *ENGGameMap) Len() int { return len(*e) }
// NewENGGameMap returns a ENGGameMap.
func NewENGGameMap(ENGChart *ENGChart) (v ENGGameMap, err error) {
v = (make(ENGGameMap))
for _, EN := range ENGChart.GameList {
ID := EN.GetID()
if _, ok := v[ID]; !ok {
v[ID] = ENGGame{}
}
var p, ok = v[ID]
if !ok {
err = fmt.Errorf("(ENGGameMap)[ID]: false")
}
if err != nil {
return
}
err = (&p).AddENGChartGame(&EN)
if err != nil {
return
}
v[ID] = p
}
for _, EN := range ENGChart.Items {
ID := EN.GetID()
if _, ok := v[ID]; !ok {
v[ID] = ENGGame{}
}
var p = v[ID]
err = (&p).AddENGChartItem(&EN)
if err != nil {
return
}
v[ID] = p
}
return
}
// ReadENGGameMap reads a ENGGameMap from disc.
func ReadENGGameMap(dir string, filename string) (v ENGGameMap, err error) {
err = readJSONFile(dir, filename, &v)
return v, err
}
// WriteENGGameMap writes a ENGGameMap to disc.
func WriteENGGameMap(dir string, filename string, v *ENGGameMap) (fullpath string, err error) {
fullpath, err = writeJSONFile(dir, filename, v)
return
}