Timeout much shorter when server is paused to reduce update lag

This commit is contained in:
PeekabooSteam 2023-10-02 07:15:00 +01:00
parent 3db5202cdf
commit a82c033da0
2 changed files with 40 additions and 27 deletions

View File

@ -1,36 +1,27 @@
import { getApp } from "..";
import { Panel } from "./panel";
export class ConnectionStatusPanel extends Panel {
#previousMissionElapsedTime:number = 0;
constructor(ID: string) {
super( ID );
}
update(connected: boolean) {
if ( connected ) {
const missionElapsedTime = getApp().getMissionManager().getDateAndTime().elapsedTime;
if ( missionElapsedTime === this.#previousMissionElapsedTime ) {
this.getElement().toggleAttribute( "data-is-connected", false );
this.getElement().toggleAttribute( "data-is-paused", true );
} else {
this.getElement().toggleAttribute( "data-is-connected", true );
this.getElement().toggleAttribute( "data-is-paused", false );
}
this.#previousMissionElapsedTime = missionElapsedTime;
} else {
this.getElement().toggleAttribute( "data-is-connected", false );
}
showDisconnected() {
this.getElement().toggleAttribute( "data-is-connected", false );
this.getElement().toggleAttribute( "data-is-paused", false );
}
showConnected() {
this.getElement().toggleAttribute( "data-is-connected", true );
this.getElement().toggleAttribute( "data-is-paused", false );
}
showServerPaused() {
this.getElement().toggleAttribute( "data-is-connected", false );
this.getElement().toggleAttribute( "data-is-paused", true );
}
}

View File

@ -17,6 +17,8 @@ export class ServerManager {
#sessionHash: string | null = null;
#lastUpdateTimes: {[key: string]: number} = {}
#demoEnabled = false;
#previousMissionElapsedTime:number = 0; // Track if mission elapsed time is increasing (i.e. is the server paused)
#serverIsPaused: boolean = false;
constructor() {
this.#lastUpdateTimes[UNITS_URI] = Date.now();
@ -426,9 +428,25 @@ export class ServerManager {
var time = getApp().getUnitsManager()?.update(buffer);
return time;
}, true);
(getApp().getPanelsManager().get("connectionStatus") as ConnectionStatusPanel).update(this.getConnected());
const elapsedMissionTime = getApp().getMissionManager().getDateAndTime().elapsedTime;
this.#serverIsPaused = ( elapsedMissionTime === this.#previousMissionElapsedTime );
this.#previousMissionElapsedTime = elapsedMissionTime;
const csp = (getApp().getPanelsManager().get("connectionStatus") as ConnectionStatusPanel);
if ( this.getConnected() ) {
if ( this.getServerIsPaused() ) {
csp.showServerPaused();
} else {
csp.showConnected();
}
} else {
csp.showDisconnected();
}
}
}, 5000);
}, ( this.getServerIsPaused() ? 500 : 5000 ));
window.setInterval(() => {
if (!this.getPaused() && getApp().getMissionManager().getCommandModeOptions().commandMode != NONE) {
@ -502,4 +520,8 @@ export class ServerManager {
getPaused() {
return this.#paused;
}
getServerIsPaused() {
return this.#serverIsPaused;
}
}