private void InitialiseUI() { OnScoreChanged?.Invoke(newText: _currentGameStats.Score.ToString()); OnCountDown?.Invoke(newText: ""); StartPauseWatch?.Invoke(""); OnAmmoChange?.Invoke(newText: _currentGameStats.Ammo.ToString()); }
public void Shoot(Vector2 targetPosition) { shooting = true; if (delayLeft > 0 || IsReloading()) { return; } BaseProjectile projectile = currentClip.GetProjectile(parent.transform); if (projectile == null) { return; } ShootSoundComponent.SoundEffect = projectile.shootSound; GameManager.SpawnObject(projectile); projectile.Start(targetPosition, parent); ShootSoundComponent.Play(); OnAmmoChange?.Invoke(this); delayLeft = ammoClips[currentClipIndex].fireDelay; if (currentClip.GetAmmoInfo().loaded == 0) { StopShooting(); } }
private IEnumerator StartReloadingCoroutine() { _reloading = true; OnStartReloading?.Invoke(); yield return(_reloadingWaitTime); _currentClipAmmo = maxClipAmmo; OnStopReloading?.Invoke(); OnAmmoChange?.Invoke(_currentClipAmmo); _reloading = false; }
/// <summary> /// Must be called when weapons' controller is reinitting /// </summary> public void Reinit() { wasJammed = State == WeaponState.ReadyForUnjam; State = WeaponState.Nothing; OnAmmoChange?.Invoke(-1); gameObject.SetActive(false); Deactivate(); RestoreTransforms(); }
protected void ReduceAmmo() { int newAmount = ammo.Get(AmmoType).CurrentAmount - AmmoConsumption; ammo.Get(AmmoType).CurrentAmount = newAmount; OnAmmoChange?.Invoke(newAmount); // if run out of ammo, send event if (newAmount == 0) { OnAmmoRunOut?.Invoke(WeaponIndex); } }
public void Enable() { if (State != WeaponState.Nothing) { Debug.LogWarning("Wrong weapon state"); return; } State = WeaponState.Enabling; gameObject.SetActive(true); Activate(); // this weapon is activating, // show its ammo OnAmmoChange?.Invoke(ammo.Get(AmmoType).CurrentAmount); // pose hand if (handPivot != null) { //handPivot.PoseHand(); } else { if (handsController == null) { handsController = FindObjectOfType <HandsController>(); } if (handsController != null) { // if doesn't exist, dont render it handsController.RenderRightHand = false; } } // wait for enabling if (!wasJammed) { StartCoroutine(Wait(TakingOutTime, WeaponState.Ready)); } else { StartCoroutine(Wait(TakingOutTime, WeaponState.ReadyForUnjam)); } }
public bool RestoreAmmo(Type ammoType, int amount) { AmmoClip clip = ammoClips.Find(x => x.clip.ammoType == ammoType); if (clip == null) { throw new ApplicationException("restoring unexisting ammo"); } if (clip.IsFull()) { return(false); } clip.RestoreAmmo(amount); OnAmmoChange?.Invoke(this); return(true); }
void Disable() { if (State != WeaponState.Breaking && State != WeaponState.Ready && State != WeaponState.ReadyForUnjam) { Debug.LogWarning("Wrong weapon state"); return; } // mark, it will be used when weapon will be enabled wasJammed = State == WeaponState.ReadyForUnjam; State = WeaponState.Disabling; // disable current ammo amount OnAmmoChange?.Invoke(-1); // wait for disabling StartCoroutine(WaitForDisabling(HidingTime)); }
public void Shoot() { var now = Time.time; if (!CanShoot(now)) { return; } _lastShoot = now; _currentClipAmmo -= 1; OnAmmoChange?.Invoke(_currentClipAmmo); var shootingPosition = ShootingPoints[_currentShootingPoint].Transform.position; photonView.RPC(nameof(RPC_SpawnBullet), RpcTarget.MasterClient, PhotonNetwork.LocalPlayer.UserId, addForceVelocity, PhotonNetwork.LocalPlayer.GetPlayerNumber(), shootingPosition, GetShootingDirection() ); shootCue.Execute(shootingPosition, Quaternion.identity); _currentShootingPoint = (_currentShootingPoint + 1) % ShootingPoints.Length; }
private void ReloadHandler(AmmoClip clip) { OnAmmoChange?.Invoke(this); }
public void UpdateAmmoAmount(int _amount) { _currentGameStats.DecrementAmmo(_amount); OnAmmoChange?.Invoke(newText: _currentGameStats.Ammo.ToString()); }