From 218a8dc3f07a347e0ab49d4f55cc74e6cc0d9c30 Mon Sep 17 00:00:00 2001 From: dpassoni Date: Mon, 20 Mar 2023 17:44:14 +0100 Subject: [PATCH 1/2] Added demo mission data --- client/app.js | 2 +- client/demo.js | 5 +++++ client/src/index.ts | 2 +- client/src/units/unit.ts | 18 +++++++++++++++++- client/views/navbar.ejs | 10 +++++----- 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/client/app.js b/client/app.js index c94b8cb2..228c1c07 100644 --- a/client/app.js +++ b/client/app.js @@ -31,5 +31,5 @@ app.get('/demo/units', (req, res) => demoDataGenerator.units(req, res)); app.get('/demo/logs', (req, res) => demoDataGenerator.logs(req, res)); app.get('/demo/bullseyes', (req, res) => demoDataGenerator.bullseyes(req, res)); app.get('/demo/airbases', (req, res) => demoDataGenerator.airbases(req, res)); - +app.get('/demo/mission', (req, res) => demoDataGenerator.mission(req, res)); diff --git a/client/demo.js b/client/demo.js index 03e08ef8..f6e70fe0 100644 --- a/client/demo.js +++ b/client/demo.js @@ -588,6 +588,11 @@ class DemoDataGenerator { }}; res.send(JSON.stringify(ret)); }; + + mission(req, res){ + var ret = {theatre: "NTTR"}; + res.send(JSON.stringify(ret)); + } generateRandomUnitsDemoData(unitsNumber) { diff --git a/client/src/index.ts b/client/src/index.ts index 130c3717..a1104026 100644 --- a/client/src/index.ts +++ b/client/src/index.ts @@ -171,7 +171,7 @@ function setupEvents() { }); document.addEventListener("toggleUnitVisibility", (ev: CustomEventInit) => { - document.body.toggleAttribute("data-hide-" + ev.detail.unitType); + document.body.toggleAttribute("data-hide-" + ev.detail.category); }); document.addEventListener( "closeDialog", (ev: CustomEventInit) => { diff --git a/client/src/units/unit.ts b/client/src/units/unit.ts index 88f10943..08cbc5ac 100644 --- a/client/src/units/unit.ts +++ b/client/src/units/unit.ts @@ -59,6 +59,7 @@ export class Unit extends Marker { #selectable: boolean; #selected: boolean = false; + #hidden: boolean = false; #preventClick: boolean = false; @@ -100,6 +101,16 @@ export class Unit extends Marker { this.#pathPolyline.addTo(getMap()); this.#targetsPolylines = []; + document.addEventListener("toggleCoalitionVisibility", (ev: CustomEventInit) => { + if (ev.detail.coalition === this.getMissionData().coalition) + this.setHidden(true); + }); + + document.addEventListener("toggleUnitVisibility", (ev: CustomEventInit) => { + if (ev.detail.category === this.getBaseData().category) + this.setHidden(true); + }); + this.setData(data); } @@ -243,8 +254,13 @@ export class Unit extends Marker { this.getTaskData().activePath = undefined; } + setHidden(hidden: boolean) + { + this.#hidden = hidden; + } + getHidden() { - return false; + return this.#hidden; } getLeader() { diff --git a/client/views/navbar.ejs b/client/views/navbar.ejs index 47a2f3c3..11b8e83c 100644 --- a/client/views/navbar.ejs +++ b/client/views/navbar.ejs @@ -28,11 +28,11 @@
- - - - - + + + + +
From 298856f318428635c055402da3bcae5268b21f64 Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Mon, 20 Mar 2023 21:36:22 +0100 Subject: [PATCH 2/2] Hidden units are no longer selectable --- client/src/units/unit.ts | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/client/src/units/unit.ts b/client/src/units/unit.ts index 08cbc5ac..27f8a77e 100644 --- a/client/src/units/unit.ts +++ b/client/src/units/unit.ts @@ -101,14 +101,13 @@ export class Unit extends Marker { this.#pathPolyline.addTo(getMap()); this.#targetsPolylines = []; + // Deselect units if they are hidden document.addEventListener("toggleCoalitionVisibility", (ev: CustomEventInit) => { - if (ev.detail.coalition === this.getMissionData().coalition) - this.setHidden(true); + setTimeout(() => {this.setSelected(this.getSelected() && !this.getHidden())}, 300); }); document.addEventListener("toggleUnitVisibility", (ev: CustomEventInit) => { - if (ev.detail.category === this.getBaseData().category) - this.setHidden(true); + setTimeout(() => {this.setSelected(this.getSelected() && !this.getHidden())}, 300); }); this.setData(data); @@ -122,7 +121,6 @@ export class Unit extends Marker { this.getBaseData().alive != data.baseData.alive || this.#forceUpdate || !getMap().hasLayer(this)) updateMarker = true; - if (data.baseData != undefined) { for (let key in this.#data.baseData) @@ -172,7 +170,7 @@ export class Unit extends Marker { } /* Dead units can't be selected */ - this.setSelected(this.getSelected() && this.getBaseData().alive) + this.setSelected(this.getSelected() && this.getBaseData().alive && !this.getHidden()) if (updateMarker) this.#updateMarker(); @@ -216,9 +214,9 @@ export class Unit extends Marker { setSelected(selected: boolean) { /* Only alive units can be selected. Some units are not selectable (weapons) */ - if ((this.getBaseData().alive || !selected) && this.#selectable && this.#selected != selected) { + if ((this.getBaseData().alive || !selected) && this.getSelectable() && this.getSelected() != selected) { this.#selected = selected; - this.getElement()?.querySelector( `[data-object|="unit"]` )?.toggleAttribute( "data-is-selected" ); + this.getElement()?.querySelector(`[data-object|="unit"]`)?.toggleAttribute("data-is-selected"); if (selected) document.dispatchEvent(new CustomEvent("unitSelection", { detail: this })); else @@ -260,7 +258,7 @@ export class Unit extends Marker { } getHidden() { - return this.#hidden; + return (this.getElement()?.querySelector(`.unit`))?.offsetParent === null; } getLeader() { @@ -474,9 +472,7 @@ export class Unit extends Marker { } export class AirUnit extends Unit { - getHidden() { - return false; - } + } export class Aircraft extends AirUnit { @@ -533,10 +529,6 @@ export class GroundUnit extends Unit {
`); } - - getHidden() { - return false; - } } export class NavyUnit extends Unit { @@ -549,10 +541,6 @@ export class NavyUnit extends Unit { `); } - - getHidden() { - return false; - } } export class Weapon extends Unit {