scanners for projectiles

This commit is contained in:
Fraser Graham 2013-10-25 22:51:41 -07:00
parent 14f6c65e86
commit 5c77e373c3
2 changed files with 26 additions and 3 deletions

View File

@ -97,7 +97,7 @@ func (p *player) checkCollisions(g *game, move_vector v.Vector2d) (bool, v.Point
func (p *player) Tick(g *game) { func (p *player) Tick(g *game) {
p.Robot.Collision = false p.Robot.Collision = false
p.scan(g.players) p.scan(g)
// Adjust Speed // Adjust Speed
if p.Robot.Speed < p.Robot.TargetSpeed { if p.Robot.Speed < p.Robot.TargetSpeed {
@ -169,9 +169,9 @@ func (p *player) Tick(g *game) {
} }
} }
func (p *player) scan(players map[*player]bool) { func (p *player) scan(g *game) {
p.Robot.Scanners = p.Robot.Scanners[:0] p.Robot.Scanners = p.Robot.Scanners[:0]
for player, _ := range players { for player, _ := range g.players {
if player.Robot.Id == p.Robot.Id || player.Robot.Health <= 0 { if player.Robot.Id == p.Robot.Id || player.Robot.Health <= 0 {
continue continue
} }
@ -183,10 +183,31 @@ func (p *player) scan(players map[*player]bool) {
X: player.Robot.Position.X, X: player.Robot.Position.X,
Y: player.Robot.Position.Y, Y: player.Robot.Position.Y,
}, },
Type: "robot",
} }
p.Robot.Scanners = append(p.Robot.Scanners, s) p.Robot.Scanners = append(p.Robot.Scanners, s)
} }
} }
for proj, _ := range g.projectiles {
if proj.Owner.Robot.Id == p.Robot.Id {
continue
}
dist := v.Distance(proj.Position, p.Robot.Position)
if dist < float32(p.Robot.Stats.ScannerRadius) {
s := Scanner{
Id: proj.Id,
Position: v.Point2d{
X: proj.Position.X,
Y: proj.Position.Y,
},
Type: "projectile",
}
p.Robot.Scanners = append(p.Robot.Scanners, s)
}
}
} }
func (p *player) fire(projectiles map[*Projectile]bool, turn int) *Projectile { func (p *player) fire(projectiles map[*Projectile]bool, turn int) *Projectile {
@ -205,6 +226,7 @@ func (p *player) fire(projectiles map[*Projectile]bool, turn int) *Projectile {
Damage: 10, Damage: 10,
Radius: p.Robot.Stats.WeaponRadius, Radius: p.Robot.Stats.WeaponRadius,
Speed: float32(p.Robot.Stats.Speed * 3), Speed: float32(p.Robot.Stats.Speed * 3),
Owner: p,
} }
} }

View File

@ -11,6 +11,7 @@ type Projectile struct {
Radius int `json:"radius"` Radius int `json:"radius"`
Speed float32 `json:"-"` Speed float32 `json:"-"`
Damage int `json:"-"` Damage int `json:"-"`
Owner *player `json:"-"`
} }
func (p *Projectile) Tick(g *game) { func (p *Projectile) Tick(g *game) {