public static Dictionary <int, KeyItemDefinition> LoadKeyItems(XmlDocument keyItemDoc) { var keyItemDefinitions = new Dictionary <int, KeyItemDefinition>(); var keyItemNodes = keyItemDoc.SelectNodes("data/KeyItem"); foreach (XmlNode keyItemNode in keyItemNodes) { var index = int.Parse(keyItemNode?.Attributes["Index"]?.Value ?? "-1"); if (index == -1) { throw new InvalidOperationException("Invalid Key Item index."); } var nameKey = keyItemNode?.Attributes["Name"].Value; var info = new List <string>(); var dialogueNodes = keyItemNode.ChildNodes; var dialogueKeys = new List <string>(); foreach (XmlNode dialogueXml in dialogueNodes) { dialogueKeys.Add(dialogueXml.Attributes["Key"].Value); } keyItemDefinitions[index] = new KeyItemDefinition { NameKey = nameKey, DialogueKeys = dialogueKeys }; } return(keyItemDefinitions); }
public KeyItemViewModel(int index, KeyItemDefinition keyItemDefinition) { this.index = index; this.nameKey = keyItemDefinition.NameKey; this.DialogueKeys = new ObservableCollection <Wrapper <string> >(keyItemDefinition.DialogueKeys.Select(k => k.Wrap()) ?? new List <Wrapper <string> >()); this.DialogueKeys.CollectionChanged += CollectionChanged; this.RegisterDialogueKeys(); this.initialStringValue = this.StringValue; }