Changed the collision response from boolean to Collision

This commit is contained in:
Stephen McQuay 2014-01-27 20:19:16 -08:00
parent 0698f21a0f
commit eac39ad9d1

View File

@ -8,31 +8,31 @@ import (
) )
type Robot struct { type Robot struct {
Id string `json:"id"` Id string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Message string `json:"-"` Message string `json:"-"`
Stats Stats `json:"-"` Stats Stats `json:"-"`
TargetSpeed float32 `json:"-"` TargetSpeed float32 `json:"-"`
Speed float32 `json:"speed"` Speed float32 `json:"speed"`
Health int `json:"health"` Health int `json:"health"`
RepairCounter float32 `json:"repair"` RepairCounter float32 `json:"repair"`
ScanCounter float32 `json:"scan_bonus"` ScanCounter float32 `json:"scan_bonus"`
ActiveScan bool `json:"-"` ActiveScan bool `json:"-"`
Position v.Point2d `json:"position"` Position v.Point2d `json:"position"`
Heading v.Vector2d `json:"heading"` Heading v.Vector2d `json:"heading"`
DesiredHeading *v.Vector2d `json:"-"` DesiredHeading *v.Vector2d `json:"-"`
MoveTo *v.Point2d `json:"-"` MoveTo *v.Point2d `json:"-"`
FireAt *v.Point2d `json:"-"` FireAt *v.Point2d `json:"-"`
Scanners []Scanner `json:"scanners"` Scanners []Scanner `json:"scanners"`
LastFired int `json:"-"` LastFired int `json:"-"`
Collision bool `json:"collision"` Collision *Collision `json:"collision"`
Hit bool `json:"hit"` Hit bool `json:"hit"`
Probe *v.Point2d `json:"probe"` Probe *v.Point2d `json:"probe"`
ProbeResult *ProbeResult `json:"probe_result"` ProbeResult *Collision `json:"probe_result"`
gameStats *BotStats `json:-` gameStats *BotStats `json:-`
} }
type ProbeResult struct { type Collision struct {
v.Point2d v.Point2d
Type string `json:"type"` Type string `json:"type"`
} }
@ -244,7 +244,7 @@ func (r *Robot) checkCollisions(g *game, probe v.Vector2d) (bool, *v.Point2d, *R
} }
func (r *Robot) Tick(g *game) { func (r *Robot) Tick(g *game) {
r.Collision = false r.Collision = nil
r.Hit = false r.Hit = false
r.scan(g) r.scan(g)
@ -310,7 +310,13 @@ func (r *Robot) Tick(g *game) {
dmg = 1 dmg = 1
} }
r.Collision = true r.Collision = &Collision{
Point2d: *intersection_point,
Type: "obstacle",
}
if hit_robot != nil {
r.Collision.Type = "robot"
}
if hit_robot != nil { if hit_robot != nil {
hit_robot.Health -= dmg hit_robot.Health -= dmg
hit_robot.Speed = (hit_robot.Speed * 0.5) hit_robot.Speed = (hit_robot.Speed * 0.5)
@ -377,7 +383,7 @@ func (r *Robot) Tick(g *game) {
probe_vector := r.Probe.Sub(r.Position) probe_vector := r.Probe.Sub(r.Position)
coll, pos, robo := r.checkCollisions(g, probe_vector) coll, pos, robo := r.checkCollisions(g, probe_vector)
if coll { if coll {
r.ProbeResult = &ProbeResult{ r.ProbeResult = &Collision{
Point2d: *pos, Point2d: *pos,
Type: "obstacle", Type: "obstacle",
} }