56 lines
873 B
Go
56 lines
873 B
Go
package entity
|
|
|
|
import (
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
)
|
|
|
|
type penguin struct {
|
|
worldPosition *sdl.Point
|
|
animationStep int32
|
|
}
|
|
|
|
func NewPenguin(renderer *sdl.Renderer) *penguin {
|
|
position := sdl.Point{}
|
|
|
|
p := penguin{
|
|
worldPosition: &position,
|
|
}
|
|
|
|
return &p
|
|
}
|
|
|
|
func (p *penguin) Draw() error {
|
|
a := penguinAnimations[PENGUIN_WALK_RIGHT]
|
|
step := p.animationStep / 10
|
|
err := a.Draw(step, p.worldPosition)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
p.animationStep += 1
|
|
|
|
return nil
|
|
}
|
|
|
|
func (p *penguin) SetPosition(point *sdl.Point) {
|
|
p.worldPosition = point
|
|
}
|
|
|
|
func (p *penguin) MoveRight() {
|
|
p.worldPosition.X += 1
|
|
}
|
|
|
|
func (p *penguin) MoveLeft() {
|
|
p.worldPosition.X -= 1
|
|
}
|
|
|
|
func (p *penguin) MoveUp() {
|
|
// (0,0) is the top left, so negative y moves up
|
|
p.worldPosition.Y -= 1
|
|
}
|
|
|
|
func (p *penguin) MoveDown() {
|
|
// positive y moves down
|
|
p.worldPosition.Y += 1
|
|
}
|