using System; using System.Collections.Generic; namespace Arrowgene.Ddon.Server.Scripting.utils { public class ScriptableSettings { /// /// Settings data is organized as ScriptName.FieldName /// private Dictionary> Data { get; set; } public ScriptableSettings() { Data = new Dictionary>(); } public Dictionary GetScriptData(string scriptName) { if (!Data.ContainsKey(scriptName)) { throw new Exception($"The script '{scriptName}' doesn't exist"); } return Data[scriptName]; } public T Get(string scriptName, string variableName) { if (!Data.ContainsKey(scriptName)) { throw new Exception($"The script '{scriptName}' doesn't exist"); } if (!Data[scriptName].ContainsKey(variableName)) { throw new Exception($"The setting '{scriptName}.{variableName}' doesn't exist"); } return (T)Data[scriptName][variableName]; } public void Set(string scriptName, string variableName, T value) { if (!Data.ContainsKey(scriptName)) { Data[scriptName] = new Dictionary(); } Data[scriptName][variableName] = value; } } }