aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--move.go13
-rw-r--r--person.go10
2 files changed, 14 insertions, 9 deletions
diff --git a/move.go b/move.go
index 916e580..f2cee2b 100644
--- a/move.go
+++ b/move.go
@@ -4,3 +4,16 @@ type Move struct {
IsActive bool
Destination Point
}
+
+func (m *Move) Update(position Point, speed int) Point {
+ if !m.IsActive {
+ return position
+ }
+ remainingMove := m.Destination.Sub(position)
+ delta := remainingMove.Mul(speed).Div(int(Length(remainingMove)))
+ next := position.Add(delta)
+ if Distance(next, m.Destination) < float64(speed) {
+ m.IsActive = false
+ }
+ return next
+}
diff --git a/person.go b/person.go
index b1248e2..3462aa1 100644
--- a/person.go
+++ b/person.go
@@ -45,13 +45,5 @@ func (p *Person) MoveTo(destination Point) {
}
func (p *Person) Update() {
- speed := 2
- if p.move.IsActive {
- remainingMove := p.move.Destination.Sub(p.Position)
- delta := remainingMove.Mul(speed).Div(int(Length(remainingMove)))
- p.Position = p.Position.Add(delta)
- if Distance(p.Position, p.move.Destination) < float64(speed) {
- p.move.IsActive = false
- }
- }
+ p.Position = p.move.Update(p.Position, 3)
}