Exemple #1
0
        // 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;
        }
Exemple #2
0
        // 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();
            }
        }