private void tryUseItem(ItemController item) { ItemStatus status = item.checkStatus(); switch (status) { case ItemStatus.ACTIVE_READY: useItem(item); break; case ItemStatus.NEED_AIM: Debug.Log(item.item.name + " needs aiming"); enableAimMode(); primaryUp = delegate () { disableAimMode(); useItem(item); }; OnPrimaryUp += primaryUp; break; case ItemStatus.COOLDOWN: Debug.Log(item.item.name + " is cooling down"); break; case ItemStatus.ONLY_PASSIVE: Debug.Log("Item doesn't have active ability"); break; default: break; } }
// Reading weapon input private void readInput() { bool primaryDown, primaryHold, primaryUp; bool secondaryDown, secondaryHold, secondaryUp; switch (player.inputType) { case InputType.KEYBOARD: // For processing usePrimaryWeapon = Input.GetButton(Control.LeftMouse); useSecondaryWeapon = Input.GetButton(Control.RightMouse); useFirstItem = Input.GetButtonUp(Control.Q); useSecondItem = Input.GetButtonUp(Control.E); // For firing events primaryDown = Input.GetButtonDown(Control.LeftMouse); primaryHold = usePrimaryWeapon; primaryUp = Input.GetButtonUp(Control.LeftMouse); secondaryDown = Input.GetButtonDown(Control.RightMouse); secondaryHold = useSecondaryWeapon; secondaryUp = Input.GetButtonUp(Control.RightMouse); requestTeleport = Input.GetButtonDown(Control.LeftAlt); dodge = Input.GetButtonDown(Control.Space); break; case InputType.GAMEPAD: float rightTrigger = Input.GetAxis(Utils.getControlForPlayer(Control.RightTrigger, player.gamepadNumber)); float leftTrigger = Input.GetAxis(Utils.getControlForPlayer(Control.LeftTrigger, player.gamepadNumber)); primaryDown = (!usePrimaryWeapon && (rightTrigger > 0f)); primaryHold = (rightTrigger > 0f); primaryUp = (usePrimaryWeapon && (rightTrigger <= 0.1f)); secondaryDown = (!useSecondaryWeapon && (leftTrigger > 0f)); secondaryHold = (leftTrigger > 0f); secondaryUp = (useSecondaryWeapon && (leftTrigger <= 0.1f)); usePrimaryWeapon = primaryHold; useSecondaryWeapon = secondaryHold; useFirstItem = Input.GetButtonUp(Utils.getControlForPlayer(Control.LeftBumper, player.gamepadNumber)); useSecondItem = Input.GetButtonUp(Utils.getControlForPlayer(Control.RightBumper, player.gamepadNumber)); requestTeleport = Input.GetButtonDown(Utils.getControlForPlayer(Control.X, player.gamepadNumber)); dodge = Input.GetButtonDown(Utils.getControlForPlayer(Control.B, player.gamepadNumber)); break; default: usePrimaryWeapon = false; useSecondaryWeapon = false; useFirstItem = false; useSecondItem = false; primaryDown = false; primaryHold = false; primaryUp = false; secondaryDown = false; secondaryHold = false; secondaryUp = false; requestTeleport = false; dodge = false; break; } // Firing freakin events if (primaryDown && OnPrimaryDown != null) OnPrimaryDown(); if (primaryHold && OnPrimaryHold != null) OnPrimaryHold(); if (primaryUp && OnPrimaryUp != null) OnPrimaryUp(); if (secondaryDown && OnSecondaryDown != null) OnSecondaryDown(); if (secondaryHold && OnSecondaryHold != null) OnSecondaryHold(); if (secondaryUp && OnSecondaryUp != null) OnSecondaryUp(); }