first pass at repair mode
This commit is contained in:
@@ -39,18 +39,32 @@ func (p *player) recv() {
|
||||
log.Print("problem receiving JSON from player: ", err)
|
||||
break
|
||||
}
|
||||
if msg.MoveTo != nil {
|
||||
p.Robot.MoveTo = msg.MoveTo
|
||||
}
|
||||
if msg.FireAt != nil {
|
||||
p.Robot.FireAt = msg.FireAt
|
||||
|
||||
if msg.Repair != nil {
|
||||
p.Robot.TargetSpeed = 0
|
||||
p.Robot.FireAt = nil
|
||||
p.Robot.MoveTo = nil
|
||||
if p.Robot.RepairCounter <= 0 {
|
||||
p.Robot.RepairCounter = 3.0
|
||||
}
|
||||
} else {
|
||||
p.Robot.RepairCounter = 0
|
||||
|
||||
// Reapiring halts all other activity
|
||||
if msg.MoveTo != nil {
|
||||
p.Robot.MoveTo = msg.MoveTo
|
||||
}
|
||||
if msg.FireAt != nil {
|
||||
p.Robot.FireAt = msg.FireAt
|
||||
}
|
||||
|
||||
if msg.TargetSpeed != nil {
|
||||
p.Robot.TargetSpeed = float32(*msg.TargetSpeed)
|
||||
} else {
|
||||
p.Robot.TargetSpeed = p.Robot.Stats.Speed
|
||||
}
|
||||
}
|
||||
|
||||
if msg.TargetSpeed != nil {
|
||||
p.Robot.TargetSpeed = float32(*msg.TargetSpeed)
|
||||
} else {
|
||||
p.Robot.TargetSpeed = p.Robot.Stats.Speed
|
||||
}
|
||||
}
|
||||
log.Printf("player %s: recv close", p.Robot.Id)
|
||||
p.ws.Close()
|
||||
@@ -116,8 +130,11 @@ func (p *player) Tick(g *game) {
|
||||
current_heading = p.Robot.MoveTo.Sub(p.Robot.Position).Normalize()
|
||||
}
|
||||
|
||||
// Where do we WANT to be heading?
|
||||
new_heading := p.Robot.MoveTo.Sub(p.Robot.Position).Normalize()
|
||||
new_heading := current_heading
|
||||
if p.Robot.MoveTo != nil {
|
||||
// Where do we WANT to be heading?
|
||||
new_heading = p.Robot.MoveTo.Sub(p.Robot.Position).Normalize()
|
||||
}
|
||||
|
||||
if new_heading.Mag() > 0 {
|
||||
// Is our direction change too much? Hard coding to 5 degrees/s for now
|
||||
@@ -165,6 +182,14 @@ func (p *player) Tick(g *game) {
|
||||
}
|
||||
}
|
||||
|
||||
if math.Abs(float64(p.Robot.Speed)) < v.Epsilon && p.Robot.RepairCounter > 0 {
|
||||
p.Robot.RepairCounter -= delta
|
||||
if p.Robot.RepairCounter < 0 {
|
||||
p.Robot.Health += 5
|
||||
p.Robot.RepairCounter = 3.0
|
||||
}
|
||||
}
|
||||
|
||||
if p.Robot.FireAt != nil {
|
||||
proj := p.fire(g.projectiles, g.turn)
|
||||
if proj != nil {
|
||||
|
||||
Reference in New Issue
Block a user