private void Disable() { if (InputManagerA.GetInputLibrary() == InputManagerA.InputLibrary.InControl) { InputManager.OnDeviceDetached -= deviceDetached; InputManager.OnDeviceAttached -= deviceAttached; } }
// Start is called before the first frame update public void InitializeControls() { KeyCode[] myKeyCodes = (KeyCode[])Enum.GetValues(typeof(KeyCode)); myPlayer = GetComponent <s_Player>(); xboxController = (XboxController)myPlayer.GetPlayerID() + 1; for (int i = 0; i < myKeyCodes.Length; i++) { myKeys.Add(new Nothing(myPlayer, 0)); keyCodeMyKeysLocation.Add(new KeyValuePair <int, int>((int)myKeyCodes[i], i)); } XboxAxis[] myContInput = (XboxAxis[])Enum.GetValues(typeof(XboxAxis)); for (int i = 0; i < myContInput.Length; i++) { myXCIAxis.Add(new NothingA(myPlayer, "")); XCIMyKeysLocation.Add(new KeyValuePair <int, int>((int)myContInput[i], i)); } XboxButton[] myContButtonInput = (XboxButton[])Enum.GetValues(typeof(XboxButton)); for (int i = 0; i < myContButtonInput.Length; i++) { myXCIButtons.Add(new NothingA(myPlayer, "")); XCIMyKeyButtonLocation.Add(new KeyValuePair <int, int>((int)myContButtonInput[i], i)); } keyCodeMyKeysLocation.Sort((x, y) => x.Key.CompareTo(y.Key)); XCIMyKeysLocation.Sort((x, y) => x.Key.CompareTo(y.Key)); XCIMyKeyButtonLocation.Sort((x, y) => x.Key.CompareTo(y.Key)); if (InputManagerA.GetInputLibrary() == InputManagerA.InputLibrary.InControl) { if (myPlayer.GetPlayerID() < InputManager.Devices.Count) { m_controllerDevice = InputManager.Devices[myPlayer.GetPlayerID()]; } else { if (!myPlayer.GetAI() && myPlayer.GetPlayerID() > InputManager.Devices.Count + 1) { s_ErrorMessage.AddMesage("Error Connecting controllers"); } } } setDefaultControls(); for (int i = 0; i < m_inControlWrappers.Count; i++) { m_inControlWrappers[i].ControlNotInUse(); } }
// Update is called once per frame void Update() { if (myPlayer.GetAI() || s_GameManager.GetPaused()) { return; } switch (InputManagerA.GetInputLibrary()) { case InputManagerA.InputLibrary.XCI: if (!s_GameManager.Singleton.GetAcceptPlayerInput()) { for (int i = 0; i < myXCIAxis.Count; i++) { myXCIAxis[i].Execute0(0); } return; } for (int i = 0; i < myXCIAxis.Count; i++) { AxisControlsXInput(i); } for (int i = 0; i < myXCIButtons.Count; i++) { ButtonControlsXInput(i); } break; case InputManagerA.InputLibrary.InControl: for (int i = 0; i < m_inControlWrappers.Count; i++) { m_inControlWrappers[i].ControlInUse(); } break; case InputManagerA.InputLibrary.Unity: default: /* * if(!myPlayer.GetUseKeyboardAndMouse())// if this is true then this function is being called elsewhere so we do not want to call it here */ CallKeyboardAndMouseInput(); break; } }
public void CallKeyboardAndMouseInput() { if (Input.GetMouseButtonDown(0)) { myPlayer.SetFireButtonDown(true); } if (Input.GetMouseButtonUp(0)) { myPlayer.SetFireButtonDown(false); } for (int i = 0; i < myKeys.Count; i++) { if (myKeys[i].IsAxis() && InputManagerA.GetInputLibrary() == InputManagerA.InputLibrary.Unity) { AxisControls(i, (myKeys[i] as Axis).GetAxisName()); } else { keyCheck(i); } } }
void setDefaultControls() { switch (ControlScheme) { case ControlSystem.Default: myKeys[getIndexOfButton(KeyCode.W)] = new MoveNorth(myPlayer, KeyCode.W); myKeys[getIndexOfButton(KeyCode.S)] = new MoveSouth(myPlayer, KeyCode.S); myKeys[getIndexOfButton(KeyCode.A)] = new MoveWest(myPlayer, KeyCode.A); myKeys[getIndexOfButton(KeyCode.D)] = new MoveEast(myPlayer, KeyCode.D); myKeys[getIndexOfButton(KeyCode.Space)] = new FireWeapon(myPlayer, KeyCode.Space); myKeys[getIndexOfButton(KeyCode.E)] = new DropWeapon(myPlayer, KeyCode.E); myKeys[getIndexOfButton(KeyCode.Mouse1)] = new Dodge(myPlayer, KeyCode.Mouse1); myKeys[getIndexOfButton(KeyCode.Mouse0)] = new FireWeapon(myPlayer, KeyCode.Mouse0); myKeys[getIndexOfButton(KeyCode.Mouse2)] = new FireWeaponSecondary(myPlayer, KeyCode.Mouse2); myKeys[getIndexOfButton(KeyCode.Q)] = new Dodge(myPlayer, KeyCode.Q); myKeys[getIndexOfButton(KeyCode.F)] = new Kick(myPlayer, KeyCode.F); switch (InputManagerA.GetInputLibrary()) { case InputManagerA.InputLibrary.XCI: myXCIAxis[getIndexOfAxis(XboxAxis.LeftStickX)] = new MoveLeftRightA(myPlayer, XboxAxis.LeftStickX); myXCIAxis[getIndexOfAxis(XboxAxis.LeftStickY)] = new MoveUpDownA(myPlayer, XboxAxis.LeftStickY); myXCIAxis[getIndexOfAxis(XboxAxis.RightStickX)] = new FireWeaponAutoH(myPlayer, XboxAxis.RightStickX); myXCIAxis[getIndexOfAxis(XboxAxis.RightStickY)] = new FireWeaponAutoV(myPlayer, XboxAxis.RightStickY); myXCIAxis[getIndexOfAxis(XboxAxis.RightTrigger)] = new FireWeaponA(myPlayer, XboxAxis.RightTrigger, true); myXCIAxis[getIndexOfAxis(XboxAxis.LeftTrigger)] = new FireWeaponSecondaryA(myPlayer, XboxAxis.LeftTrigger, true); myXCIButtons[getIndexOfXboxButton(XboxButton.Y)] = new DropWeapon(myPlayer, XboxButton.Y); myXCIButtons[getIndexOfXboxButton(XboxButton.RightBumper)] = new Kick(myPlayer, XboxButton.RightBumper); myXCIButtons[getIndexOfXboxButton(XboxButton.LeftBumper)] = new Dodge(myPlayer, XboxButton.LeftBumper); break; case InputManagerA.InputLibrary.InControl: m_inControlWrappers.Add(new ICLeftStickX(m_controllerDevice, new MoveLeftRightA(myPlayer, "", false))); m_inControlWrappers.Add(new ICLeftStickY(m_controllerDevice, new MoveUpDownA(myPlayer, "", false))); m_inControlWrappers[m_inControlWrappers.Count - 1].Inverse(true); m_inControlWrappers.Add(new ICRightStickX(m_controllerDevice, new FireWeaponAutoH(myPlayer, "", false))); m_inControlWrappers.Add(new ICRightStickY(m_controllerDevice, new FireWeaponAutoV(myPlayer, "", false))); m_inControlWrappers[m_inControlWrappers.Count - 1].Inverse(true); m_inControlWrappers.Add(new ICRightTrigger(m_controllerDevice, new FireWeaponA(myPlayer, "", false))); m_inControlWrappers.Add(new ICLeftTrigger(m_controllerDevice, new FireWeaponSecondaryA(myPlayer, "", false))); m_inControlWrappers.Add(new ICRightBumper(m_controllerDevice, new Kick(myPlayer, (KeyCode)0))); m_inControlWrappers.Add(new ICLeftBumper(m_controllerDevice, new Dodge(myPlayer, (KeyCode)0))); m_inControlWrappers.Add(new ICYButton(m_controllerDevice, new DropWeapon(myPlayer, (KeyCode)0))); break; case InputManagerA.InputLibrary.Unity: default: myKeys.Add(new MoveLeftRightA(myPlayer, getProperAxisName(myPlayer, (int)XEI.LeftStickX))); myKeys.Add(new MoveUpDownA(myPlayer, getProperAxisName(myPlayer, (int)XEI.LeftStickY))); myKeys.Add(new FireWeaponAutoH(myPlayer, getProperAxisName(myPlayer, (int)XEI.RightStickX))); myKeys.Add(new FireWeaponAutoV(myPlayer, getProperAxisName(myPlayer, (int)XEI.RightStickY))); myKeys.Add(new FireWeaponA(myPlayer, getProperAxisName(myPlayer, (int)XEI.RightTrigger))); myKeys.Add(new FireWeaponSecondaryA(myPlayer, getProperAxisName(myPlayer, (int)XEI.LeftTrigger))); myKeys[getIndexOfButton(((KeyCode)((int)(XEI.Button3)) + 20 * myPlayer.GetPlayerID()))] = new DropWeapon(myPlayer, ((KeyCode)((int)(XEI.Button3)) + 20 * myPlayer.GetPlayerID())); myKeys[getIndexOfButton(((KeyCode)((int)(XEI.Button4)) + 20 * myPlayer.GetPlayerID()))] = new Dodge(myPlayer, ((KeyCode)((int)(XEI.Button4)) + 20 * myPlayer.GetPlayerID())); myKeys[getIndexOfButton(((KeyCode)((int)(XEI.Button5)) + 20 * myPlayer.GetPlayerID()))] = new Kick(myPlayer, ((KeyCode)((int)(XEI.Button5)) + 20 * myPlayer.GetPlayerID())); break; } break; case ControlSystem.TankControls: myKeys[getIndexOfButton(KeyCode.W)] = new MoveForward(myPlayer, KeyCode.W); myKeys[getIndexOfButton(KeyCode.S)] = new MoveBack(myPlayer, KeyCode.S); myKeys[getIndexOfButton(KeyCode.A)] = new RotateLeft(myPlayer, KeyCode.A); myKeys[getIndexOfButton(KeyCode.D)] = new RotateRight(myPlayer, KeyCode.D); myKeys.Add(new AimLeftRightA(myPlayer, getProperAxisName(myPlayer, 4))); myKeys.Add(new FireWeaponA(myPlayer, getProperAxisName(myPlayer, 10), true)); myKeys.Add(new AimUpDownA(myPlayer, getProperAxisName(myPlayer, 5))); myKeys.Add(new MoveLeftRightA(myPlayer, getProperAxisName(myPlayer, 1))); myKeys.Add(new MoveUpDownA(myPlayer, getProperAxisName(myPlayer, 2))); break; case ControlSystem.FireAndAimAsOne: myKeys[getIndexOfButton(KeyCode.W)] = new MoveNorth(myPlayer, KeyCode.W); myKeys[getIndexOfButton(KeyCode.S)] = new MoveSouth(myPlayer, KeyCode.S); myKeys[getIndexOfButton(KeyCode.A)] = new MoveEast(myPlayer, KeyCode.A); myKeys[getIndexOfButton(KeyCode.D)] = new MoveWest(myPlayer, KeyCode.D); myKeys.Add(new FireWeaponAutoH(myPlayer, getProperAxisName(myPlayer, 4), false, true)); myKeys.Add(new FireWeaponAutoV(myPlayer, getProperAxisName(myPlayer, 5), false, true)); myKeys.Add(new MoveLeftRightA(myPlayer, getProperAxisName(myPlayer, 1))); myKeys.Add(new MoveUpDownA(myPlayer, getProperAxisName(myPlayer, 2))); break; default: break; } }