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] }