rewrite of the stats system
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user