MISC: Add threshold for warning about system clock (#1463)

This commit is contained in:
catloversg 2024-07-07 12:24:51 +07:00 committed by GitHub
parent f18d28fc6e
commit 055b4bd7bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -46,8 +46,13 @@ import { SnackbarEvents } from "./ui/React/Snackbar";
import { SaveData } from "./types";
import { Go } from "./Go/Go";
function showWarningAboutSystemClock() {
AlertEvents.emit("Warning: The system clock moved backward.");
// Only show warning if the time diff is greater than this value.
const thresholdOfTimeDiffForShowingWarningAboutSystemClock = CONSTANTS.MillisecondsPerFiveMinutes;
function showWarningAboutSystemClock(timeDiff: number) {
AlertEvents.emit(
`Warning: The system clock moved backward: ${convertTimeMsToTimeElapsedString(Math.abs(timeDiff))}.`,
);
}
/** Game engine. Handles the main game loop. */
@ -253,10 +258,13 @@ const Engine: {
const lastUpdate = Player.lastUpdate;
let timeOffline = Engine._lastUpdate - lastUpdate;
if (timeOffline < 0) {
if (Math.abs(timeOffline) > thresholdOfTimeDiffForShowingWarningAboutSystemClock) {
const timeDiff = timeOffline;
setTimeout(() => {
showWarningAboutSystemClock(timeDiff);
}, 250);
}
timeOffline = 0;
setTimeout(() => {
showWarningAboutSystemClock();
}, 250);
}
const numCyclesOffline = Math.floor(timeOffline / CONSTANTS.MilliPerCycle);
@ -404,10 +412,12 @@ const Engine: {
const _thisUpdate = new Date().getTime();
let diff = _thisUpdate - Engine._lastUpdate;
if (diff < 0) {
if (Math.abs(diff) > thresholdOfTimeDiffForShowingWarningAboutSystemClock) {
showWarningAboutSystemClock(diff);
}
diff = 0;
Engine._lastUpdate = _thisUpdate;
Player.lastUpdate = _thisUpdate;
showWarningAboutSystemClock();
}
const offset = diff % CONSTANTS.MilliPerCycle;