rewrite of the stats system

This commit is contained in:
Fraser Graham
2014-01-16 00:02:59 -08:00
parent 90b7731865
commit 3fa53daadb
7 changed files with 46 additions and 14 deletions
+25 -4
View File
@@ -40,8 +40,22 @@ func (ml *MapLock) add(g *game) {
ml.Unlock()
}
type WinnerMap struct {
m map[string]int
type BotStats struct {
Kills int
Deaths int
Suicides int
Shots int
Hits int
Wins int
}
type PlayerStats struct {
BotStats map[string]*BotStats
Wins int
}
type GameStats struct {
PlayerStats map[string]*PlayerStats
sync.RWMutex
}
@@ -65,7 +79,7 @@ type game struct {
repair_hp int
repair_rate float32
tick_duration int
winners WinnerMap
stats GameStats
mode GameMode
}
@@ -97,7 +111,7 @@ func NewGame(id string, width, height float32, obstacles, tick, maxPoints int, m
repair_rate: 3.0,
tick_duration: tick,
players_remaining: 2,
winners: WinnerMap{m: make(map[string]int)},
stats: GameStats{PlayerStats: make(map[string]*PlayerStats)},
}
if mode == "melee" {
@@ -279,6 +293,13 @@ func (g *game) run() {
return
case p := <-g.register:
g.players[p] = true
g.stats.PlayerStats[p.Id] = &PlayerStats{
BotStats: make(map[string]*BotStats),
}
for _, r := range p.Robots {
g.stats.PlayerStats[p.Id].BotStats[r.Name] = &BotStats{}
r.gameStats = g.stats.PlayerStats[p.Id].BotStats[r.Name]
}
case p := <-g.unregister:
delete(g.players, p)
close(p.send)