using System.Text.Json; namespace Snake.Avalonia.Views; /// /// Persists high score to a JSON file in the user's local app data. /// public static class HighScoreManager { private static readonly string FilePath; static HighScoreManager() { var appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var dir = Path.Combine(appData, "SnakeAvalonia"); Directory.CreateDirectory(dir); FilePath = Path.Combine(dir, "highscore.json"); } public static int Load() { try { if (File.Exists(FilePath)) { var json = File.ReadAllText(FilePath); var data = JsonSerializer.Deserialize(json); return data?.Score ?? 0; } } catch { // Corrupted file — reset } return 0; } public static void Save(int score) { try { var data = new HighScoreData { Score = score, Date = DateTime.UtcNow.ToString("O") }; var json = JsonSerializer.Serialize(data); File.WriteAllText(FilePath, json); } catch { // Silently fail — high score is non-critical } } private sealed class HighScoreData { public int Score { get; set; } public string Date { get; set; } = string.Empty; } }