Using a temp free online sprite for now to test sprites
This commit is contained in:
65
internal/hero/sprites.go
Normal file
65
internal/hero/sprites.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package hero
|
||||
|
||||
import (
|
||||
"image"
|
||||
"image/color"
|
||||
_ "image/gif"
|
||||
"os"
|
||||
|
||||
"github.com/hajimehoshi/ebiten/v2"
|
||||
)
|
||||
|
||||
var (
|
||||
spriteBack1 *ebiten.Image
|
||||
spriteBack2 *ebiten.Image
|
||||
spriteFront1 *ebiten.Image
|
||||
spriteFront2 *ebiten.Image
|
||||
spriteLeft1 *ebiten.Image
|
||||
spriteLeft2 *ebiten.Image
|
||||
spriteRight1 *ebiten.Image
|
||||
spriteRight2 *ebiten.Image
|
||||
)
|
||||
|
||||
func init() {
|
||||
spriteBack1 = loadSprite("assets/hero/avt1_bk1.gif")
|
||||
spriteBack2 = loadSprite("assets/hero/avt1_bk2.gif")
|
||||
spriteFront1 = loadSprite("assets/hero/avt1_fr1.gif")
|
||||
spriteFront2 = loadSprite("assets/hero/avt1_fr2.gif")
|
||||
spriteLeft1 = loadSprite("assets/hero/avt1_lf1.gif")
|
||||
spriteLeft2 = loadSprite("assets/hero/avt1_lf2.gif")
|
||||
spriteRight1 = loadSprite("assets/hero/avt1_rt1.gif")
|
||||
spriteRight2 = loadSprite("assets/hero/avt1_rt2.gif")
|
||||
}
|
||||
|
||||
func loadSprite(path string) *ebiten.Image {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
img, _, err := image.Decode(file)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
bounds := img.Bounds()
|
||||
rgba := image.NewRGBA(bounds)
|
||||
for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
|
||||
for x := bounds.Min.X; x < bounds.Max.X; x++ {
|
||||
r, g, b, a := img.At(x, y).RGBA()
|
||||
if r > 0xf000 && g > 0xf000 && b > 0xf000 {
|
||||
rgba.Set(x, y, color.RGBA{0, 0, 0, 0})
|
||||
} else {
|
||||
rgba.Set(x, y, color.RGBA{
|
||||
R: uint8(r >> 8),
|
||||
G: uint8(g >> 8),
|
||||
B: uint8(b >> 8),
|
||||
A: uint8(a >> 8),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ebiten.NewImageFromImage(rgba)
|
||||
}
|
||||
Reference in New Issue
Block a user