private IEnumerator StartDeliveryToNextPoint() { //Sum points uint timeLeft = _levelTimeToDelivery - _levelTimer; uint points = (uint)Mathf.Round(timeLeft * 0.001f * 40 + 200); LevelScore += points; _timerToDeliveryPause = true; HUD.Instance.UpdateLevelScore(LevelScore, 1000); yield return(new WaitForMilliSeconds(1000)); HUD.Instance.HudPointsPopUp.Show((int)points); bool hasNextDelivery = _level.ActivateNextDeliveryPoint(); if (hasNextDelivery) { _levelTimer = 0; _timerToDeliveryPause = false; _levelTimeToDelivery = _level.CurrentDeliveryPoint.Timer; HUD.Instance.ArrowToObjective.Target = _level.CurrentDeliveryPoint; } else { //Level end CoroutineManager.StartCoroutine(EndLevelByWonRoutine(), this); HUD.Instance.ArrowToObjective.Enabled = false; } yield return(null); }