Пример #1
0
	/// <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;
					}
				}
			}
		}
	}
Пример #2
0
	/// <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;
	}