From b20009b24738ef0b432851ce5aebbd1333d6fdc8 Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Wed, 24 Feb 2021 14:27:11 -0700 Subject: [PATCH] add Math.Floor calls to ignore milliseconds Change formatting for timeRemaining Add logic to prevent initial timeRemaining value from being massive negative value --- .../Timers/CountdownTimer.cs | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Timers/CountdownTimer.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Timers/CountdownTimer.cs index 381a57df..3678b092 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Timers/CountdownTimer.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Timers/CountdownTimer.cs @@ -32,7 +32,7 @@ namespace PepperDash.Essentials.Core public DateTime StartTime { get; private set; } public DateTime FinishTime { get; private set; } - CTimer SecondTimer; + private CTimer _secondTimer; /// /// Constructor @@ -49,28 +49,26 @@ namespace PepperDash.Essentials.Core var timeSpan = FinishTime - DateTime.Now; - if (timeSpan.TotalSeconds < 60) + Debug.Console(2, this, + "timeSpan.Minutes == {0}, timeSpan.Seconds == {1}, timeSpan.TotalSeconds == {2}", + timeSpan.Minutes, timeSpan.Seconds, timeSpan.TotalSeconds); + + if (Math.Floor(timeSpan.TotalSeconds) < 60 && Math.Floor(timeSpan.TotalSeconds) >= 0) //ignore milliseconds { - return Math.Round(timeSpan.TotalSeconds).ToString(); - } - else if (timeSpan.TotalSeconds < 0) - { - return "0"; - } - else - { - Debug.Console(2, this, "timeSpan.Minutes == {0}, timeSpan.Seconds == {1}", timeSpan.Minutes, timeSpan.Seconds); - return String.Format("{0:c}", timeSpan); + return String.Format("{0:00}", timeSpan.Seconds); } + + return Math.Floor(timeSpan.TotalSeconds) < 0 + ? "00" + : String.Format("{0:00}:{1:00}", timeSpan.Minutes, timeSpan.Seconds); }); - PercentFeedback = new IntFeedback(() => - { - var percent = (FinishTime - DateTime.Now).TotalSeconds - / (FinishTime - StartTime).TotalSeconds - * 100; - return (int)percent; - }); + PercentFeedback = + new IntFeedback( + () => + (int) + (Math.Floor((FinishTime - DateTime.Now).TotalSeconds)/ + Math.Floor((FinishTime - StartTime).TotalSeconds)*100)); } /// @@ -83,9 +81,9 @@ namespace PepperDash.Essentials.Core StartTime = DateTime.Now; FinishTime = StartTime + TimeSpan.FromSeconds(SecondsToCount); - if (SecondTimer != null) - SecondTimer.Stop(); - SecondTimer = new CTimer(SecondElapsedTimerCallback, null, 0, 1000); + if (_secondTimer != null) + _secondTimer.Stop(); + _secondTimer = new CTimer(SecondElapsedTimerCallback, null, 0, 1000); _isRunning = true; IsRunningFeedback.FireUpdate(); @@ -129,19 +127,22 @@ namespace PepperDash.Essentials.Core void StopHelper() { - if (SecondTimer != null) - SecondTimer.Stop(); + if (_secondTimer != null) + _secondTimer.Stop(); _isRunning = false; IsRunningFeedback.FireUpdate(); } void SecondElapsedTimerCallback(object o) { + if (DateTime.Now >= FinishTime) + { + Finish(); + return; + } + PercentFeedback.FireUpdate(); TimeRemainingFeedback.FireUpdate(); - - if (DateTime.Now >= FinishTime) - Finish(); } } } \ No newline at end of file