aboutsummaryrefslogtreecommitdiff
path: root/person.go
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2023-08-26 10:32:14 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2023-08-26 10:32:14 +0200
commit4d03ba264a956734f067915224bff63ee398b73e (patch)
tree23807c67b59784ed8e277b5c8aa940e3ec719c78 /person.go
parent06c9bfe8fa86ac8decde8e2b3590d1757bfb26e7 (diff)
refactor: Split files
Diffstat (limited to 'person.go')
-rw-r--r--person.go45
1 files changed, 45 insertions, 0 deletions
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}}
+}