// Rate Of Fire protected IEnumerator FireRate(float rateTime) { weaponReady = false; //yield return new WaitForSeconds( rateTime ); for (float el = 0f; el < rateTime; el += Time.deltaTime) { yield return(null); } weaponReady = true; if (owner.isPlayer) { if (checkAmmo && shotsNumber > 0) { SecondStageShooting(); shotsNumber--; } if (checkAmmo == false) { WeaponsManager.ChangeEmptyToFirstAvaliable(); } } }
// Add Ammo public static bool AddAmmo(int index, ref int addАmount) { if ((index < 0) || (index >= size)) { Debug.LogError("AddAmmo ERROR: Array index out of range."); return(false); } int currentAmmo = GetCurrentAmmo(index); int maxAmmo = GetMaxAmmo(index); if (currentAmmo >= maxAmmo) { return(false); } // int missingAmmo = Mathf.Max(0, maxAmmo - currentAmmo); currentAmmo += Mathf.Min(Mathf.Max(0, addАmount), missingAmmo); addАmount = Mathf.Max(0, addАmount -= missingAmmo); SetCurrentAmmo(index, currentAmmo); WeaponsManager.UpdateHud(); return(true); }
// Pickup Item public void PickupItem() { Pickuped.Invoke(); switch (pickupType) { case EPickupType.Health: if (PlayerCharacter.Instance.IncrementHealth(amount)) { DestroyIt(); } break; case EPickupType.Melee: case EPickupType.Firearms: if (WeaponsManager.PickupWeapon(weaponIndex, (pickupType == EPickupType.Firearms), amount)) { DestroyIt(); } else { PickupAmmo(); } break; case EPickupType.Ammo: PickupAmmo(); break; case EPickupType.Thrown: if (WeaponsManager.PickupWeapon(weaponIndex, true, amount)) { amount--; if (amount > 0) { PickupAmmo(); } else { DestroyIt(); } } else { PickupAmmo(); } break; } }
// Set PointSprite internal static void SetPointSprite(ECrosshairMode mode) { if (mode == ECrosshairMode.Point) { m_Instance.pointRT.sizeDelta = Vector2.one * 2f; WeaponsManager.UpdateHud(true); } else if (mode == ECrosshairMode.None) { m_Instance.pointRT.sizeDelta = Vector2.zero; WeaponsManager.UpdateHud(true); } else { m_Instance.pointRT.sizeDelta = Vector2.one * 64f; SetActive(ECrosshairView.OnlyPoint); } switch (mode) { case ECrosshairMode.None: case ECrosshairMode.Point: m_Instance.pointImg.sprite = m_Instance.pointIcon; break; case ECrosshairMode.Cancel: m_Instance.pointImg.sprite = m_Instance.cancelIcon; break; case ECrosshairMode.Hand: m_Instance.pointImg.sprite = m_Instance.handIcon; break; case ECrosshairMode.Swap: m_Instance.pointImg.sprite = m_Instance.swapIcon; break; case ECrosshairMode.Ammo: m_Instance.pointImg.sprite = m_Instance.ammoIcon; break; case ECrosshairMode.Health: m_Instance.pointImg.sprite = m_Instance.healthIcon; break; default: break; } }
// Awake void Awake() { weaponIndex = -1; weaponsCount = 0; isSubweapon = false; instance = this; maxWeapons = Mathf.Clamp(1, maxWeapons, weapons.Length); m_Audio = this.GetComponent <AudioSource>(); m_Audio.outputAudioMixerGroup = GameSettings.SFXOutput; m_Weapon = weapons[0].weapon; weaponGo = m_Weapon.gameObject; m_Firearm = m_Weapon as Firearms; }
// Switch ProjectileType internal bool SwitchProjectileType() { if (projectiles.Length < 2) { return(false); } projectileIndex++; if (projectileIndex >= projectiles.Length) { projectileIndex = 0; } currentSlot = projectiles[projectileIndex]; WeaponsManager.UpdateHud(); return(true); }
// Switch ShootingMode internal bool SwitchShootingMode() { if (firingModes.Length < 2) { return(false); } firingModeIndex++; if (firingModeIndex >= firingModes.Length) { firingModeIndex = 0; } firingMode = firingModes[firingModeIndex]; WeaponsManager.UpdateHud(); return(true); }
// Pickup Activity private static void PickupActivity() { if (inputUse) { if (checkPickup) { tmpPickup.PickupItem(); } inputUse = false; ResetPickup(); } else { if (hitCollider != prevHitCollider || tmpPickup == null) { tmpPickup = hitCollider.GetComponent <IPickup>(); HudElements.Crosshair.SetColor(ECrosshairColor.Normal); } if (!checkPickup) { return; } switch (tmpPickup.PickupType) { case EPickupType.Melee: case EPickupType.Firearms: case EPickupType.Thrown: if (WeaponsManager.WeaponIsAvailable(tmpPickup.WeaponIndex)) { if ((tmpPickup.PickupType != EPickupType.Melee) && (tmpPickup.Amount > 0) && !AmmoBackpack.IsFull(tmpPickup.AmmoIndex)) { crosshairMode = ECrosshairMode.Ammo; } else { crosshairMode = ECrosshairMode.Cancel; } } else if (WeaponsManager.WeaponTypeIsStandart(tmpPickup.WeaponIndex) && WeaponsManager.crowded) { crosshairMode = ECrosshairMode.Swap; } else { crosshairMode = ECrosshairMode.Hand; } break; case EPickupType.Ammo: if (AmmoBackpack.IsFull(tmpPickup.AmmoIndex)) { crosshairMode = ECrosshairMode.Cancel; } else { crosshairMode = ECrosshairMode.Ammo; } break; case EPickupType.Health: if (PlayerCharacter.Instance.isFull) { crosshairMode = ECrosshairMode.Cancel; } else { crosshairMode = ECrosshairMode.Health; } break; default: crosshairMode = ECrosshairMode.Hand; break; } //crosshairMode HudElements.Crosshair.SetPointSprite(crosshairMode); } }
// TouchKit Input private void TouchKitInput() { if (TCKInput.CheckController(actions.pause) && TCKInput.GetAction(actions.pause, TCKActionEvent.Down)) { Pause(); } runAction = (TCKInput.CheckController(actions.run) && TCKInput.GetAction(actions.run, TCKActionEvent.Press)); if (TCKInput.CheckController(actions.jump) && TCKInput.GetAction(actions.jump, TCKActionEvent.Down)) { FirstPersonController.Jump(); } if (TCKInput.CheckController(actions.crouch) && TCKInput.GetAction(actions.crouch, TCKActionEvent.Down)) { FirstPersonController.Crouch(); } if (TCKInput.CheckController(actions.use) && TCKInput.GetAction(actions.use, TCKActionEvent.Down)) { PlayerCamera.UseItem(); } if (TCKInput.CheckController(actions.reloadWeapon) && TCKInput.GetAction(actions.reloadWeapon, TCKActionEvent.Down)) { WeaponsManager.ReloadWeapon(); } if (TCKInput.CheckController(actions.nextFiremode) && TCKInput.GetAction(actions.nextFiremode, TCKActionEvent.Down)) { WeaponsManager.SwitchFiremode(); } if (TCKInput.CheckController(actions.nextAmmotype) && TCKInput.GetAction(actions.nextAmmotype, TCKActionEvent.Down)) { WeaponsManager.SwitchAmmotype(); } if (TCKInput.CheckController(actions.toSubweapon) && TCKInput.GetAction(actions.toSubweapon, TCKActionEvent.Down)) { WeaponsManager.SwitchToSubWeapon(); } if (TCKInput.CheckController(actions.dropWeapon) && TCKInput.GetAction(actions.dropWeapon, TCKActionEvent.Down)) { WeaponsManager.DropCurrentWeapon(); } if (TCKInput.CheckController(actions.prevWeapon) && TCKInput.GetAction(actions.prevWeapon, TCKActionEvent.Down)) { WeaponsManager.SelectPreviousWeapon(); } if (TCKInput.CheckController(actions.nextWeapon) && TCKInput.GetAction(actions.nextWeapon, TCKActionEvent.Down)) { WeaponsManager.SelectNextWeapon(); } if (TCKInput.CheckController(axes.moveJoystick)) { moveHorizontal = Mathf.Clamp(TCKInput.GetAxis(axes.moveJoystick, TCKAxisType.Horizontal), -1f, 1f); moveVertical = runAction ? 1f : Mathf.Clamp(TCKInput.GetAxis(axes.moveJoystick, TCKAxisType.Vertical), -1f, 1f); } if (TCKInput.CheckController(axes.lookTouchpad)) { lookHorizontal = TCKInput.GetAxis(axes.lookTouchpad, TCKAxisType.Horizontal) * GameSettings.GetLookSensitivityByInvert_X; lookVertical = TCKInput.GetAxis(axes.lookTouchpad, TCKAxisType.Vertical) * GameSettings.GetLookSensitivityByInvert_Y; } if (TCKInput.CheckController(actions.zoom)) { zoomAction = TCKInput.GetAction(actions.zoom, TCKActionEvent.Press); zoomActionDown = TCKInput.GetAction(actions.zoom, TCKActionEvent.Down); zoomActionUp = TCKInput.GetAction(actions.zoom, TCKActionEvent.Up); } if (TCKInput.CheckController(actions.fire)) { bool fireAction = TCKInput.GetAction(actions.fire, TCKActionEvent.Press); // Fire and Reset Weapon if (fireAction && !FirstPersonController.isRunning) { WeaponsManager.WeaponFire(); } else { WeaponsManager.WeaponReset(); } } }
// Standalone Input private void StandaloneInput() { if (InputSettings.GetAction(actions.pause, EActionEvent.Down)) { Pause(); } InputSettings.RunActions(); InputSettings.RunActionAxis(); InputSettings.RunAxis(); // Cursor lock if (cursorIsBlocked && Time.timeSinceLevelLoad > .1f) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } moveHorizontal = InputSettings.GetAxis(axes.moveX); moveVertical = InputSettings.GetAxis(axes.moveY); lookHorizontal = InputSettings.GetAxis(axes.lookX) * GameSettings.GetLookSensitivityByInvert_X; lookVertical = InputSettings.GetAxis(axes.lookY) * GameSettings.GetLookSensitivityByInvert_Y; runAction = InputSettings.GetAction(actions.run, EActionEvent.Press); zoomAction = InputSettings.GetAction(actions.zoom, EActionEvent.Press); zoomActionDown = InputSettings.GetAction(actions.zoom, EActionEvent.Down); zoomActionUp = InputSettings.GetAction(actions.zoom, EActionEvent.Up); bool fireAction = InputSettings.GetAction(actions.fire, EActionEvent.Press); // Fire and Reset Weapon if (fireAction && !FirstPersonController.isRunning) { WeaponsManager.WeaponFire(); } else { WeaponsManager.WeaponReset(); } // Select Weapon ByIndex if (Input.GetKeyDown(KeyCode.Alpha1)) { WeaponsManager.SelectWeaponByIndex(0); } else if (Input.GetKeyDown(KeyCode.Alpha2)) { WeaponsManager.SelectWeaponByIndex(1); } else if (Input.GetKeyDown(KeyCode.Alpha3)) { WeaponsManager.SelectWeaponByIndex(2); } else if (Input.GetKeyDown(KeyCode.Alpha4)) { WeaponsManager.SelectWeaponByIndex(3); } else if (Input.GetKeyDown(KeyCode.Alpha5)) { WeaponsManager.SelectWeaponByIndex(4); } else if (Input.GetKeyDown(KeyCode.Alpha6)) { WeaponsManager.SelectWeaponByIndex(5); } else if (Input.GetKeyDown(KeyCode.Alpha7)) { WeaponsManager.SelectWeaponByIndex(6); } else if (Input.GetKeyDown(KeyCode.Alpha8)) { WeaponsManager.SelectWeaponByIndex(7); } else if (Input.GetKeyDown(KeyCode.Alpha9)) { WeaponsManager.SelectWeaponByIndex(8); } }