//Coroutine that reloads smg private IEnumerator ChangeMagazine() { if (currentMagazineCount > 0) { //call the method in the broker to invoke the reload event for the hud controller ReloadWeaponBroker.CallWeaponIsReloading(); //Play Reload Sound smgSound.PlayOneShot(smgReloadClip); yield return(new WaitForSecondsRealtime(smgReloadSpeed)); currentMagazineCount--; smgIsReloading = false; bulletsInMagazine = 30; //Update bullet and magazine count on HUD AmmoDisplayBroker.CallUpdateAmmoOnHud(bulletsInMagazine, smgMagazineSize); AmmoDisplayBroker.CallUpdateMagazinesOnHud(currentMagazineCount); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentMagazineCount); // Debug.LogError("SMG RELOADED"); ReloadWeaponBroker.CallWeaponFinishedReloading(); } else { Debug.LogError("SMG OUT OF AMMO"); ReloadWeaponBroker.CallWeaponFinishedReloading(); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentMagazineCount); } }
//Shooting the Pistol private void ShootRocket() { if (rocketsInMagazine > 0 && launcherIsReloading == false) { //Play Sound of rocket launcher shooting rocketSound.PlayOneShot(rocketShotClip); //Instantiate the Rocket prefab at the firepoint's gameObject position GameObject rocketPrefab = Instantiate(rocket, firePoint.position, firePoint.rotation); Rigidbody2D rocketRigidbody = rocketPrefab.GetComponent <Rigidbody2D>(); rocketRigidbody.AddForce(firePoint.right * rocketForce, ForceMode2D.Impulse); //Set the rocket Color to black SpriteRenderer rocketSprite = rocketPrefab.GetComponent <SpriteRenderer>(); rocketSprite.color = Color.black; rocketsInMagazine = 0; //Update bullet count on HUD AmmoDisplayBroker.CallUpdateAmmoOnHud(rocketsInMagazine, rocketsInMagazine); //totalRockets used to be "rocketsInMagazine". Because now the HUD shows 1/10 instead of 1/1 in the ammo counter. But it turns red on critical ammo. Which to keep? AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentRockets); } else { rocketSound.PlayOneShot(rocketEmptyClip); } }
private IEnumerator reloadRocket() { if (currentRockets > 0) { // Play Sound of rocket launcher reloading rocketSound.PlayOneShot(rocketReloadClip); //call brokers method weapon is reloading ReloadWeaponBroker.CallWeaponIsReloading(); yield return(new WaitForSecondsRealtime(rocketReloadSpeed)); currentRockets--; launcherIsReloading = false; rocketsInMagazine = 1; //Update bullet and magazines count on HUD AmmoDisplayBroker.CallUpdateAmmoOnHud(rocketsInMagazine, rocketsInMagazine); AmmoDisplayBroker.CallUpdateMagazinesOnHud(currentRockets); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentRockets); ReloadWeaponBroker.CallWeaponFinishedReloading(); } else { Debug.Log("NO AMMO LEFT. RUN !!!"); ReloadWeaponBroker.CallWeaponFinishedReloading(); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentRockets); } }
private IEnumerator ChangeMagazine() { if (currentMagazineCount > 0) { //Pistol reload SOUND pistolSound.PlayOneShot(pistolReloadClip); //Update the HUD to notify the player that the gun is reloading ReloadWeaponBroker.CallWeaponIsReloading(); currentMagazineCount--; AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentMagazineCount); //Wait for reload time yield return(new WaitForSecondsRealtime(pistolReloadSpeed)); pistolIsReloading = false; bulletsInMagazine = magazineSize; AmmoDisplayBroker.CallUpdateAmmoOnHud(bulletsInMagazine, magazineSize); AmmoDisplayBroker.CallUpdateMagazinesOnHud(currentMagazineCount); ReloadWeaponBroker.CallWeaponFinishedReloading(); } else { Debug.Log("NO AMMO LEFT. RUN !!!"); ReloadWeaponBroker.CallWeaponFinishedReloading(); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentMagazineCount); } }
// Start is called before the first frame update void Start() { pistolSound = GetComponent <AudioSource>(); bulletsInMagazine = magazineSize; //Update ammo and magazine count on HUD AmmoDisplayBroker.CallUpdateAmmoOnHud(bulletsInMagazine, magazineSize); AmmoDisplayBroker.CallUpdateMagazinesOnHud(currentMagazineCount); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentMagazineCount); }
//Update Ammo public void UpdateTotalMagazines(int magazine) { currentMagazineCount += magazine; if (currentMagazineCount > totalAllowedMagazines) { currentMagazineCount = totalAllowedMagazines; } //AmmoDisplayBroker.CallUpdateMagazinesOnHud(currentMagazineCount); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentMagazineCount); }
//Update Ammo public void UpdateTotalMagazines(int magazine) { currentRockets += magazine; if (currentRockets > totalAllowedRockets) { currentRockets = totalAllowedRockets; } //AmmoDisplayBroker.CallUpdateMagazinesOnHud(currentRockets); AmmoDisplayBroker.CallUpdateMagazinesOnStore(weaponIndex, currentRockets); }