diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2023-10-06 09:21:07 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2023-10-06 09:21:07 +0200 |
| commit | ad119e88258cf6add42c9570b7a2b7b591fd0b99 (patch) | |
| tree | 3257ed5ef24c19d2f50ea044a3c842b506be5a20 /patrol_order.go | |
| parent | 987aa73f11f4c5fbc7136313c77aaad42e7e9edd (diff) | |
feat(order): Gather resources
Diffstat (limited to 'patrol_order.go')
| -rw-r--r-- | patrol_order.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/patrol_order.go b/patrol_order.go new file mode 100644 index 0000000..b7201ed --- /dev/null +++ b/patrol_order.go @@ -0,0 +1,32 @@ +package main + +import "golang.org/x/exp/slog" + +type PatrolOrder struct { + origin Point + destination Point +} + +func (o *PatrolOrder) Update(e *Entity, g *Game) { + if e.Position.IsEnabled && e.Move.IsEnabled { + if !e.Move.Value.IsActive { + moveMap := g.getMoveMap() + if e.Position.Value == o.destination { + e.StartMove(o.origin, moveMap) + } else { + e.StartMove(o.destination, moveMap) + } + } + } +} + +func Patrol(e *Entity, destination Point) Order { + if e.Selection.IsEnabled && e.Position.IsEnabled && e.Move.IsEnabled && e.Order.IsEnabled { + if e.Selection.Value.IsSelected { + origin := e.Position.Value + slog.Info("patrolling between", slog.String("origin", origin.String()), slog.String("destination", destination.String())) + e.Order.Value = &PatrolOrder{origin: origin, destination: destination} + } + } + return &PatrolOrder{origin: e.Position.Value, destination: destination} +} |
