/
player.go
80 lines (65 loc) · 1.48 KB
/
player.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
package ospokemon
import (
"time"
"taylz.io/types"
)
const PARTplayer = "player"
type Player struct {
Username string
Level uint
Experience uint
Money uint
Class uint
Parts
}
func MakePlayer() *Player {
return &Player{
Parts: make(Parts),
}
}
func BuildPlayer(username string, class *Class, entity *Entity) *Player {
player := MakePlayer()
player.Username = username
player.Class = class.Id
player.AddPart(entity)
entity.SetClass(class)
player.AddPart(entity.Parts[PARTimaging])
entity.Parts = player.Parts
player.AddPart(MakeItembag())
player.AddPart(make(Bindings))
player.AddPart(MakeMenus())
player.AddPart(&Movement{})
player.AddPart(MakeToaster())
player.AddPart(make(Stats))
return player
}
func (p *Player) Part() string {
return PARTplayer
}
func (parts Parts) GetPlayer() *Player {
player, _ := parts[PARTplayer].(*Player)
return player
}
func (p *Player) Update(u *Universe, e *Entity, d time.Duration) {
}
func (player *Player) Json() types.Dict {
return types.Dict{
"username": player.Username,
"level": player.Level,
}
}
func GetPlayer(username string) (p *Player, err error) {
if p = Players.Cache[username]; p == nil {
if p, err = Players.Select(username); err == nil {
Players.Cache[username] = p
}
}
return
}
// persistence headers
var Players = struct {
Cache map[string]*Player
Select func(string) (*Player, error)
Insert func(*Player) error
Delete func(*Player) error
}{make(map[string]*Player), nil, nil, nil}