moved code out of awkward bots repo

This commit is contained in:
sm
2013-09-27 22:27:05 -07:00
parent 92a2040d70
commit e33f2c0c4f
7 changed files with 233 additions and 38 deletions
+44 -10
View File
@@ -1,7 +1,6 @@
package main
import (
"bitbucket.org/hackerbots/bot"
v "bitbucket.org/hackerbots/vector"
"log"
"sort"
@@ -10,11 +9,46 @@ import (
const maxPlayer = 128
type Config struct {
ID string `json:"id"`
Name string `json:"name"`
// TODO: candidate for embedding?
Stats Stats `json:"stats"`
}
type Boardstate struct {
Robots []Robot `json:"robots"`
Projectiles []Projectile `json:"projectiles"`
Splosions []Splosion `json:"splosions"`
Reset bool `json:"reset"`
Type string `json:"type"`
Turn int `json:"turn"`
}
func (bs *Boardstate) EmptySlices() {
bs.Robots = bs.Robots[:0]
bs.Projectiles = bs.Projectiles[:0]
bs.Splosions = bs.Splosions[:0]
}
func NewBoardstate() *Boardstate {
return &Boardstate{
Robots: []Robot{},
Projectiles: []Projectile{},
Type: "boardstate",
}
}
type Scanner struct {
Position v.Point2d `json:"position"`
Stats Stats `json:"stats"`
}
type game struct {
id string
players map[*player]bool
projectiles map[*bot.Projectile]bool
splosions map[*bot.Splosion]bool
projectiles map[*Projectile]bool
splosions map[*Splosion]bool
register chan *player
unregister chan *player
turn int
@@ -30,8 +64,8 @@ func NewGame(id string, width, height float64) *game {
id: id,
register: make(chan *player),
unregister: make(chan *player, maxPlayer),
projectiles: make(map[*bot.Projectile]bool),
splosions: make(map[*bot.Splosion]bool),
projectiles: make(map[*Projectile]bool),
splosions: make(map[*Splosion]bool),
players: make(map[*player]bool),
turn: 0,
width: width,
@@ -46,7 +80,7 @@ func NewGame(id string, width, height float64) *game {
func (g *game) run() {
var t0, t1 time.Time
payload := bot.NewBoardstate()
payload := NewBoardstate()
for {
select {
case <-g.kill:
@@ -102,7 +136,7 @@ func (g *game) run() {
}
payload.Robots = append(payload.Robots, p.Robot)
}
sort.Sort(bot.RobotSorter{Robots: payload.Robots})
sort.Sort(RobotSorter{Robots: payload.Robots})
payload.Projectiles = append(payload.Projectiles,
g.nudgeProjectiles()...,
@@ -150,8 +184,8 @@ func (g *game) run() {
}
}
func (g *game) nudgeProjectiles() (rprojectiles []bot.Projectile) {
rprojectiles = make([]bot.Projectile, 0)
func (g *game) nudgeProjectiles() (rprojectiles []Projectile) {
rprojectiles = make([]Projectile, 0)
for p := range g.projectiles {
newPos := v.Move(p.Position, p.MoveTo, float64(p.Speed), delta)
@@ -170,7 +204,7 @@ func (g *game) nudgeProjectiles() (rprojectiles []bot.Projectile) {
delete(g.projectiles, p)
// Spawn a splosion
splo := &bot.Splosion{
splo := &Splosion{
Id: p.Id,
Position: p.Position,
Radius: p.Radius,