Private
Public Access
1
0
Files
EscapeFromTeacher/cmd/client/assets_wasm.go
Sebastian Unterschütz 8be7da2e7f
Some checks failed
Dynamic Branch Deploy / build-and-deploy (push) Failing after 1m28s
remove unused imports from assets_wasm.go
2026-04-22 13:01:46 +02:00

55 lines
1.5 KiB
Go

//go:build wasm
// +build wasm
package main
import (
_ "embed"
"encoding/json"
"path/filepath"
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
"git.zb-server.de/ZB-Server/EscapeFromTeacher/pkg/game"
)
//go:embed web/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)
// Alle Sprites in eine Atlas-Textur packen → ein GPU-Draw-Call statt vieler
g.assetsImages = buildAtlas(g.assetsImages, g.world.Manifest)
}