IEnumerator BalanceRecovery() { disbalanceActivityOngoing = true; while (currentDisbalance > 0) { playerUI.NewDisbalanceValueReceived(currentDisbalance / MAX_DISBALANCE); if (currentDisbalance >= MAX_DISBALANCE) { playerEnergy.DropEnergyPack(); StopCoro(); } currentDisbalance -= BALANCE_RECOVERY_PERSEC * Time.deltaTime; yield return(new WaitForEndOfFrame()); } disbalanceActivityOngoing = false; }