- fixed windows build, using path, instead of path/filepath - added switch + door, implemented relation (pair_system missing yet) - fixed ldtk map loading, now using correct entitymap.png tileset
50 lines
896 B
Go
50 lines
896 B
Go
package assets
|
|
|
|
import (
|
|
"bytes"
|
|
"log"
|
|
"log/slog"
|
|
"path"
|
|
"strings"
|
|
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
)
|
|
|
|
type ShaderRegistry map[string]*ebiten.Shader
|
|
|
|
var Shaders = LoadShaders("shaders")
|
|
|
|
func LoadShaders(dir string) ShaderRegistry {
|
|
shaders := ShaderRegistry{}
|
|
|
|
entries, err := assetfs.ReadDir(dir)
|
|
if err != nil {
|
|
log.Fatalf("failed to read shaders dir %s: %s", dir, err)
|
|
}
|
|
|
|
for _, file := range entries {
|
|
path := path.Join(dir, file.Name())
|
|
fd, err := assetfs.Open(path)
|
|
if err != nil {
|
|
log.Fatalf("failed to open shader file %s: %s", file.Name(), err)
|
|
}
|
|
defer fd.Close()
|
|
|
|
name := strings.TrimSuffix(file.Name(), ".kg")
|
|
|
|
buf := new(bytes.Buffer)
|
|
buf.ReadFrom(fd)
|
|
|
|
shader, err := ebiten.NewShader([]byte(buf.Bytes()))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
shaders[name] = shader
|
|
|
|
slog.Debug("loaded shader asset", "path", path)
|
|
}
|
|
|
|
return shaders
|
|
}
|