diff --git a/control.go b/control.go index 21c3e01..316e7bd 100644 --- a/control.go +++ b/control.go @@ -131,7 +131,7 @@ func gameStats(w http.ResponseWriter, req *http.Request) { } g.stats.RLock() defer g.stats.RUnlock() - if err := json.NewEncoder(w).Encode(g.stats); err != nil { + if err := json.NewEncoder(w).Encode(g.stats.PlayerStats); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } diff --git a/game.go b/game.go index b859f7a..1e123a1 100644 --- a/game.go +++ b/game.go @@ -41,12 +41,13 @@ func (ml *MapLock) add(g *game) { } type BotStats struct { - Kills int - Deaths int - Suicides int - Shots int - Hits int - Wins int + Kills int + Deaths int + Suicides int + Shots int + DirectHits int + Hits int + Wins int } type PlayerStats struct { diff --git a/projectile.go b/projectile.go index 0321406..4a2f135 100644 --- a/projectile.go +++ b/projectile.go @@ -32,6 +32,8 @@ func (p *Projectile) Tick(g *game) { collision, _, _ := v.RectIntersection(player_rect, p.Position, v_scaled) if collision { hit_player = true + p.Owner.gameStats.Hits++ + p.Owner.gameStats.DirectHits++ if r.Health > 0 { // Direct hit causes more damage @@ -39,6 +41,11 @@ func (p *Projectile) Tick(g *game) { r.Health -= p.Damage r.Hit = true + + if r.Health <= 0 { + r.gameStats.Deaths++ + p.Owner.gameStats.Kills++ + } } } } @@ -86,6 +93,11 @@ func (p *Projectile) Tick(g *game) { r.Health -= p.Damage r.Hit = true } + p.Owner.gameStats.Hits++ + if r.Health <= 0 { + r.gameStats.Deaths++ + p.Owner.gameStats.Kills++ + } } } } diff --git a/robot.go b/robot.go index a621b9c..8ed8389 100644 --- a/robot.go +++ b/robot.go @@ -281,6 +281,10 @@ func (r *Robot) Tick(g *game) { hit_robot.Health -= dmg hit_robot.Speed = (hit_robot.Speed * 0.5) // hit_robot.Heading = r.Heading + if hit_robot.Health <= 0 { + hit_robot.gameStats.Deaths++ + r.gameStats.Kills++ + } } if r.Position != intersection_point { @@ -291,6 +295,11 @@ func (r *Robot) Tick(g *game) { r.MoveTo = &r.Position r.Speed = (r.Speed * -0.5) // r.Heading = r.Heading.Scale(-1.0) + + if r.Health <= 0 { + r.gameStats.Deaths++ + r.gameStats.Suicides++ + } } else { r.Position = r.Position.Add(move_vector) if new_heading.Mag() > 0 {