From 4d03ba264a956734f067915224bff63ee398b73e Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sat, 26 Aug 2023 10:32:14 +0200 Subject: refactor: Split files --- person.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 person.go (limited to 'person.go') diff --git a/person.go b/person.go new file mode 100644 index 0000000..777b782 --- /dev/null +++ b/person.go @@ -0,0 +1,45 @@ +package main + +import ( + "image/color" + + "github.com/hajimehoshi/ebiten/v2" +) + +type Person struct { + size Vec + Position Vec + IsSelected bool + image *ebiten.Image + selectedImage *ebiten.Image +} + +func NewPerson(position Vec) Person { + image := ebiten.NewImage(10, 10) + image.Fill(color.RGBA{0xff, 0xff, 0xff, 0xff}) + selectedImage := ebiten.NewImage(12, 12) + op := &ebiten.DrawImageOptions{} + op.GeoM.Translate(1, 1) + selectedImage.Fill(color.RGBA{0xff, 0x00, 0x00, 0xff}) + selectedImage.DrawImage(image, op) + return Person{Position: position, size: Vec{X: 10, Y: 10}, image: image, selectedImage: selectedImage} +} + +func (p Person) Image() *ebiten.Image { + if p.IsSelected { + return p.selectedImage + } + return p.image +} + +func (p Person) Size() Vec { + if p.IsSelected { + return Vec{X: p.size.X + 2, Y: p.size.Y + 2} + } else { + return p.size + } +} + +func (p Person) Bounds() Rectangle { + return Rectangle{Vec{p.Position.X - p.size.X/2, p.Position.Y - p.size.Y/2}, Vec{p.Position.X + p.size.X/2, p.Position.Y + p.size.Y/2}} +} -- cgit v1.3