using System; using System.Collections.Generic; using System.IO; namespace CMLeonOS.Settings { public static class SettingsManager { private static string settingsFilePath = @"0:\system\settings.dat"; private static Dictionary settings = new Dictionary(); private static Dictionary defaultSettings = new Dictionary { { "LoggerEnabled", "true" }, { "MaxLoginAttempts", "3" }, { "GUI_LeftHandStartButton", "false" }, { "GUI_ShowFps", "true" }, { "GUI_TwelveHourClock", "false" }, { "GUI_MouseSensitivity", "1.0" }, { "GUI_ScreenWidth", "1280" }, { "GUI_ScreenHeight", "800" }, { "GUI_DarkNotepad", "false" } }; public static bool LoggerEnabled { get { if (settings.TryGetValue("LoggerEnabled", out string value)) { return value.ToLower() == "true"; } return true; } set { settings["LoggerEnabled"] = value ? "true" : "false"; SaveSettings(); } } public static int MaxLoginAttempts { get { if (settings.TryGetValue("MaxLoginAttempts", out string value)) { if (int.TryParse(value, out int result)) { return result; } } return 3; } set { settings["MaxLoginAttempts"] = value.ToString(); SaveSettings(); } } public static bool GUI_LeftHandStartButton { get { if (settings.TryGetValue("GUI_LeftHandStartButton", out string value)) { return value.ToLower() == "true"; } return false; } set { settings["GUI_LeftHandStartButton"] = value ? "true" : "false"; SaveSettings(); } } public static bool GUI_ShowFps { get { if (settings.TryGetValue("GUI_ShowFps", out string value)) { return value.ToLower() == "true"; } return true; } set { settings["GUI_ShowFps"] = value ? "true" : "false"; SaveSettings(); } } public static bool GUI_TwelveHourClock { get { if (settings.TryGetValue("GUI_TwelveHourClock", out string value)) { return value.ToLower() == "true"; } return false; } set { settings["GUI_TwelveHourClock"] = value ? "true" : "false"; SaveSettings(); } } public static float GUI_MouseSensitivity { get { if (settings.TryGetValue("GUI_MouseSensitivity", out string value)) { if (float.TryParse(value, out float result)) { return result; } } return 1.0f; } set { settings["GUI_MouseSensitivity"] = value.ToString(); SaveSettings(); } } public static int GUI_ScreenWidth { get { if (settings.TryGetValue("GUI_ScreenWidth", out string value)) { if (int.TryParse(value, out int result)) { return result; } } return 1280; } set { settings["GUI_ScreenWidth"] = value.ToString(); SaveSettings(); } } public static int GUI_ScreenHeight { get { if (settings.TryGetValue("GUI_ScreenHeight", out string value)) { if (int.TryParse(value, out int result)) { return result; } } return 800; } set { settings["GUI_ScreenHeight"] = value.ToString(); SaveSettings(); } } public static bool GUI_DarkNotepad { get { if (settings.TryGetValue("GUI_DarkNotepad", out string value)) { return value.ToLower() == "true"; } return false; } set { settings["GUI_DarkNotepad"] = value ? "true" : "false"; SaveSettings(); } } public static void LoadSettings() { settings.Clear(); try { if (File.Exists(settingsFilePath)) { string[] lines = File.ReadAllLines(settingsFilePath); foreach (string line in lines) { if (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("#")) { int separatorIndex = line.IndexOf('='); if (separatorIndex > 0) { string key = line.Substring(0, separatorIndex).Trim(); string value = line.Substring(separatorIndex + 1).Trim(); settings[key] = value; } } } foreach (var defaultSetting in defaultSettings) { if (!settings.ContainsKey(defaultSetting.Key)) { settings[defaultSetting.Key] = defaultSetting.Value; } } } else { foreach (var defaultSetting in defaultSettings) { settings[defaultSetting.Key] = defaultSetting.Value; } SaveSettings(); } } catch (Exception e) { Console.WriteLine($"Error loading settings: {e.Message}"); } } public static void SaveSettings() { try { Directory.CreateDirectory(Path.GetDirectoryName(settingsFilePath)); using (StreamWriter writer = new StreamWriter(settingsFilePath)) { writer.WriteLine("# CMLeonOS Settings Configuration"); writer.WriteLine("# Format: setting_name=value"); writer.WriteLine(); foreach (var setting in settings) { writer.WriteLine($"{setting.Key}={setting.Value}"); } } } catch (Exception e) { Console.WriteLine($"Error saving settings: {e.Message}"); } } public static string GetSetting(string key) { if (settings.TryGetValue(key, out string value)) { return value; } return null; } public static void SetSetting(string key, string value) { settings[key] = value; SaveSettings(); } public static bool GetBoolSetting(string key, bool defaultValue) { if (settings.TryGetValue(key, out string value)) { return value.ToLower() == "true"; } return defaultValue; } public static int GetIntSetting(string key, int defaultValue) { if (settings.TryGetValue(key, out string value)) { if (int.TryParse(value, out int result)) { return result; } } return defaultValue; } public static void ListSettings() { if (settings.Count == 0) { Console.WriteLine("No settings defined"); return; } Console.WriteLine("Current settings:"); foreach (var setting in settings) { Console.WriteLine($" {setting.Key} = {setting.Value}"); } } } }