You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
53 lines
1.1 KiB
package server |
|
|
|
import ( |
|
"log" |
|
) |
|
|
|
// deathmatch is a game type that resets when there is one bot standing. There |
|
// is an obvious winner each round. |
|
type deathmatch struct { |
|
} |
|
|
|
func (g *deathmatch) setup(gg *Game) { |
|
} |
|
|
|
func (g *deathmatch) gameOver(gg *Game) (bool, *GameOver) { |
|
over := false |
|
var stats *GameOver |
|
|
|
if gg.players_remaining <= 1 && len(gg.players) > 1 { |
|
if len(gg.defaultObstacles) == 0 { |
|
gg.obstacles = GenerateObstacles( |
|
gg.obstacleCount, |
|
gg.width, |
|
gg.height, |
|
) |
|
} |
|
log.Printf("game %s: game over", gg.id) |
|
stats = NewGameOver() |
|
|
|
for p := range gg.players { |
|
gg.stats.Lock() |
|
playerWin := false |
|
for _, r := range p.Robots { |
|
if r.Health > 0 { |
|
log.Printf("Robot %v Survived", r.Id) |
|
gg.stats.PlayerStats[p.Id].BotStats[r.Name].Wins += 1 |
|
stats.Winners = append(stats.Winners, r.Id) |
|
playerWin = true |
|
} |
|
r.reset(gg) |
|
} |
|
if playerWin { |
|
gg.stats.PlayerStats[p.Id].Wins += 1 |
|
} |
|
gg.stats.Unlock() |
|
} |
|
over = true |
|
} |
|
return over, stats |
|
} |
|
|
|
func (g *deathmatch) tick(gg *Game, payload *Boardstate) { |
|
}
|
|
|