// Play Reload private IEnumerator PlayReload() { isReloading = true; singleShotReady = true; FirstPersonWeaponSway.IronsightUnzoom(); while (FirstPersonWeaponSway.ironsightZooming || FirstPersonWeaponSway.isPlaying) { yield return(null); } float reloadTime = .15f; if (fpWeaponSway != null && fpWeaponSway.reloadClip != null) { reloadTime = fpWeaponSway.reloadClip.length; } if (reloadSFX != null) { reloadTime = reloadSFX.length; } if (reloadSFX != null && fpWeaponSway != null && fpWeaponSway.reloadClip != null) { reloadTime = Mathf.Min(reloadSFX.length, fpWeaponSway.reloadClip.length); } if (fpWeaponSway != null) { fpWeaponSway.PlayReloadAnimation(); } m_Audio.pitch = Time.timeScale; m_Audio.PlayOneShot(reloadSFX); float elapsed = 0f; while (elapsed < reloadTime) { elapsed += Time.deltaTime; yield return(null); } int missingAmmo = Mathf.Max(0, maxAmmo - currentSlot.currentAmmo); int invAmmo = AmmoBackpack.GetCurrentAmmo(currentSlot.ammoIndex); currentSlot.currentAmmo += Mathf.Min(Mathf.Max(0, invAmmo), missingAmmo); invAmmo = Mathf.Max(0, invAmmo -= missingAmmo); AmmoBackpack.SetCurrentAmmo(currentSlot.ammoIndex, invAmmo); HudElements.WeaponInformer.UpdateCurrentAmmoInfo(currentSlot.currentAmmo); HudElements.WeaponInformer.UpdateAllAmmoInfo(invAmmo); isReloading = false; }
// Update Hud public static void UpdateHud(bool updateAll = false) { if (!PlayerCharacter.Instance.isAlive) { return; } if (!isMelee) { HudElements.Crosshair.UpdatePosition(m_Firearm.dispersion); // HudElements.WeaponInformer.UpdateAmmoIcon(AmmoBackpack.GetHudIcon(m_Firearm.currentSlot.ammoIndex)); HudElements.WeaponInformer.UpdateCurrentAmmoInfo(m_Firearm.currentSlot.currentAmmo); HudElements.WeaponInformer.UpdateAllAmmoInfo(AmmoBackpack.GetCurrentAmmo(m_Firearm.currentSlot.ammoIndex)); HudElements.WeaponInformer.UpdateShootingModeIcon(m_Weapon.firingMode); } if (updateAll) { UpdateInformerAndCrosshair(); } }