FIX: NewYear realtimeOK check + days uint8_t overflow
This commit is contained in:
parent
8a7ddb006c
commit
a1ad406c35
@ -12,7 +12,7 @@ private:
|
|||||||
|
|
||||||
Firework fireworks[MAX_FIREWORKS];
|
Firework fireworks[MAX_FIREWORKS];
|
||||||
|
|
||||||
uint8_t days = 0;
|
uint16_t days = 0;
|
||||||
|
|
||||||
uint8_t level = 0;
|
uint8_t level = 0;
|
||||||
|
|
||||||
@ -37,6 +37,7 @@ protected:
|
|||||||
setMode(NO_TIME);
|
setMode(NO_TIME);
|
||||||
} else if (now.tm_mon != 1 || now.tm_mday != 1 || now.tm_hour != 0) {
|
} else if (now.tm_mon != 1 || now.tm_mday != 1 || now.tm_hour != 0) {
|
||||||
days = getDayCountForYear(now.tm_year) - now.tm_yday - 1;
|
days = getDayCountForYear(now.tm_year) - now.tm_yday - 1;
|
||||||
|
setMode(COUNTDOWN);
|
||||||
if (days == 0) {
|
if (days == 0) {
|
||||||
loopLastDay();
|
loopLastDay();
|
||||||
} else {
|
} else {
|
||||||
@ -51,7 +52,6 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loopLastDay() {
|
void loopLastDay() {
|
||||||
setMode(LAST_DAY);
|
|
||||||
int levelTmp = (int) round(32 * realtimeMilliseconds / 1000.0);;
|
int levelTmp = (int) round(32 * realtimeMilliseconds / 1000.0);;
|
||||||
if (level != levelTmp) {
|
if (level != levelTmp) {
|
||||||
level = levelTmp;
|
level = levelTmp;
|
||||||
@ -60,7 +60,6 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loopMultipleDays() {
|
void loopMultipleDays() {
|
||||||
setMode(MULTIPLE_DAYS);
|
|
||||||
if (realtimeChanged) {
|
if (realtimeChanged) {
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
@ -72,7 +71,7 @@ protected:
|
|||||||
|
|
||||||
void draw(Display &display) override {
|
void draw(Display &display) override {
|
||||||
display.clear();
|
display.clear();
|
||||||
if (realtimeOK) {
|
if (!realtimeOK) {
|
||||||
drawNoTime(display);
|
drawNoTime(display);
|
||||||
} else if (now.tm_mon == 1 && now.tm_mday == 1 && now.tm_hour == 0) {
|
} else if (now.tm_mon == 1 && now.tm_mday == 1 && now.tm_hour == 0) {
|
||||||
drawYear(display, now.tm_year + 1900);
|
drawYear(display, now.tm_year + 1900);
|
||||||
@ -86,8 +85,7 @@ private:
|
|||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
NO_TIME,
|
NO_TIME,
|
||||||
MULTIPLE_DAYS,
|
COUNTDOWN,
|
||||||
LAST_DAY,
|
|
||||||
FIREWORK,
|
FIREWORK,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -96,17 +94,12 @@ private:
|
|||||||
void setMode(State state) {
|
void setMode(State state) {
|
||||||
if (_state != state) {
|
if (_state != state) {
|
||||||
_state = state;
|
_state = state;
|
||||||
markDirty();
|
if (state == FIREWORK) {
|
||||||
timer(0, 0);
|
|
||||||
switch (state) {
|
|
||||||
case LAST_DAY:
|
|
||||||
break;
|
|
||||||
case FIREWORK:
|
|
||||||
timer(0, 500);
|
timer(0, 500);
|
||||||
break;
|
} else {
|
||||||
default:
|
timer(0, 0);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
markDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,14 +151,14 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void drawDay(Display &display, int days, uint8_t *x) {
|
static void drawDay(Display &display, int days, uint8_t *x) {
|
||||||
if (days > 100) {
|
if (days >= 100) {
|
||||||
*x += display.print(*x, 1, days / 100, WHITE);
|
*x += display.print(*x, 1, days / 100, WHITE);
|
||||||
} else {
|
} else {
|
||||||
*x += 3;
|
*x += 3;
|
||||||
}
|
}
|
||||||
(*x)++;
|
(*x)++;
|
||||||
|
|
||||||
if (days > 10) {
|
if (days >= 10) {
|
||||||
*x += display.print(*x, 1, days / 10 % 10, WHITE);
|
*x += display.print(*x, 1, days / 10 % 10, WHITE);
|
||||||
} else {
|
} else {
|
||||||
*x += 3;
|
*x += 3;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user