private void AmmoUIUpdateHandler(object sender, Gun.GunCurrentInfo e) { var sizeDelta = gunUI[e.gunIndex].gunBullets.sizeDelta; sizeDelta = new Vector2(sizeDelta.x, e.currentSize); gunUI[e.gunIndex].gunBullets.sizeDelta = sizeDelta; if (e.currentAmmo == 0) { StartCoroutine(Reload(e)); } }
/// <summary> /// Reloads a gun ammo UI. /// </summary> IEnumerator Reload(Gun.GunCurrentInfo e) { var gun = gunUI[e.gunIndex]; var sizeDelta = gun.loadBar.sizeDelta; //this float represent the loading bar increment per miliseconds. //126 is the load bar width on UI. //0.1f represents the miliseconds float sizeIncrement = 126 / e.reloadTime * 0.1f; while (e.currentLoadTime < e.reloadTime) { sizeDelta = new Vector2(sizeDelta.x += sizeIncrement, sizeDelta.y); gun.loadBar.sizeDelta = sizeDelta; e.currentLoadTime += 0.1f; gun.e = e; yield return(new WaitForSeconds(0.1f)); } gun.e.currentAmmo = gun.e.maxAmmo; gun.loadBar.sizeDelta = new Vector2(0, gun.loadBar.sizeDelta.y);//Sets the width back to zero. gun.gunBullets.sizeDelta = new Vector2(gun.gunBullets.sizeDelta.x, gun.e.ammoBulletMaxSize); }