private void ServerShootWeapon(NetworkedWeapon networkedWeapon)
        {
            nextTimeToFire = Time.time + 1f / networkedWeapon.GetTCWeapon().fireRate;

            networkedWeapon.CurrentBulletAmount--;

            RpcWeaponMuzzleFlash();

            SimulationHelper.SimulateCommand(playerManager, () => WeaponRayCast());
        }
Exemple #2
0
        /// <summary>
        ///     Updates ammo text
        /// </summary>
        /// <param name="netWeapon"></param>
        public void UpdateAmmoUI(NetworkedWeapon netWeapon)
        {
            if (clientUI == null || clientUI.WeaponManager == null)
            {
                return;
            }

            TCWeapon weapon = netWeapon.GetTCWeapon();

            ammoText.text    = netWeapon.CurrentBulletAmount.ToString();
            maxAmmoText.text = weapon.maxBullets.ToString();
            reloadTextGameObject.SetActive(netWeapon.IsReloading);
        }
        internal void ShootWeapon(bool buttonDown)
        {
            if (ClientUI.IsPauseMenuOpen)
            {
                return;
            }

            //Cache our current weapon
            NetworkedWeapon networkedWeapon = weaponManager.GetActiveWeapon();

            //Looks like the weapon isn't setup yet
            if (networkedWeapon == null)
            {
                return;
            }

            if (networkedWeapon.IsReloading)
            {
                return;
            }

            TCWeapon weapon = networkedWeapon.GetTCWeapon();

            if (weapon == null)
            {
                return;
            }

            if (buttonDown && weapon.fireMode == TCWeapon.WeaponFireMode.Semi)
            {
                ClientCallServerShoot();
            }
            if (buttonDown && weapon.fireMode == TCWeapon.WeaponFireMode.Auto)
            {
                InvokeRepeating(nameof(ClientCallServerShoot), 0f, 1f / weapon.fireRate);
            }
            if (!buttonDown && weapon.fireMode == TCWeapon.WeaponFireMode.Auto)
            {
                CancelInvoke(nameof(ClientCallServerShoot));
            }
        }