/// <summary> /// DONT USE UNLESS YOU KNOW WHAT YOU'RE DOING. MANAGER AUTO SAVES INPUTS DONT BOTHER WITH THIS OKEY.. /// </summary> public static void SaveXML(HardKey[] keys, string location) { XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = false; settings.Indent = true; XmlWriter writer = XmlWriter.Create(location, settings); writer.WriteStartElement("KeyBindings"); for (int i = 0; i < keys.Length; i++) { HardKey key = keys[i]; writer.WriteStartElement("Input"); writer.WriteAttributeString("Name", key.Name); string prefixprime = key.CheckPrimary(typeof(KeyCode)) ? SavePrefixs[0] : key.CheckPrimary(typeof(KeyAxis)) ? SavePrefixs[1] : SavePrefixs[2]; string prefixsecon = key.CheckSecondary(typeof(KeyCode)) ? SavePrefixs[0] : key.CheckSecondary(typeof(KeyAxis)) ? SavePrefixs[1] : SavePrefixs[2]; writer.WriteAttributeString("Primary", prefixprime + "." + key.Primary.ToString()); writer.WriteAttributeString("Secondary", prefixsecon + "." + key.Secondary.ToString()); writer.WriteAttributeString("Sensitivity", key.Sensitivity.ToString()); writer.WriteEndElement(); } writer.WriteFullEndElement(); writer.WriteEndDocument(); writer.Close(); }
/// <summary> /// Will either return the delta of an axis from KeyAixs, or will smooth a key between 0 (not held) and 1 (held down) /// </summary> public float GetAxis(string KeyName) { HardKey key = Find(KeyName); if (Time.frameCount > BindingValues[key.ID, 0]) { BindingValues[key.ID, 1] = BindingValues[key.ID, 2]; if (!key.CheckPrimary(typeof(KeyAxis)) && (KeyCode)key.Primary != KeyCode.None || !key.CheckSecondary(typeof(KeyAxis)) && (KeyCode)key.SecondaryAxis != KeyCode.None) { BindingValues[key.ID, 2] = Mathf.Clamp(Mathf.MoveTowards(BindingValues[key.ID, 2], GetKey(KeyName) ? 1f : 0f, key.Sensitivity * timeDifference), -1, 1); } else { BindingValues[key.ID, 2] = (GetAxis(key.PrimaryAxis) + GetAxis(key.SecondaryAxis) + (key.isPrimaryControllerAxis ? GetController(key.PrimaryCont) : 0f) + (key.isSecondaryControllerAxis ? GetController(key.SecondaryCont) : 0f)) * key.Sensitivity; } } else { return(BindingValues[key.ID, 2]); } BindingValues[key.ID, 0] = lastFrame; return(BindingValues[key.ID, 2]); }
/// <summary> /// Returns a prettier, formatted string for display in game to show what button a key is bound to. /// </summary> public static string MakeKeycodePretty(string KeyName, bool GetPrimary = true) { HardKey key = hardManager.Current().Find(KeyName); string name = key.Primary.ToString(); KeyCode keycode = key.PrimaryKey; KeyController keycontroller = key.PrimaryCont; KeyAxis keyaxis = key.PrimaryAxis; if (GetPrimary) { name = key.Primary.ToString(); } else { name = key.Secondary.ToString(); keycode = key.SecondaryKey; keycontroller = key.SecondaryCont; keyaxis = key.SecondaryAxis; } if (key.CheckPrimary(typeof(KeyCode)) && GetPrimary || key.CheckSecondary(typeof(KeyCode)) && !GetPrimary) { if (name.Contains("Alpha")) { return(name.Replace("Alpha", "")); } else if (name.Contains("Keypad")) { return(name.Replace("Keypad", "Keypad ")); } else if (name.Contains("Left")) { return(name.Replace("Left", "Left ")); } else if (name.Contains("Right")) { return(name.Replace("Right", "Right ")); } else if (name.Contains("Up")) { return(name.Replace("Up", "Up ")); } else if (name.Contains("Down")) { return(name.Replace("Down", "Down ")); } else if (name.Contains("Mouse0")) { return("Left Mouse"); } else if (name.Contains("Mouse1")) { return("Right Mouse"); } else if (name.Contains("Mouse2")) { return("Middle Mouse"); } else if (name.Contains("Mouse")) { return("Mouse " + name.Replace("Mouse", "")); } } else if (key.CheckPrimary(typeof(KeyAxis)) && GetPrimary || key.CheckSecondary(typeof(KeyAxis)) && !GetPrimary) { if (keyaxis == KeyAxis.MouseX) { return("Mouse X"); } else if (keyaxis == KeyAxis.MouseY) { return("Mouse Y"); } else if (keyaxis == KeyAxis.ScrollWheel) { return("Scroll Wheel"); } else if (keyaxis == KeyAxis.ScrollWheelDown) { return("Scroll Wheel Down"); } else if (keyaxis == KeyAxis.ScrollWheelUp) { return("Scroll Wheel Up"); } } else if (key.CheckPrimary(typeof(KeyController)) && GetPrimary || key.CheckSecondary(typeof(KeyController)) && !GetPrimary) { switch (keycontroller) { case KeyController.LeftStickX: return("Left Stick X"); case KeyController.LeftStickY: return("Left Stick Y"); case KeyController.RightStickX: return("Right Stick X"); case KeyController.RightStickY: return("Right Stick Y"); case KeyController.DPadX: return("D-PAD X"); case KeyController.DPadY: return("D-PAD Y"); case KeyController.LeftTrigger: return("Left Trigger"); case KeyController.RightTrigger: return("Right Trigger"); case KeyController.LeftStickUp: return("Left Stick Up"); case KeyController.LeftStickDown: return("Left Stick Down"); case KeyController.LeftStickLeft: return("Left Stick Left"); case KeyController.LeftStickRight: return("Left Stick Right"); case KeyController.RightStickUp: return("Right Stick Up"); case KeyController.RightStickDown: return("Right Stick Down"); case KeyController.RightStickLeft: return("Right Stick Left"); case KeyController.RightStickRight: return("Right Stick Right"); case KeyController.DPadUp: return("D-PAD Up"); case KeyController.DPadDown: return("D-PAD Down"); case KeyController.DPadLeft: return("D-PAD Left"); case KeyController.DPadRight: return("D-PAD Right"); } } return(name); }