manager: add proper support for options
This commit is contained in:
28
ModpackUpdater/InstallOptionValueDictionary.cs
Normal file
28
ModpackUpdater/InstallOptionValueDictionary.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
namespace ModpackUpdater;
|
||||
|
||||
public class InstallOptionValueDictionary : Dictionary<string, bool>
|
||||
{
|
||||
public void SetOption(InstallOptionSet set, InstallOption option, bool value)
|
||||
{
|
||||
if (!set.Options.Contains(option))
|
||||
throw new KeyNotFoundException("Options seems to be not a part of the option set.");
|
||||
if (option.Default == value)
|
||||
UnsetOption(set, option);
|
||||
else
|
||||
this[$"{set.Id}.{option.Id}"] = value;
|
||||
}
|
||||
|
||||
public void UnsetOption(InstallOptionSet set, InstallOption option)
|
||||
{
|
||||
if (!set.Options.Contains(option))
|
||||
throw new KeyNotFoundException("Options seems to be not a part of the option set.");
|
||||
Remove($"{set.Id}.{option.Id}");
|
||||
}
|
||||
|
||||
public bool GetOptionValue(InstallOptionSet set, InstallOption option)
|
||||
{
|
||||
if (TryGetValue($"{set.Id}.{option.Id}", out var value))
|
||||
return value;
|
||||
return option.Default;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user