public void DeserializeByaml(IDictionary <string, object> dictionary) { // Create new dictionaries Name = new Dictionary <Language, string>(); ShortName = new Dictionary <Language, string>(); void PopulateDictionary(string sourceDictKey, Dictionary <Language, string> targetDict) { // Check if the source dictionary even exists if (dictionary.TryGetValue(sourceDictKey, out object value)) { // Get the dictionary Dictionary <string, object> sourceDict = (Dictionary <string, object>)value; // Loop over every short name foreach (KeyValuePair <string, object> pair in sourceDict) { targetDict.Add(LanguageExtensions.FromSeadCode(pair.Key), (string)pair.Value); } } } PopulateDictionary("Name", Name); PopulateDictionary("ShortName", ShortName); }
public void DeserializeByaml(IDictionary <string, object> dictionary) { // Deserialize the VersusRule VersusRule = (VersusRule)EnumUtil.GetEnumValueFromString(typeof(VersusRule), (string)dictionary["Rule"]); // Create the News dictionary News = new Dictionary <string, Dictionary <Language, List <ScriptCommand> > >(); // Get the news list List <object> newsList = (List <object>)dictionary["News"]; // Loop over every news foreach (object obj in newsList) { // Create a new inner dictionary Dictionary <Language, List <ScriptCommand> > innerDict = new Dictionary <Language, List <ScriptCommand> >(); // Get the news dictionary Dictionary <string, object> news = (Dictionary <string, object>)obj; // Loop over every language key foreach (string code in news.Keys) { // Skip NewsType if (code == "NewsType") { continue; } // Create the script list List <ScriptCommand> commandList = ScriptParser.ParseCommandList((List <object>)news[code]); // Get the language code Language language = LanguageExtensions.FromSeadCode(code); // Add this to the inner dictionary innerDict.Add(language, commandList); } // Add the inner dictionary News.Add((string)news["NewsType"], innerDict); } // Load the Glicko constants GlickoConstants = new GlickoConstants(); GlickoConstants.DeserializeByaml((Dictionary <string, object>)dictionary[VersusRule.ToString()]); }