package tiles import ( "bytes" "fmt" "image" "log" "github.com/hajimehoshi/ebiten/v2" "gitlab.com/kbr4/9heroja/collision" "gitlab.com/kbr4/9heroja/resources" ) var ( startingImage *ebiten.Image ) type Starting struct { X float64 Y float64 IsDead bool } func (s *Starting) DrawStarting(screen *ebiten.Image) { op := &ebiten.DrawImageOptions{} op.GeoM.Reset() op.GeoM.Translate(s.X, s.Y) op.GeoM.Scale(1, 1) if s.IsDead { op.ColorScale.Scale(1, 0, 0, 1) } screen.DrawImage(startingImage.SubImage(image.Rect(0, 0, resources.TileTileSize, resources.TileTileSize)).(*ebiten.Image), op) } func init() { img, _, err := image.Decode(bytes.NewReader(resources.Starting_png)) if err != nil { log.Fatal(err) } startingImage = ebiten.NewImageFromImage(img) } func NewStarting() *Starting { starting := &Starting{} starting.X = 550 starting.Y = 1000 return starting } func (s *Starting) CollisionShape() collision.Polygon { if !s.IsDead { return collision.Polygon{ Points: []collision.Point{ {X: s.X, Y: s.Y}, {X: s.X + resources.TileTileSize, Y: s.Y}, {X: s.X + resources.TileTileSize, Y: s.Y + resources.TileTileSize}, {X: s.X, Y: s.Y + resources.TileTileSize}, }, } } else { return collision.Polygon{ Points: []collision.Point{}, } } } func (s *Starting) CollisionObjectType() collision.ObjectType { return collision.Starting } func (s *Starting) HandleCollisionEvent(other collision.Collidable) { coll := other.CollisionObjectType() switch coll { case collision.Zombie: fmt.Println("Starting hit by zombie") } }