First commit >:]
This commit is contained in:
69
flame.go
Normal file
69
flame.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
_ "embed"
|
||||
"image"
|
||||
_ "image/png"
|
||||
"log"
|
||||
|
||||
"github.com/hajimehoshi/ebiten/v2"
|
||||
)
|
||||
|
||||
const (
|
||||
FLAME_ANIMATION_CYCLES = 8
|
||||
FLAME_WIDTH = 24
|
||||
FLAME_HEIGHT = 32
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed resources/images/hot.png
|
||||
flameAssets_png []byte
|
||||
assetsFlame *ebiten.Image
|
||||
)
|
||||
|
||||
type Flame struct {
|
||||
Sprite *ebiten.Image //our principle sprite representing the flame
|
||||
cycle int //current animation cycle for the character
|
||||
}
|
||||
|
||||
func NewFlame() *Flame {
|
||||
return &Flame{
|
||||
cycle: 0,
|
||||
Sprite: ebiten.NewImage(FLAME_WIDTH, FLAME_HEIGHT),
|
||||
}
|
||||
}
|
||||
|
||||
func (f *Flame) CycleUpdate() {
|
||||
f.cycle = (f.cycle + 1) % CHARACTER_ANIMATION_CYCLES
|
||||
}
|
||||
|
||||
func (f *Flame) Animate() {
|
||||
|
||||
//compute start and end location of asset to use for animation frame cycle
|
||||
sx := FLAME_WIDTH * f.cycle
|
||||
sy := 0
|
||||
ex := FLAME_WIDTH * (f.cycle + 1)
|
||||
ey := FLAME_HEIGHT
|
||||
|
||||
f.Sprite.Clear()
|
||||
f.Sprite.DrawImage(assetsFlame.SubImage(image.Rect(sx, sy, ex, ey)).(*ebiten.Image), nil)
|
||||
|
||||
f.CycleUpdate()
|
||||
}
|
||||
|
||||
func (f *Flame) GetWidth() int {
|
||||
return f.Sprite.Bounds().Dx()
|
||||
}
|
||||
|
||||
func (f *Flame) GetHeight() int {
|
||||
return f.Sprite.Bounds().Dy()
|
||||
}
|
||||
|
||||
func init() {
|
||||
img, _, err := image.Decode(bytes.NewReader(flameAssets_png))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
assetsFlame = ebiten.NewImageFromImage(img)
|
||||
}
|
||||
Reference in New Issue
Block a user