From dbe944bb4e75db193e6d9a65c7c30aaa8b878f3e Mon Sep 17 00:00:00 2001 From: Marc Di Luzio Date: Sat, 4 Jul 2020 12:30:40 +0100 Subject: [PATCH] Add charge and apply it to rover actions --- pkg/game/world.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/game/world.go b/pkg/game/world.go index c0ff212..a0a299f 100644 --- a/pkg/game/world.go +++ b/pkg/game/world.go @@ -75,10 +75,12 @@ func (w *World) SpawnRover() (string, error) { // Initialise the rover rover := Rover{ - Range: 4.0, + Range: 4, Integrity: 10, MaximumIntegrity: 10, Capacity: 10, + Charge: 10, + MaximumCharge: 10, Name: uuid.New().String(), } @@ -219,6 +221,13 @@ func (w *World) MoveRover(rover string, b bearing.Bearing) (vector.Vector, error if !ok { return vector.Vector{}, fmt.Errorf("no rover matching id") } + + // Ensure the rover has energy + if i.Charge <= 0 { + return i.Pos, nil + } + i.Charge-- + // Try the new move position newPos := i.Pos.Added(b.Vector()) @@ -256,6 +265,12 @@ func (w *World) RoverStash(rover string) (objects.Type, error) { return objects.None, nil } + // Ensure the rover has energy + if r.Charge <= 0 { + return objects.None, nil + } + r.Charge-- + _, obj := w.Atlas.QueryPosition(r.Pos) if !obj.IsStashable() { return objects.None, nil