diff --git a/client/src/atc/atc.ts b/client/src/atc/atc.ts index e85c1ee2..1597ca7e 100644 --- a/client/src/atc/atc.ts +++ b/client/src/atc/atc.ts @@ -1,3 +1,5 @@ +import { getMissionData } from ".."; +import { getConnected } from "../server/server"; import { ATCBoard } from "./atcboard"; import { ATCBoardGround } from "./board/ground"; import { ATCBoardTower } from "./board/tower"; @@ -48,6 +50,10 @@ class ATCDataHandler { this.#updateInterval = window.setInterval( () => { + if ( !getConnected() ) { + return; + } + const aBoardIsVisible = this.#atc.getBoards().some( board => board.boardIsVisible() ); if ( aBoardIsVisible ) { @@ -135,7 +141,7 @@ export class ATC { getMissionDateTime() : Date { - return new Date( this.getMissionStartDateTime().getTime() + this.getMissionElapsedSeconds() ); + return new Date( getMissionData().getNowDate() ); } diff --git a/client/src/atc/atcboard.ts b/client/src/atc/atcboard.ts index 79586def..959874ab 100644 --- a/client/src/atc/atcboard.ts +++ b/client/src/atc/atcboard.ts @@ -2,9 +2,10 @@ import { Dropdown } from "../controls/dropdown"; import { zeroAppend } from "../other/utils"; import { ATC } from "./atc"; import { Unit } from "../units/unit"; -import { getUnitsManager } from ".."; +import { getMissionData, getUnitsManager } from ".."; import Sortable from "sortablejs"; import { FlightInterface } from "./atc"; +import { getConnected } from "../server/server"; export interface StripBoardStripInterface { "id": string, @@ -84,6 +85,10 @@ export abstract class ATCBoard { window.setInterval( () => { + + if ( !getConnected() ) { + return; + } this.updateClock(); }, 1000 ); @@ -410,6 +415,10 @@ export abstract class ATCBoard { this.#updateInterval = window.setInterval( () => { + if ( !getConnected() ) { + return; + } + this.update(); }, this.#updateIntervalDelay ); @@ -446,8 +455,12 @@ export abstract class ATCBoard { updateClock() { - const now = this.#atc.getMissionDateTime(); - this.#clockElement.innerText = now.toLocaleTimeString(); + const missionTime = this.#atc.getMissionDateTime().getTime(); + const timeDiff = new Date().getTime() - getMissionData().getUpdateTime(); + + const nowDate = new Date( missionTime + timeDiff ); + + this.#clockElement.innerText = nowDate.toLocaleTimeString(); } diff --git a/client/src/missionhandler/missionhandler.ts b/client/src/missionhandler/missionhandler.ts index 66233f0a..22051aa3 100644 --- a/client/src/missionhandler/missionhandler.ts +++ b/client/src/missionhandler/missionhandler.ts @@ -16,6 +16,14 @@ export class MissionHandler #airbasesMarkers: {[name: string]: Airbase}; #theatre : string = ""; + // Time + #date : any; + #elapsedTime : any; + #startTime : any; + #time : any; + + #updateTime : any; + constructor() { this.#bullseyes = undefined; @@ -50,7 +58,30 @@ export class MissionHandler getInfoPopup().setText("Map set to " + this.#theatre); } + + if ( "date" in data.mission ) { + this.#date = data.mission.date; + } + + if ( "elapsedTime" in data.mission ) { + this.#elapsedTime = data.mission.elapsedTime; + } + + if ( "startTime" in data.mission ) { + this.#startTime = data.mission.startTime; + } + + if ( "time" in data.mission ) { + this.#time = data.mission.time; + } + } + + + if ( "time" in data ) { + this.#updateTime = data.time; + } + } getBullseyes() @@ -90,6 +121,38 @@ export class MissionHandler } } + + getDate() { + return this.#date; + } + + + getNowDate() { + const date = this.getDate(); + const time = this.getTime(); + + let year = date.Year; + let month = date.Month - 1; + + if ( month < 0 ) { + month = 11; + year--; + } + + return new Date( year, month, date.Day, time.h, time.m, time.s ); + } + + + getTime() { + return this.#time; + } + + + getUpdateTime() { + return this.#updateTime; + } + + #onAirbaseClick(e: any) { getMap().showAirbaseContextMenu(e, e.sourceTarget); diff --git a/client/src/units/aircraftdatabase.ts b/client/src/units/aircraftdatabase.ts index b738b4b6..f2448468 100644 --- a/client/src/units/aircraftdatabase.ts +++ b/client/src/units/aircraftdatabase.ts @@ -322,7 +322,7 @@ export class AircraftDatabase extends UnitDatabase { }, "H-6J": { "name": "H-6J", - "label": "H-6J Badger, + "label": "H-6J Badger", "era": ["Mid Cold War, Late Cold War", "Modern"], "shortLabel": "H6", "loadouts": [