package main import ( "image/color" "github.com/hajimehoshi/ebiten/v2" ) type Person struct { size Point Position Point IsSelected bool image *ebiten.Image selectedImage *ebiten.Image } func NewPerson(position Point) 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: Point{10, 10}, image: image, selectedImage: selectedImage} } func (p Person) Image() *ebiten.Image { if p.IsSelected { return p.selectedImage } return p.image } func (p Person) CollisionBounds() Rectangle { return Rectangle{ p.Position.Sub(p.size.Div(2)), p.Position.Add(p.size.Div(2)), } }