diff --git a/src/mode/NewYear/NewYear.h b/src/mode/NewYear/NewYear.h index 3da9bce..24ec5b2 100644 --- a/src/mode/NewYear/NewYear.h +++ b/src/mode/NewYear/NewYear.h @@ -56,10 +56,10 @@ class NewYear : public Mode { } void drawCountdown(const tm &time) { - size_t days = getDayCountForYear(time.tm_year) - time.tm_yday - 1; - size_t hours = (24 - time.tm_hour - (time.tm_min > 0 || time.tm_sec > 0 ? 1 : 0)); - size_t minutes = (60 - time.tm_min - (time.tm_sec > 0 ? 1 : 0)) % 60; - size_t seconds = (60 - time.tm_sec) % 60; + int days = getDayCountForYear(time.tm_year) - time.tm_yday - 1; + int hours = (24 - time.tm_hour - (time.tm_min > 0 || time.tm_sec > 0 ? 1 : 0)); + int minutes = (60 - time.tm_min - (time.tm_sec > 0 ? 1 : 0)) % 60; + int seconds = (60 - time.tm_sec) % 60; uint8_t x = 0; @@ -75,10 +75,12 @@ class NewYear : public Mode { if (days <= 0) { display->print(&x, 1, 10, COLOR_WHITE); draw2Digit(seconds, &x); + } else { + drawSecondsBar(seconds); } } - void drawDay(size_t days, uint8_t *x) { + void drawDay(int days, uint8_t *x) { if (days > 100) { display->print(x, 1, days / 100, COLOR_WHITE); } else { @@ -96,7 +98,7 @@ class NewYear : public Mode { display->print(x, 1, days % 10, COLOR_WHITE); } - void drawHour(size_t days, size_t hours, uint8_t *x) { + void drawHour(int days, int hours, uint8_t *x) { if (days > 0 || hours >= 10) { display->print(x, 1, hours / 10, COLOR_WHITE); } else { @@ -106,12 +108,22 @@ class NewYear : public Mode { display->print(x, 1, hours % 10, COLOR_WHITE); } - void draw2Digit(size_t value, uint8_t *x) { + void draw2Digit(int value, uint8_t *x) { display->print(x, 1, value / 10, COLOR_WHITE); (*x)++; display->print(x, 1, value % 10, COLOR_WHITE); } + void drawSecondsBar(int seconds) { + for (int pos = 0; pos < 30; pos++) { + if (pos <= seconds - 30) { + display->set(pos + 1, 7, 0, 255, 0); + } else if (pos <= seconds) { + display->set(pos + 1, 7, 255, 0, 0); + } + } + } + static int getDayCountForYear(int year) { bool leapYear = year % 4 == 0 && (year % 400 == 0 || year % 100 != 0); if (leapYear) {