// Update is called once per frame void Update() { if (!trainManager.IsIdleTrainWaiting()) { t = 0; progressBarProgress.enabled = false; _timerTicking = false; } else if (trackManager.IsUpgradeApplied(TrackTypeUpgrade.TrainOMatic) && trainManager.IsIdleTrainWaiting() && !_timerTicking) { t = 0; _timerTicking = true; progressBarProgress.enabled = true; } if (_timerTicking) { t += Time.deltaTime; float pct = Mathf.Clamp01(t / trackManager.AutoTrainLauncherTime()); //progressBarProgress.transform.position; progressBarProgress.transform.localScale = new Vector3(progressBarMeterFull.transform.localScale.x * pct, progressBarMeterFull.transform.localScale.y, progressBarMeterFull.transform.localScale.z); if (t >= trackManager.AutoTrainLauncherTime()) { if (trainManager.SendNewTrain()) { t = 0; progressBarProgress.enabled = false; _timerTicking = false; } } } StartTrackLight newLightState; if (!trainManager.CanTrackAcceptNewTrain() || !trainManager.IsIdleTrainWaiting()) { newLightState = StartTrackLight.Orange; } else if (trainManager.IsTrackFull()) { newLightState = StartTrackLight.Red; } else { newLightState = StartTrackLight.Green; } if (newLightState != trackLight) { trackLight = newLightState; switch (trackLight) { case StartTrackLight.Green: lightRenderer.sprite = greenLightSprite; popupLightRenderer.gameObject.SetActive(true); break; case StartTrackLight.Orange: lightRenderer.sprite = orangeLightSprite; popupLightRenderer.gameObject.SetActive(false); break; case StartTrackLight.Red: lightRenderer.sprite = redLightSprite; popupLightRenderer.gameObject.SetActive(false); break; default: lightRenderer.sprite = null; popupLightRenderer.gameObject.SetActive(false); break; } } }