private void ServerShootWeapon(NetworkedWeapon networkedWeapon) { nextTimeToFire = Time.time + 1f / networkedWeapon.GetTCWeapon().fireRate; networkedWeapon.CurrentBulletAmount--; RpcWeaponMuzzleFlash(); SimulationHelper.SimulateCommand(playerManager, () => WeaponRayCast()); }
/// <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)); } }