//go:build !js || !wasm // +build !js !wasm package main import ( "crypto/rand" "encoding/hex" "io/ioutil" "log" "strings" ) // loadOrCreatePlayerCode lädt oder erstellt einen eindeutigen Spieler-Code (Desktop Version) func (g *Game) loadOrCreatePlayerCode() { const codeFile = "player_code.txt" // Versuche bestehenden Code zu laden if data, err := ioutil.ReadFile(codeFile); err == nil { g.playerCode = string(data) log.Printf("🔑 Player-Code geladen: %s", g.playerCode) return } // Erstelle neuen Code (32 Hex-Zeichen = 16 Bytes) 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) // Speichere Code in Datei if err := ioutil.WriteFile(codeFile, []byte(g.playerCode), 0644); err != nil { log.Fatal("Fehler beim Speichern des Player-Codes:", err) } log.Printf("🆕 Neuer Player-Code erstellt: %s", g.playerCode) } // loadPlayerName lädt gespeicherten Spielernamen (Desktop Version) func (g *Game) loadPlayerName() string { const nameFile = "player_name.txt" if data, err := ioutil.ReadFile(nameFile); err == nil { name := strings.TrimSpace(string(data)) if name != "" { log.Printf("👤 Spielername geladen: %s", name) return name } } return "" } // savePlayerName speichert Spielernamen (Desktop Version) func (g *Game) savePlayerName(name string) { const nameFile = "player_name.txt" if err := ioutil.WriteFile(nameFile, []byte(name), 0644); err != nil { log.Printf("⚠️ Fehler beim Speichern des Spielernamens: %v", err) } else { log.Printf("💾 Spielername gespeichert: %s", name) } }