Files
ducky/elements/duck.go

55 lines
885 B
Go
Raw Normal View History

2024-12-08 12:24:33 -05:00
package elements
import (
"ducky/gamedata"
"image"
"github.com/hajimehoshi/ebiten/v2"
"golang.org/x/exp/rand"
)
const (
DuckyWidth = 36
DuckyHeight = DuckyWidth
)
type Ducky struct {
Sprite *ebiten.Image
asset *ebiten.Image
cycle int
position gamedata.Coordinates
}
func NewDucky(asset *ebiten.Image) *Ducky {
d := &Ducky{
Sprite: ebiten.NewImage(DuckyWidth, DuckyHeight),
asset: asset,
cycle: rand.Intn(11),
}
return d
}
func (d *Ducky) Update() {
d.cycle++
}
func (d *Ducky) Draw() {
d.Sprite.Clear()
idx := d.cycle / 4 % 10
x0 := idx * DuckyWidth
y0 := 0
x1 := x0 + DuckyWidth
y1 := DuckyHeight
d.Sprite.DrawImage(d.asset.SubImage(image.Rect(x0, y0, x1, y1)).(*ebiten.Image), nil)
}
func (d *Ducky) SetPosition(pos gamedata.Coordinates) {
d.position = pos
}
func (d *Ducky) GetPosition() gamedata.Coordinates {
return d.position
}