diff --git a/SoulstormReplayReader.Core/Domain/GameSettings.cs b/SoulstormReplayReader.Core/Domain/GameSettings.cs index 69e6919..62ed475 100644 --- a/SoulstormReplayReader.Core/Domain/GameSettings.cs +++ b/SoulstormReplayReader.Core/Domain/GameSettings.cs @@ -2,23 +2,25 @@ public sealed class GameSettings(int gameSettingsCount = 8) { - private readonly Dictionary _settings = new(gameSettingsCount); - public IReadOnlyDictionary Settings => _settings; + private readonly Dictionary _settings = new(gameSettingsCount); + public IReadOnlyDictionary Settings => _settings; - public void AddSetting(string name, int value) + public int? this[string name] => _settings.GetValueOrDefault(name); + + internal void AddSetting(string name, int value) { _settings.Add(name, value); } - public int AiDifficulty => _settings["FDIA"]; // FDIA = AIDF = AI Difficulty - public int StartResources => _settings["TSSR"]; // TSSR = RSST = Starting Resources - public int LockTeams => _settings["MTKL"]; // MTKL = LKTM = Lock Teams - public int CheatsOn => _settings["AEHC"]; // AEHC = CHEA = Cheats Enabled - public int StartingLocation => _settings["COLS"]; // COLS = SLOC = Starting Location - public int GameSpeed => _settings["DPSG"]; // DPSG = GSPD = Game Speed - public int ResourceSharing => _settings["HSSR"]; // HSSR = RSSH = Resource Sharing - public int ResourceRate => _settings["TRSR"]; // TRSR = RSRT = Resource Rate - public int DisableFlyers => _settings["YLFN"]; // YLFN = NFLY = No flyers + public int? AiDifficulty => _settings.GetValueOrDefault("FDIA"); // FDIA = AIDF = AI Difficulty + public int? StartResources => _settings.GetValueOrDefault("TSSR"); // TSSR = RSST = Starting Resources + public int? LockTeams => _settings.GetValueOrDefault("MTKL"); // MTKL = LKTM = Lock Teams + public int? CheatsOn => _settings.GetValueOrDefault("AEHC"); // AEHC = CHEA = Cheats Enabled + public int? StartingLocation => _settings.GetValueOrDefault("COLS"); // COLS = SLOC = Starting Location + public int? GameSpeed => _settings.GetValueOrDefault("DPSG"); // DPSG = GSPD = Game Speed + public int? ResourceSharing => _settings.GetValueOrDefault("HSSR"); // HSSR = RSSH = Resource Sharing + public int? ResourceRate => _settings.GetValueOrDefault("TRSR"); // TRSR = RSRT = Resource Rate + public int? DisableFlyers => _settings.GetValueOrDefault("YLFN"); // YLFN = NFLY = No flyers public bool IsQuickStart => StartResources == 1; public bool AreCheatsOn => CheatsOn == 1;