refact
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package lib
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"image/png"
|
||||
"io/fs"
|
||||
|
||||
"github.com/hajimehoshi/ebiten/v2"
|
||||
"github.com/hajimehoshi/ebiten/v2/text/v2"
|
||||
"golang.org/x/image/font/gofont/gobold"
|
||||
)
|
||||
|
||||
type Assets struct {
|
||||
Bg *ebiten.Image
|
||||
Scooter *ebiten.Image
|
||||
Rabbit [4]*ebiten.Image
|
||||
HudFont *text.GoTextFace
|
||||
}
|
||||
|
||||
func LoadAssets(assetsFS fs.FS) (*Assets, error) {
|
||||
src, err := text.NewGoTextFaceSource(bytes.NewReader(gobold.TTF))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("load font: %w", err)
|
||||
}
|
||||
a := &Assets{
|
||||
HudFont: &text.GoTextFace{Source: src, Size: 8},
|
||||
}
|
||||
if a.Bg, err = loadImage(assetsFS, "assets/background.png"); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if a.Scooter, err = loadImage(assetsFS, "assets/scooter.png"); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for i := range a.Rabbit {
|
||||
name := fmt.Sprintf("assets/rabbit_f%d.png", i)
|
||||
if a.Rabbit[i], err = loadImage(assetsFS, name); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
func loadImage(assetsFS fs.FS, name string) (*ebiten.Image, error) {
|
||||
f, err := assetsFS.Open(name)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("open %s: %w", name, err)
|
||||
}
|
||||
defer f.Close()
|
||||
img, err := png.Decode(f)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("decode %s: %w", name, err)
|
||||
}
|
||||
return ebiten.NewImageFromImage(img), nil
|
||||
}
|
||||
Reference in New Issue
Block a user