diff options
Diffstat (limited to 'person.go')
| -rw-r--r-- | person.go | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -10,6 +10,7 @@ type Person struct { size Point Position Point IsSelected bool + move Move image *ebiten.Image selectedImage *ebiten.Image } @@ -38,3 +39,19 @@ func (p Person) CollisionBounds() Rectangle { p.Position.Add(p.size.Div(2)), } } + +func (p *Person) MoveTo(destination Point) { + p.move = Move{IsActive: true, Destination: destination} +} + +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 + } + } +} |
