/// <summary> /// Load the specified FileContents. /// </summary> /// ModifyExistingEntriesOnly : When true, Only modify keys that allready exist. /// This is used to prevent old input config files from adding back deprecated keys. public void Load(string FileContents, bool ModifyExistingEntriesOnly){ using (XmlReader reader = XmlReader.Create(new StringReader(FileContents))){ while (reader.Read()){ if (reader.IsStartElement()){ switch (reader.Name){ case "Key": InputMapEntry ReadEntry = new InputMapEntry(); ReadEntry.Name = reader.GetAttribute("Name"); ReadEntry.PrimaryKey = (KeyCode)Enum.Parse(typeof(KeyCode), reader.GetAttribute("PrimaryKey")); ReadEntry.SecondaryKey = (KeyCode)Enum.Parse(typeof(KeyCode),reader.GetAttribute("SecondaryKey")); ReadEntry.PrimaryModifier = (KeyCode)Enum.Parse(typeof(KeyCode),reader.GetAttribute("PrimaryModifier")); ReadEntry.SecondaryModifier = (KeyCode)Enum.Parse(typeof(KeyCode),reader.GetAttribute("SecondaryModifier")); bool.TryParse(reader.GetAttribute("PrimaryIsAxis"), out ReadEntry.PrimaryIsAxis); ReadEntry.PrimaryAxisName = reader.GetAttribute("PrimaryAxisName"); float.TryParse(reader.GetAttribute("PrimaryAxisDeadzone"), out ReadEntry.PrimaryAxisDeadzone); bool.TryParse(reader.GetAttribute("SecondaryIsAxis"), out ReadEntry.SecondaryIsAxis); ReadEntry.SecondaryAxisName = reader.GetAttribute("SecondaryAxisName"); float.TryParse(reader.GetAttribute("SecondaryAxisDeadzone"), out ReadEntry.SecondaryAxisDeadzone); if (ModifyExistingEntriesOnly){ if (MapEntries.ContainsKey(ReadEntry.Name)){ MapEntries[ReadEntry.Name] = ReadEntry; //Make sure keys are properly set as modifiers if (ReadEntry.PrimaryModifier != KeyCode.None){ if (ReadEntry.PrimaryKey != KeyCode.None){ SetModifier(ReadEntry.PrimaryKey, ReadEntry.PrimaryModifier); } if (ReadEntry.PrimaryAxisName != ""){ SetModifier(ReadEntry.PrimaryAxisName, ReadEntry.PrimaryModifier); } } if (ReadEntry.SecondaryModifier != KeyCode.None){ if (ReadEntry.SecondaryKey != KeyCode.None){ SetModifier(ReadEntry.SecondaryKey, ReadEntry.SecondaryModifier); } if (ReadEntry.SecondaryAxisName != ""){ SetModifier(ReadEntry.SecondaryAxisName, ReadEntry.SecondaryModifier); } } } }else{ MapEntries[ReadEntry.Name] = ReadEntry; //Make sure keys are properly set as modifiers if (ReadEntry.PrimaryModifier != KeyCode.None){ if (ReadEntry.PrimaryKey != KeyCode.None){ SetModifier(ReadEntry.PrimaryKey, ReadEntry.PrimaryModifier); } if (ReadEntry.PrimaryAxisName != ""){ SetModifier(ReadEntry.PrimaryAxisName, ReadEntry.PrimaryModifier); } } if (ReadEntry.SecondaryModifier != KeyCode.None){ if (ReadEntry.SecondaryKey != KeyCode.None){ SetModifier(ReadEntry.SecondaryKey, ReadEntry.SecondaryModifier); } if (ReadEntry.SecondaryAxisName != ""){ SetModifier(ReadEntry.SecondaryAxisName, ReadEntry.SecondaryModifier); } } } break; case "Axis": InputAxisEntry ReadAxis = new InputAxisEntry(); ReadAxis.Name = reader.GetAttribute("Name"); ReadAxis.KeyPositive = reader.GetAttribute("KeyPositive"); ReadAxis.KeyNegative = reader.GetAttribute("KeyNegative"); if (ModifyExistingEntriesOnly){ if (AxisEntries.ContainsKey(ReadAxis.Name)){ AxisEntries[ReadAxis.Name] = ReadAxis; } }else{ AxisEntries[ReadAxis.Name] = ReadAxis; } break; } } } } }
/// <summary> /// Sets the axis. /// </summary> public void SetAxis(string Name, string KeyPositive, string KeyNegative){ if (!AxisEntries.ContainsKey(Name)){ AxisEntries[Name] = new InputAxisEntry(); } InputAxisEntry Entry = AxisEntries[Name]; Entry.Name = Name; Entry.KeyPositive = KeyPositive; Entry.KeyNegative = KeyNegative; }