//go:build js && wasm // +build js,wasm package main import ( "crypto/rand" "encoding/hex" "log" "syscall/js" ) // loadOrCreatePlayerCode lรคdt oder erstellt einen eindeutigen Spieler-Code (WebAssembly Version) func (g *Game) loadOrCreatePlayerCode() { const storageKey = "escape_from_teacher_player_code" // Versuche aus LocalStorage zu laden if jsGlobal := js.Global(); !jsGlobal.IsUndefined() { localStorage := jsGlobal.Get("localStorage") if !localStorage.IsUndefined() { stored := localStorage.Call("getItem", storageKey) if !stored.IsNull() && stored.String() != "" { g.playerCode = stored.String() log.Printf("๐Ÿ”‘ Player-Code aus LocalStorage geladen: %s", g.playerCode) return } } } // Erstelle neuen Code bytes := make([]byte, 16) if _, err := rand.Read(bytes); err != nil { log.Fatal("Fehler beim Generieren des Player-Codes:", err) } g.playerCode = hex.EncodeToString(bytes) // In LocalStorage speichern if jsGlobal := js.Global(); !jsGlobal.IsUndefined() { localStorage := jsGlobal.Get("localStorage") if !localStorage.IsUndefined() { localStorage.Call("setItem", storageKey, g.playerCode) log.Printf("๐Ÿ†• Neuer Player-Code in LocalStorage erstellt: %s", g.playerCode) } } }