package server

import (
	"log"
)

// melee is a game type that allows dead players to respond after a particular
// number of ms.
type melee struct {
	respawn       map[*Robot]float64
	respawn_timer float64
}

func (g *melee) setup(gg *Game) {
	g.respawn_timer = 5000
}

func (g *melee) gameOver(gg *Game) (bool, *GameOver) {
	return false, &GameOver{}
}

func (g *melee) tick(gg *Game, payload *Boardstate) {
	for p := range gg.players {
		for _, r := range p.Robots {
			_, ok := g.respawn[r]
			if r.Health <= 0 && !ok {
				g.respawn[r] = g.respawn_timer
				log.Printf("%v Died, Respawn in %v", r.Name, g.respawn_timer)
				// gg.stats.playerStats[p.Id].botStats[r.Name].deaths++
			}
		}
	}

	for r, _ := range g.respawn {
		g.respawn[r] -= float64(gg.tick_duration)
		if g.respawn[r] <= 0 {
			log.Printf("%v Respawned", r.Name)
			r.reset(gg)
			delete(g.respawn, r)
		}
	}
}
