aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2025-07-09 07:53:48 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2025-07-09 07:53:48 +0200
commit057adf65468e7b6ec544686b80433093a9f9deab (patch)
tree174ea7c587102120afa14b3530e199cf436d2c69 /main.go
parent5af6361f22d727a4abacd724cf9152e67f73328a (diff)
Extract entity main action
Diffstat (limited to 'main.go')
-rw-r--r--main.go27
1 files changed, 13 insertions, 14 deletions
diff --git a/main.go b/main.go
index afb0bee..f2eb907 100644
--- a/main.go
+++ b/main.go
@@ -43,6 +43,7 @@ type Game struct {
UnitBuilder EntityBuilder
}
+// TODO: This could be a maintained index
func (g *Game) getMoveMap() physics.MoveMap {
blocked := map[physics.Point]bool{}
for _, e := range g.Entities {
@@ -70,6 +71,16 @@ func (g *Game) Closest(from physics.Point, candidates []physics.Point) (physics.
return closest, closestDistance
}
+// TODO: This could be a maintained index
+func (g *Game) entityAt(position physics.Point) *Entity {
+ for _, e := range g.Entities {
+ if e.Position.IsEnabled && e.Position.Value == position {
+ return e
+ }
+ }
+ return nil
+}
+
func (g *Game) updateSelecting(cursor physics.Point, moveMap physics.MoveMap) {
if inpututil.IsMouseButtonJustPressed(ebiten.MouseButtonLeft) {
g.Selection.Start = cursor
@@ -77,22 +88,10 @@ func (g *Game) updateSelecting(cursor physics.Point, moveMap physics.MoveMap) {
}
if inpututil.IsMouseButtonJustReleased(ebiten.MouseButtonRight) {
destination := cursor.Div(100).Mul(100)
- var entityAtDestination *Entity
- for _, e := range g.Entities {
- if e.Position.IsEnabled && e.Position.Value == destination {
- entityAtDestination = e
- break
- }
- }
+ entityAtDestination := g.entityAt(destination)
slog.Info("destination", slog.String("destination", destination.String()))
for _, e := range g.Entities {
- if e.Selection.IsEnabled && e.Selection.Value.IsSelected {
- if entityAtDestination != nil && entityAtDestination.ResourceSource.IsEnabled {
- Gather(e, entityAtDestination, g)
- } else {
- physics.StartMove(&e.Move, e.Position, destination, moveMap)
- }
- }
+ e.MainAction(g, destination, entityAtDestination, moveMap)
}
}
if inpututil.IsMouseButtonJustReleased(ebiten.MouseButtonLeft) {