project-ely/internal/animation/penguin_animations.go

86 lines
3.0 KiB
Go

package animation
import (
"math/rand"
"git.wisellama.rocks/Project-Ely/project-ely/internal/sprite"
rl "github.com/gen2brain/raylib-go/raylib"
)
const (
PenguinDefault = PenguinStationaryRight
)
var penguinAnimations []int
func DefinePenguinAnimations() {
filename := sprite.DelilahWalking
penguinAnimations = make([]int, 0)
penguinAnimations = append(penguinAnimations, PenguinWalkRight)
penguinAnimations = append(penguinAnimations, PenguinWalkLeft)
penguinAnimations = append(penguinAnimations, PenguinWalkUp)
penguinAnimations = append(penguinAnimations, PenguinWalkDown)
penguinAnimations = append(penguinAnimations, PenguinStationaryRight)
penguinAnimations = append(penguinAnimations, PenguinStationaryLeft)
penguinAnimations = append(penguinAnimations, PenguinStationaryUp)
penguinAnimations = append(penguinAnimations, PenguinStationaryDown)
var (
dimensions rl.Vector2
offset rl.Vector2
center rl.Vector2
length int
speed int
border int
)
dimensions = rl.Vector2{X: 13, Y: 17}
// Walking Right is in the spritesheet.
speed = 5
offset = rl.Vector2{X: 0, Y: 1}
length = 5
border = 1 // optional border around each sprite
center = getCenter(dimensions) // center is for rotation, nil will default to w/2 h/2
walkRight := sprite.NewAnimation(filename, dimensions, offset, length, border)
AnimationMap[PenguinWalkRight] = NewEntityAnimation(walkRight, speed, length, 0, center, FlipNone)
// Walking Left is just that flipped.
AnimationMap[PenguinWalkLeft] = NewEntityAnimation(walkRight, speed, length, 0, center, FlipHorizontal)
// Stationary Right/Left is just the first frame.
length = 1
stationaryRight := sprite.NewAnimation(filename, dimensions, offset, length, border)
AnimationMap[PenguinStationaryRight] = NewEntityAnimation(stationaryRight, speed, length, 0, center, FlipNone)
AnimationMap[PenguinStationaryLeft] = NewEntityAnimation(stationaryRight, speed, length, 0, center, FlipHorizontal)
// Walk Up
length = 4
offset = rl.Vector2{X: 0, Y: 3}
walkUp := sprite.NewAnimation(filename, dimensions, offset, length, border)
AnimationMap[PenguinWalkUp] = NewEntityAnimation(walkUp, speed, length, 0, center, FlipNone)
// Stationary Up
length = 1
stationaryUp := sprite.NewAnimation(filename, dimensions, offset, length, border)
AnimationMap[PenguinStationaryUp] = NewEntityAnimation(stationaryUp, speed, length, 0, center, FlipNone)
// Walk Down
length = 4
offset = rl.Vector2{X: 0, Y: 0}
walkDown := sprite.NewAnimation(filename, dimensions, offset, length, border)
AnimationMap[PenguinWalkDown] = NewEntityAnimation(walkDown, speed, length, 0, center, FlipNone)
// Stationary Down
length = 1
stationaryDown := sprite.NewAnimation(filename, dimensions, offset, length, border)
AnimationMap[PenguinStationaryDown] = NewEntityAnimation(stationaryDown, speed, length, 0, center, FlipNone)
}
func RandomPenguinAnimation() int {
n := len(penguinAnimations)
i := rand.Intn(n)
return penguinAnimations[i]
}