54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
//go:build wasm
|
|
// +build wasm
|
|
|
|
package main
|
|
|
|
import (
|
|
_ "embed"
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"path/filepath"
|
|
|
|
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
|
|
|
|
"git.zb-server.de/ZB-Server/EscapeFromTeacher/pkg/game"
|
|
)
|
|
|
|
//go:embed assets/assets.json
|
|
var assetsJSON []byte
|
|
|
|
func (g *Game) loadAssets() {
|
|
// Assets Manifest aus eingebetteter Datei laden
|
|
var m game.AssetManifest
|
|
if err := json.Unmarshal(assetsJSON, &m); err != nil {
|
|
log.Printf("⚠️ Fehler beim Parsen von assets.json: %v", err)
|
|
g.world.Manifest = game.AssetManifest{Assets: make(map[string]game.AssetDefinition)}
|
|
} else {
|
|
g.world.Manifest = m
|
|
fmt.Println("✅ Assets Manifest geladen (WASM):", len(m.Assets), "Einträge")
|
|
}
|
|
|
|
// Chunks laden (auch per go:embed in chunks_wasm.go)
|
|
g.loadChunks()
|
|
|
|
// Bilder vorladen - In WASM sind die Assets relativ zum HTML
|
|
baseDir := "./assets"
|
|
loadedImages := 0
|
|
failedImages := 0
|
|
for id, def := range g.world.Manifest.Assets {
|
|
if def.Filename != "" {
|
|
path := filepath.Join(baseDir, def.Filename)
|
|
img, _, err := ebitenutil.NewImageFromFile(path)
|
|
if err == nil {
|
|
g.assetsImages[id] = img
|
|
loadedImages++
|
|
} else {
|
|
log.Printf("⚠️ Bild nicht geladen: %s (%s) - Fehler: %v", id, def.Filename, err)
|
|
failedImages++
|
|
}
|
|
}
|
|
}
|
|
fmt.Printf("🖼️ Bilder (WASM): %d geladen, %d fehlgeschlagen\n", loadedImages, failedImages)
|
|
}
|