Merge pull request #139 from Pax1601/128-dead-units-dont-disappear

Multiple fixes
This commit is contained in:
Pax1601 2023-03-24 16:53:08 +01:00 committed by GitHub
commit 4c46db12fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 498 additions and 504 deletions

View File

@ -363,7 +363,7 @@ const DEMO_UNIT_DATA = {
name: "CVN-75",
unitName: "Olympus 1-9",
groupName: "Group 1",
alive: false,
alive: true,
category: "Aircraft",
},
flightData: {
@ -406,7 +406,7 @@ const DEMO_UNIT_DATA = {
name: "CVN-75",
unitName: "Olympus 1-10",
groupName: "Group 1",
alive: false,
alive: true,
category: "Aircraft",
},
flightData: {
@ -449,12 +449,12 @@ const DEMO_UNIT_DATA = {
name: "CVN-75",
unitName: "Olympus 1-11",
groupName: "Group 1",
alive: false,
alive: true,
category: "Missile",
},
flightData: {
latitude: 37.075,
longitude: -115.8,
longitude: -115.81,
altitude: 2000,
heading: 0.5,
speed: 300
@ -492,14 +492,14 @@ const DEMO_UNIT_DATA = {
name: "CVN-75",
unitName: "Olympus 1-12",
groupName: "Group 1",
alive: false,
alive: true,
category: "Missile",
},
flightData: {
latitude: 37.075,
longitude: -115.75,
altitude: 2000,
heading: 0.5,
heading: 0.6,
speed: 300
},
missionData: {

View File

@ -88,7 +88,7 @@
}
#ground-unit-spawn-button {
background-image: var( --spawn-ground-url );
background-image: var( --spawn-groundunit-url );
background-size: 48px;
}

View File

@ -583,12 +583,12 @@ body[data-hide-aircraft] #unit-visibility-control-aircraft {
background-image: var(--visibility-control-aircraft-hidden-url);
}
#unit-visibility-control-ground {
background-image: var(--visibility-control-ground-visible-url);
#unit-visibility-control-groundunit {
background-image: var(--visibility-control-groundunit-visible-url);
}
body[data-hide-ground] #unit-visibility-control-ground {
background-image: var(--visibility-control-ground-hidden-url);
body[data-hide-groundunit] #unit-visibility-control-groundunit {
background-image: var(--visibility-control-groundunit-hidden-url);
}
#unit-visibility-control-sam {
@ -607,12 +607,12 @@ body[data-hide-threat] #unit-visibility-control-threat {
background-image: var(--visibility-control-threat-hidden-url);
}
#unit-visibility-control-naval {
background-image: var(--visibility-control-naval-visible-url);
#unit-visibility-control-navyunit {
background-image: var(--visibility-control-navyunit-visible-url);
}
body[data-hide-naval] #unit-visibility-control-naval {
background-image: var(--visibility-control-naval-hidden-url);
body[data-hide-navyunit] #unit-visibility-control-navyunit {
background-image: var(--visibility-control-navyunit-hidden-url);
}

View File

@ -8,8 +8,8 @@
/* Air units' marker settings */
--unit-air-label-x: calc( var( --unit-centre-x ) - ( var( --unit-air-width ) / 2 ) + ( var( --unit-stroke-width ) / 2 ) );
--unit-air-label-y: calc( var( --unit-centre-y ) - ( var( --unit-air-height ) / 2 ) + ( var( --unit-stroke-width ) / 2 ) );
--unit-aircraft-label-x: calc( var( --unit-centre-x ) - ( var( --unit-aircraft-width ) / 2 ) + ( var( --unit-stroke-width ) / 2 ) );
--unit-aircraft-label-y: calc( var( --unit-centre-y ) - ( var( --unit-aircraft-height ) / 2 ) + ( var( --unit-stroke-width ) / 2 ) );
}
@ -21,18 +21,6 @@
position:relative;
}
[data-hide-aircraft] #map-container [data-object|="unit-air"],
[data-hide-ground] #map-container [data-object|="unit-ground-mi"],
[data-hide-sam] #map-container [data-object|="unit-ground-sam"],
[data-hide-threat] #map-container .unit-threat,
[data-hide-naval] #map-container [data-object|="unit-naval"],
[data-hide-blue] #map-container [data-object|="unit"][data-coalition="blue"],
[data-hide-red] #map-container [data-object|="unit"][data-coalition="red"],
[data-hide-neutral] #map-container [data-object|="unit"][data-coalition="neutral"] {
display:none;
}
[data-object|="unit"] .unit-selected-spotlight {
background-color: var( --unit-spotlight-fill );
border-radius: 50%;
@ -50,9 +38,9 @@
justify-self: center;
transform-origin: bottom;
translate:0 -50%;
padding-bottom: calc( ( var( --unit-air-width ) / 2 ) + var( --unit-stroke-width ) );
padding-bottom: calc( ( var( --unit-aircraft-width ) / 2 ) + var( --unit-stroke-width ) );
position:absolute;
width: var( --unit-air-vvi-width );
width: var( --unit-aircraft-vvi-width );
z-index: 3;
}
@ -82,9 +70,9 @@
[data-object|="unit"] .unit-marker-border {
border-radius: var( --border-radius-sm );
display:none;
height: calc( var( --unit-air-height ) + ( var( --unit-label-border-width ) * 2 ) );
height: calc( var( --unit-aircraft-height ) + ( var( --unit-label-border-width ) * 2 ) );
position:absolute;
width: calc( var( --unit-air-width ) + ( var( --unit-label-border-width ) * 2 ) );
width: calc( var( --unit-aircraft-width ) + ( var( --unit-label-border-width ) * 2 ) );
z-index:2;
}
@ -106,44 +94,44 @@
/* Air */
[data-object|="unit-air"] .unit-marker {
background-image: var( --unit-air-marker-neutral-url );
height: var( --unit-air-marker-height );
width: var( --unit-air-marker-width );
[data-object|="unit-aircraft"] .unit-marker {
background-image: var( --unit-aircraft-marker-neutral-url );
height: var( --unit-aircraft-marker-height );
width: var( --unit-aircraft-marker-width );
}
[data-object|="unit-air"]:hover .unit-marker {
background-image: var( --unit-air-marker-neutral-hover-url );
[data-object|="unit-aircraft"]:hover .unit-marker {
background-image: var( --unit-aircraft-marker-neutral-hover-url );
}
[data-object|="unit-air"][data-is-selected] .unit-marker {
background-image: var( --unit-air-marker-neutral-selected-url );
[data-object|="unit-aircraft"][data-is-selected] .unit-marker {
background-image: var( --unit-aircraft-marker-neutral-selected-url );
}
[data-object|="unit-air"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-air-marker-blue-url );
[data-object|="unit-aircraft"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-aircraft-marker-blue-url );
}
[data-object|="unit-air"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-air-marker-blue-hover-url );
[data-object|="unit-aircraft"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-aircraft-marker-blue-hover-url );
}
[data-object|="unit-air"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-air-marker-blue-selected-url );
[data-object|="unit-aircraft"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-aircraft-marker-blue-selected-url );
}
[data-object|="unit-air"][data-coalition="red"] .unit-marker {
background-image: var( --unit-air-marker-red-url );
[data-object|="unit-aircraft"][data-coalition="red"] .unit-marker {
background-image: var( --unit-aircraft-marker-red-url );
}
[data-object|="unit-air"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-air-marker-red-hover-url );
[data-object|="unit-aircraft"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-aircraft-marker-red-hover-url );
}
[data-object|="unit-air"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-air-marker-red-selected-url );
[data-object|="unit-aircraft"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-aircraft-marker-red-selected-url );
}
@ -151,140 +139,140 @@
/* Ground vehicles (not SAMs) */
[data-object|="unit-ground-mi"] .unit-marker {
background-image: var( --unit-ground-mi-marker-neutral-url );
height: var( --unit-ground-mi-marker-height );
width: var( --unit-ground-mi-marker-width );
[data-object|="unit-groundunit"] .unit-marker {
background-image: var( --unit-groundunit-marker-neutral-url );
height: var( --unit-groundunit-marker-height );
width: var( --unit-groundunit-marker-width );
}
[data-object|="unit-ground-mi"]:hover .unit-marker {
background-image: var( --unit-ground-mi-marker-neutral-hover-url );
[data-object|="unit-groundunit"]:hover .unit-marker {
background-image: var( --unit-groundunit-marker-neutral-hover-url );
}
[data-object|="unit-ground-mi"][data-is-selected] .unit-marker {
background-image: var( --unit-ground-mi-marker-neutral-selected-url );
[data-object|="unit-groundunit"][data-is-selected] .unit-marker {
background-image: var( --unit-groundunit-marker-neutral-selected-url );
}
[data-object|="unit-ground-mi"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-ground-mi-marker-blue-url );
[data-object|="unit-groundunit"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-groundunit-marker-blue-url );
}
[data-object|="unit-ground-mi"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-ground-mi-marker-blue-hover-url );
[data-object|="unit-groundunit"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-groundunit-marker-blue-hover-url );
}
[data-object|="unit-ground-mi"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-ground-mi-marker-blue-selected-url );
[data-object|="unit-groundunit"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-groundunit-marker-blue-selected-url );
}
[data-object|="unit-ground-mi"][data-coalition="red"] .unit-marker {
background-image: var( --unit-ground-mi-marker-red-url );
[data-object|="unit-groundunit"][data-coalition="red"] .unit-marker {
background-image: var( --unit-groundunit-marker-red-url );
}
[data-object|="unit-ground-mi"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-ground-mi-marker-red-hover-url );
[data-object|="unit-groundunit"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-groundunit-marker-red-hover-url );
}
[data-object|="unit-ground-mi"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-ground-mi-marker-red-selected-url );
[data-object|="unit-groundunit"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-groundunit-marker-red-selected-url );
}
/* SAMs */
[data-object|="unit-ground-sam"] .unit-selected-spotlight {
[data-object|="unit-sam"] .unit-selected-spotlight {
translate:0 2px;
}
[data-object|="unit-ground-sam"] .unit-marker {
background-image: var( --unit-ground-sam-marker-neutral-url );
[data-object|="unit-sam"] .unit-marker {
background-image: var( --unit-sam-marker-neutral-url );
height: var( --unit-sam-marker-height );
width: var( --unit-sam-marker-width );
}
[data-object|="unit-ground-sam"]:hover .unit-marker {
background-image: var( --unit-ground-sam-marker-neutral-hover-url );
[data-object|="unit-sam"]:hover .unit-marker {
background-image: var( --unit-sam-marker-neutral-hover-url );
}
[data-object|="unit-ground-sam"][data-is-selected] .unit-marker {
background-image: var( --unit-ground-sam-marker-neutral-selected-url );
[data-object|="unit-sam"][data-is-selected] .unit-marker {
background-image: var( --unit-sam-marker-neutral-selected-url );
}
[data-object|="unit-ground-sam"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-ground-sam-marker-blue-url );
[data-object|="unit-sam"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-sam-marker-blue-url );
}
[data-object|="unit-ground-sam"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-ground-sam-marker-blue-hover-url );
[data-object|="unit-sam"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-sam-marker-blue-hover-url );
}
[data-object|="unit-ground-sam"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-ground-sam-marker-blue-selected-url );
[data-object|="unit-sam"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-sam-marker-blue-selected-url );
}
[data-object|="unit-ground-sam"][data-coalition="red"] .unit-marker {
background-image: var( --unit-ground-sam-marker-red-url );
[data-object|="unit-sam"][data-coalition="red"] .unit-marker {
background-image: var( --unit-sam-marker-red-url );
}
[data-object|="unit-ground-sam"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-ground-sam-marker-red-hover-url );
[data-object|="unit-sam"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-sam-marker-red-hover-url );
}
[data-object|="unit-ground-sam"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-ground-sam-marker-red-selected-url );
[data-object|="unit-sam"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-sam-marker-red-selected-url );
}
/* Naval */
/* navyunit */
[data-object|="unit-naval"] .unit-selected-spotlight {
[data-object|="unit-navyunit"] .unit-selected-spotlight {
translate:0 -2px;
}
[data-object|="unit-naval"] .unit-marker {
background-image: var( --unit-naval-marker-neutral-url );
height: var( --unit-naval-marker-height );
width: var( --unit-naval-marker-width );
[data-object|="unit-navyunit"] .unit-marker {
background-image: var( --unit-navyunit-marker-neutral-url );
height: var( --unit-navyunit-marker-height );
width: var( --unit-navyunit-marker-width );
}
[data-object|="unit-naval"]:hover .unit-marker {
background-image: var( --unit-naval-marker-neutral-hover-url );
[data-object|="unit-navyunit"]:hover .unit-marker {
background-image: var( --unit-navyunit-marker-neutral-hover-url );
}
[data-object|="unit-naval"][data-is-selected] .unit-marker {
background-image: var( --unit-naval-marker-neutral-selected-url );
[data-object|="unit-navyunit"][data-is-selected] .unit-marker {
background-image: var( --unit-navyunit-marker-neutral-selected-url );
}
[data-object|="unit-naval"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-naval-marker-blue-url );
[data-object|="unit-navyunit"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-navyunit-marker-blue-url );
}
[data-object|="unit-naval"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-naval-marker-blue-hover-url );
[data-object|="unit-navyunit"][data-coalition="blue"]:hover .unit-marker {
background-image: var( --unit-navyunit-marker-blue-hover-url );
}
[data-object|="unit-naval"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-naval-marker-blue-selected-url );
[data-object|="unit-navyunit"][data-coalition="blue"][data-is-selected] .unit-marker {
background-image: var( --unit-navyunit-marker-blue-selected-url );
}
[data-object|="unit-naval"][data-coalition="red"] .unit-marker {
background-image: var( --unit-naval-marker-red-url );
[data-object|="unit-navyunit"][data-coalition="red"] .unit-marker {
background-image: var( --unit-navyunit-marker-red-url );
}
[data-object|="unit-naval"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-naval-marker-red-hover-url );
[data-object|="unit-navyunit"][data-coalition="red"]:hover .unit-marker {
background-image: var( --unit-navyunit-marker-red-hover-url );
}
[data-object|="unit-naval"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-naval-marker-red-selected-url );
[data-object|="unit-navyunit"][data-coalition="red"][data-is-selected] .unit-marker {
background-image: var( --unit-navyunit-marker-red-selected-url );
}
@ -314,20 +302,20 @@
cursor: default;
}
[data-object|="unit-weapon-missile"] .unit-marker {
background-image: var( --unit-weapons-missile-marker-neutral-url );
height: var( --unit-weapons-missile-marker-height );
width: var( --unit-weapons-missile-marker-width );
[data-object|="unit-missile"] .unit-marker {
background-image: var( --unit-missile-marker-neutral-url );
height: var( --unit-missile-marker-height );
width: var( --unit-missile-marker-width );
}
[data-object|="unit-weapon-missile"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-weapons-missile-marker-blue-url );
[data-object|="unit-missile"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-missile-marker-blue-url );
}
[data-object|="unit-weapon-missile"][data-coalition="red"] .unit-marker {
background-image: var( --unit-weapons-missile-marker-red-url );
[data-object|="unit-missile"][data-coalition="red"] .unit-marker {
background-image: var( --unit-missile-marker-red-url );
}
@ -344,28 +332,28 @@
z-index:10;
}
[data-object|="unit-ground-mi"] .unit-short-label {
[data-object|="unit-groundunit"] .unit-short-label {
translate: -1px 0;
}
[data-object|="unit-ground-sam"] .unit-short-label {
[data-object|="unit-sam"] .unit-short-label {
translate:0 50%;
}
[data-object|="unit-naval"] .unit-short-label {
[data-object|="unit-navyunit"] .unit-short-label {
translate:0 -50%;
}
[data-object|="unit"] .unit-fuel {
background:white;
border: var( --unit-air-fuel-border-width ) solid var( --secondary-dark-steel );
border: var( --unit-aircraft-fuel-border-width ) solid var( --secondary-dark-steel );
border-radius: var( --border-radius-sm );
display:none;
height: var( --unit-air-fuel-height );
height: var( --unit-aircraft-fuel-height );
position: absolute;
translate:var( --unit-air-fuel-x ) var( --unit-air-fuel-y );
width: var( --unit-air-fuel-width );
translate:var( --unit-aircraft-fuel-x ) var( --unit-aircraft-fuel-y );
width: var( --unit-aircraft-fuel-width );
z-index: 5;
}
@ -377,19 +365,19 @@
[data-object|="unit"] .unit-ammo {
column-gap: var( --unit-air-ammo-spacing );
column-gap: var( --unit-aircraft-ammo-spacing );
display:none;
height:fit-content;
position:absolute;
translate:var( --unit-air-ammo-x ) var( --unit-air-ammo-y );
translate:var( --unit-aircraft-ammo-x ) var( --unit-aircraft-ammo-y );
width:fit-content;
}
[data-object|="unit"] .unit-ammo > * {
background-color: white;
border: var( --unit-air-ammo-border-width ) solid var( --secondary-dark-steel );
border: var( --unit-aircraft-ammo-border-width ) solid var( --secondary-dark-steel );
border-radius: 50%;
padding: var( --unit-air-ammo-radius );
padding: var( --unit-aircraft-ammo-radius );
}
@ -509,82 +497,82 @@
[data-object|="unit"] .unit-status {
background-repeat: no-repeat;
position:absolute;
height:var( --unit-air-status-rtb-height );
width:var( --unit-air-status-rtb-width );
height:var( --unit-aircraft-status-rtb-height );
width:var( --unit-aircraft-status-rtb-width );
z-index: 10;
}
[data-object|="unit"][data-status="rtb"] .unit-status {
background-image: var( --unit-air-status-rtb-neutral-url );
height:var( --unit-air-status-rtb-height );
width:var( --unit-air-status-rtb-width );
background-image: var( --unit-aircraft-status-rtb-neutral-url );
height:var( --unit-aircraft-status-rtb-height );
width:var( --unit-aircraft-status-rtb-width );
}
[data-object|="unit"][data-status="rtb"][data-coalition="blue"] .unit-status {
background-image: var( --unit-air-status-rtb-blue-url );
background-image: var( --unit-aircraft-status-rtb-blue-url );
}
[data-object|="unit"][data-status="rtb"][data-coalition="red"] .unit-status {
background-image: var( --unit-air-status-rtb-red-url );
background-image: var( --unit-aircraft-status-rtb-red-url );
}
[data-object|="unit"][data-status="hold"] .unit-status {
background-image: var( --unit-air-status-hold-neutral-url );
height:var( --unit-air-status-hold-height );
width:var( --unit-air-status-hold-width );
background-image: var( --unit-aircraft-status-hold-neutral-url );
height:var( --unit-aircraft-status-hold-height );
width:var( --unit-aircraft-status-hold-width );
}
[data-object|="unit"][data-status="hold"][data-coalition="blue"] .unit-status {
background-image: var( --unit-air-status-hold-blue-url );
background-image: var( --unit-aircraft-status-hold-blue-url );
}
[data-object|="unit"][data-status="hold"][data-coalition="red"] .unit-status {
background-image: var( --unit-air-status-hold-red-url );
background-image: var( --unit-aircraft-status-hold-red-url );
}
/*** DEAD ***/
[data-object|="unit-air"][ data-is-dead ] {
[data-object|="unit-aircraft"][ data-is-dead ] {
cursor: default;
}
[data-object|="unit-air"][ data-is-dead ] .unit-marker {
background-image: var( --unit-air-marker-neutral-dead-url );
[data-object|="unit-aircraft"][ data-is-dead ] .unit-marker {
background-image: var( --unit-aircraft-marker-neutral-dead-url );
background-position: 50% 50%;
background-size: auto 32px;
}
[data-object|="unit-air"][ data-is-dead ][data-coalition="blue"] .unit-marker {
background-image: var( --unit-air-marker-blue-dead-url );
[data-object|="unit-aircraft"][ data-is-dead ][data-coalition="blue"] .unit-marker {
background-image: var( --unit-aircraft-marker-blue-dead-url );
}
[data-object|="unit-air"][ data-is-dead ][data-coalition="red"] .unit-marker {
background-image: var( --unit-air-marker-red-dead-url );
[data-object|="unit-aircraft"][ data-is-dead ][data-coalition="red"] .unit-marker {
background-image: var( --unit-aircraft-marker-red-dead-url );
}
[data-object|="unit-air"][ data-is-dead ] .unit-selected-spotlight,
[data-object|="unit-air"][ data-is-dead ] .unit-short-label,
[data-object|="unit-air"][ data-is-dead ] .unit-vvi,
[data-object|="unit-air"][ data-is-dead ] .unit-hotgroup,
[data-object|="unit-air"][ data-is-dead ] .unit-hotgroup-id,
[data-object|="unit-air"][ data-is-dead ] .unit-status,
[data-object|="unit-air"][ data-is-dead ] .unit-fuel,
[data-object|="unit-air"][ data-is-dead ] .unit-ammo,
[data-object|="unit-air"][ data-is-dead ]:hover .unit-fuel,
[data-object|="unit-air"][ data-is-dead ]:hover .unit-ammo {
[data-object|="unit-aircraft"][ data-is-dead ] .unit-selected-spotlight,
[data-object|="unit-aircraft"][ data-is-dead ] .unit-short-label,
[data-object|="unit-aircraft"][ data-is-dead ] .unit-vvi,
[data-object|="unit-aircraft"][ data-is-dead ] .unit-hotgroup,
[data-object|="unit-aircraft"][ data-is-dead ] .unit-hotgroup-id,
[data-object|="unit-aircraft"][ data-is-dead ] .unit-status,
[data-object|="unit-aircraft"][ data-is-dead ] .unit-fuel,
[data-object|="unit-aircraft"][ data-is-dead ] .unit-ammo,
[data-object|="unit-aircraft"][ data-is-dead ]:hover .unit-fuel,
[data-object|="unit-aircraft"][ data-is-dead ]:hover .unit-ammo {
display:none !important;
}
[data-object|="unit-air"][ data-is-dead ] .unit-summary > * {
[data-object|="unit-aircraft"][ data-is-dead ] .unit-summary > * {
display:none;
}
[data-object|="unit-air"][ data-is-dead ] .unit-summary .unit-callsign {
[data-object|="unit-aircraft"][ data-is-dead ] .unit-summary .unit-callsign {
display:block;
}

View File

Before

Width:  |  Height:  |  Size: 379 B

After

Width:  |  Height:  |  Size: 379 B

View File

Before

Width:  |  Height:  |  Size: 379 B

After

Width:  |  Height:  |  Size: 379 B

View File

Before

Width:  |  Height:  |  Size: 379 B

After

Width:  |  Height:  |  Size: 379 B

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -55,14 +55,14 @@
--visibility-control-aircraft-visible-url: url( "/themes/olympus/images/visibility_aircraft_visible.svg" );
--visibility-control-aircraft-hidden-url: url( "/themes/olympus/images/visibility_aircraft_hidden.svg" );
--visibility-control-ground-visible-url: url( "/themes/olympus/images/visibility_ground_visible.svg" );
--visibility-control-ground-hidden-url: url( "/themes/olympus/images/visibility_ground_hidden.svg" );
--visibility-control-groundunit-visible-url: url( "/themes/olympus/images/visibility_ground_visible.svg" );
--visibility-control-groundunit-hidden-url: url( "/themes/olympus/images/visibility_ground_hidden.svg" );
--visibility-control-sam-visible-url: url( "/themes/olympus/images/visibility_sam_visible.svg" );
--visibility-control-sam-hidden-url: url( "/themes/olympus/images/visibility_sam_hidden.svg" );
--visibility-control-naval-visible-url: url( "/themes/olympus/images/visibility_naval_visible.svg" );
--visibility-control-naval-hidden-url: url( "/themes/olympus/images/visibility_naval_hidden.svg" );
--visibility-control-navyunit-visible-url: url( "/themes/olympus/images/visibility_navyunit_visible.svg" );
--visibility-control-navyunit-hidden-url: url( "/themes/olympus/images/visibility_navyunit_hidden.svg" );
--visibility-control-threat-visible-url: url( "/themes/olympus/images/visibility_threat_visible.svg" );
--visibility-control-threat-hidden-url: url( "/themes/olympus/images/visibility_threat_hidden.svg" );
@ -85,108 +85,108 @@
/*** Air units ***/
--unit-air-ammo-gap: calc( 2px + var( --unit-stroke-width ) );
--unit-air-ammo-border-radius: 50%;
--unit-air-ammo-border-width: 2px;
--unit-air-ammo-radius: 2px;
--unit-air-ammo-spacing: 2px;
--unit-air-ammo-x:0px;
--unit-air-ammo-y:30px;
--unit-air-fuel-border-width: 2px;
--unit-air-fuel-height: 6px;
--unit-air-fuel-width: 36px;
--unit-air-fuel-x:0px;
--unit-air-fuel-y:22px;
--unit-air-height: 28px;
--unit-air-vvi-width: 4px;
--unit-air-width: var( --unit-air-height );
--unit-aircraft-ammo-gap: calc( 2px + var( --unit-stroke-width ) );
--unit-aircraft-ammo-border-radius: 50%;
--unit-aircraft-ammo-border-width: 2px;
--unit-aircraft-ammo-radius: 2px;
--unit-aircraft-ammo-spacing: 2px;
--unit-aircraft-ammo-x:0px;
--unit-aircraft-ammo-y:30px;
--unit-aircraft-fuel-border-width: 2px;
--unit-aircraft-fuel-height: 6px;
--unit-aircraft-fuel-width: 36px;
--unit-aircraft-fuel-x:0px;
--unit-aircraft-fuel-y:22px;
--unit-aircraft-height: 28px;
--unit-aircraft-vvi-width: 4px;
--unit-aircraft-width: var( --unit-aircraft-height );
--unit-air-marker-height: 50px;
--unit-air-marker-width: 50px;
--unit-aircraft-marker-height: 50px;
--unit-aircraft-marker-width: 50px;
--unit-air-marker-blue-url: url( "/themes/olympus/images/icon_aircraft_blue.svg" );
--unit-air-marker-blue-hover-url: url( "/themes/olympus/images/icon_aircraft_blue_hover.svg" );
--unit-air-marker-blue-selected-url: url( "/themes/olympus/images/icon_aircraft_blue_selected.svg" );
--unit-air-marker-blue-dead-url: url( "/themes/olympus/images/icon_death_blue.svg" );
--unit-aircraft-marker-blue-url: url( "/themes/olympus/images/icon_aircraft_blue.svg" );
--unit-aircraft-marker-blue-hover-url: url( "/themes/olympus/images/icon_aircraft_blue_hover.svg" );
--unit-aircraft-marker-blue-selected-url: url( "/themes/olympus/images/icon_aircraft_blue_selected.svg" );
--unit-aircraft-marker-blue-dead-url: url( "/themes/olympus/images/icon_death_blue.svg" );
--unit-air-marker-neutral-url: url( "/themes/olympus/images/icon_aircraft_neutral.svg" );
--unit-air-marker-neutral-hover-url: url( "/themes/olympus/images/icon_aircraft_neutral_hover.svg" );
--unit-air-marker-neutral-selected-url: url( "/themes/olympus/images/icon_aircraft_neutral_selected.svg" );
--unit-air-marker-neutral-dead-url: url( "/themes/olympus/images/icon_death_neutral.svg" );
--unit-aircraft-marker-neutral-url: url( "/themes/olympus/images/icon_aircraft_neutral.svg" );
--unit-aircraft-marker-neutral-hover-url: url( "/themes/olympus/images/icon_aircraft_neutral_hover.svg" );
--unit-aircraft-marker-neutral-selected-url: url( "/themes/olympus/images/icon_aircraft_neutral_selected.svg" );
--unit-aircraft-marker-neutral-dead-url: url( "/themes/olympus/images/icon_death_neutral.svg" );
--unit-air-marker-red-url: url( "/themes/olympus/images/icon_aircraft_red.svg" );
--unit-air-marker-red-hover-url: url( "/themes/olympus/images/icon_aircraft_red_hover.svg" );
--unit-air-marker-red-selected-url: url( "/themes/olympus/images/icon_aircraft_red_selected.svg" );
--unit-air-marker-red-dead-url: url( "/themes/olympus/images/icon_death_red.svg" );
--unit-aircraft-marker-red-url: url( "/themes/olympus/images/icon_aircraft_red.svg" );
--unit-aircraft-marker-red-hover-url: url( "/themes/olympus/images/icon_aircraft_red_hover.svg" );
--unit-aircraft-marker-red-selected-url: url( "/themes/olympus/images/icon_aircraft_red_selected.svg" );
--unit-aircraft-marker-red-dead-url: url( "/themes/olympus/images/icon_death_red.svg" );
/*** Air units' statuses ***/
--unit-air-status-rtb-height: 50px;
--unit-air-status-rtb-width: 50px;
--unit-aircraft-status-rtb-height: 50px;
--unit-aircraft-status-rtb-width: 50px;
--unit-air-status-rtb-blue-url: url( "data:image/svg+xml,%3Csvg width='19' height='15' viewBox='0 0 19 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.8125 4.99219L5.5 8.55469V12.375C5.5 12.5859 5.66406 12.75 5.875 12.75H8.5C8.6875 12.75 8.85156 12.5859 8.85156 12.375V10.125C8.85156 9.9375 9.03906 9.75 9.22656 9.75H10.7266C10.9375 9.75 11.1016 9.9375 11.1016 10.125V12.375C11.1016 12.5859 11.2891 12.75 11.4766 12.75H14.125C14.3125 12.75 14.5 12.5859 14.5 12.375V8.53125L10.1641 4.99219C10.1172 4.94531 10.0469 4.92188 10 4.92188C9.92969 4.92188 9.85938 4.94531 9.8125 4.99219ZM16.6328 7.40625L14.6875 5.78906V2.55469C14.6875 2.39062 14.5469 2.27344 14.4062 2.27344H13.0938C12.9297 2.27344 12.8125 2.39062 12.8125 2.55469V4.24219L10.7031 2.50781C10.5156 2.36719 10.2578 2.27344 10 2.27344C9.71875 2.27344 9.46094 2.36719 9.27344 2.50781L3.34375 7.40625C3.27344 7.45312 3.22656 7.54688 3.22656 7.61719C3.22656 7.6875 3.27344 7.75781 3.29688 7.80469L3.90625 8.53125C3.95312 8.60156 4.02344 8.625 4.11719 8.625C4.1875 8.625 4.25781 8.60156 4.30469 8.55469L9.8125 4.03125C9.85938 3.98438 9.92969 3.96094 10 3.96094C10.0469 3.96094 10.1172 3.98438 10.1641 4.03125L15.6719 8.55469C15.7188 8.60156 15.7891 8.625 15.8594 8.625C15.9531 8.625 16.0234 8.60156 16.0703 8.53125L16.6797 7.80469C16.7266 7.75781 16.75 7.6875 16.75 7.61719C16.75 7.54688 16.7031 7.45312 16.6328 7.40625Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M14.5 8.53125V12.375C14.5 12.5859 14.3125 12.75 14.125 12.75H11.4766C11.2891 12.75 11.1016 12.5859 11.1016 12.375V10.125C11.1016 9.9375 10.9375 9.75 10.7266 9.75H9.22656C9.03906 9.75 8.85156 9.9375 8.85156 10.125V12.375C8.85156 12.5859 8.6875 12.75 8.5 12.75H5.875C5.66406 12.75 5.5 12.5859 5.5 12.375V8.55469L9.8125 4.99219C9.85938 4.94531 9.92969 4.92188 10 4.92188C10.0469 4.92188 10.1172 4.94531 10.1641 4.99219L14.5 8.53125ZM15.6719 8.55469C15.673 8.55582 15.6741 8.55693 15.6753 8.55803C15.7136 8.5945 15.7664 8.61608 15.8218 8.62275C15.8342 8.62425 15.8468 8.625 15.8594 8.625C15.9531 8.625 16.0234 8.60156 16.0703 8.53125L16.6797 7.80469C16.7266 7.75781 16.75 7.6875 16.75 7.61719C16.75 7.58321 16.7391 7.54375 16.7198 7.50676C16.6992 7.46721 16.6691 7.43047 16.6328 7.40625L14.6875 5.78906V2.55469C14.6875 2.39062 14.5469 2.27344 14.4062 2.27344H13.0938C12.9297 2.27344 12.8125 2.39062 12.8125 2.55469V4.24219L10.7031 2.50781C10.6607 2.47601 10.6147 2.44661 10.5659 2.42014C10.399 2.32958 10.1995 2.27344 10 2.27344C9.71875 2.27344 9.46094 2.36719 9.27344 2.50781L3.34375 7.40625C3.31845 7.42312 3.29618 7.44605 3.27804 7.47178C3.27013 7.483 3.26301 7.49475 3.25676 7.50676C3.25438 7.51134 3.25212 7.51595 3.25 7.52059C3.23497 7.55343 3.22656 7.58741 3.22656 7.61719C3.22656 7.64997 3.23675 7.68274 3.25 7.71315C3.25988 7.73582 3.27147 7.75718 3.2818 7.77623C3.28734 7.78642 3.29251 7.79596 3.29688 7.80469L3.90625 8.53125C3.9119 8.53973 3.9179 8.54753 3.92423 8.55469C3.97043 8.60688 4.03475 8.625 4.11719 8.625C4.12975 8.625 4.14232 8.62425 4.15475 8.62275C4.20858 8.61627 4.2599 8.59576 4.29785 8.56121C4.30018 8.55909 4.30246 8.55692 4.30469 8.55469L9.8125 4.03125C9.85938 3.98438 9.92969 3.96094 10 3.96094C10.0469 3.96094 10.1172 3.98438 10.1641 4.03125L15.6719 8.55469ZM3.25 10.7274C2.87411 10.5959 2.46972 10.355 2.13819 9.92451L1.40281 9.04772L1.29673 8.83555C1.29616 8.83449 1.29556 8.83338 1.29494 8.83223C1.28063 8.80565 1.24385 8.73712 1.20461 8.65078C1.13819 8.50467 0.976562 8.12434 0.976562 7.61719C0.976562 7.12558 1.1254 6.71911 1.27773 6.4362C1.41591 6.17958 1.63146 5.88605 1.95204 5.63749L7.88118 0.739506L7.92344 0.707813C8.5004 0.275088 9.23192 0.0234375 10 0.0234375C10.6011 0.0234375 11.1776 0.186404 11.6675 0.458244C12.0727 0.183444 12.5631 0.0234375 13.0938 0.0234375H14.4062C15.6666 0.0234375 16.9375 1.02855 16.9375 2.55469V4.73359L18.0288 5.64079C18.347 5.88864 18.5613 6.18072 18.6988 6.4362C18.8512 6.71911 19 7.12558 19 7.61719C19 8.10158 18.8551 8.74439 18.3724 9.28773L17.8384 9.92451C17.5137 10.3461 17.1192 10.5858 16.75 10.719V12.375C16.75 13.9179 15.4639 15 14.125 15H11.4766C10.9469 15 10.4254 14.8306 9.98865 14.5304C9.57667 14.823 9.06944 15 8.5 15H5.875C4.42142 15 3.25 13.8286 3.25 12.375V10.7274Z' fill='%23082E44'/%3E%3C/svg%3E" );
--unit-air-status-rtb-neutral-url: url( "data:image/svg+xml,%3Csvg width='19' height='15' viewBox='0 0 19 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.85938 4.99219L4.54688 8.55469V12.375C4.54688 12.5859 4.71094 12.75 4.92188 12.75H7.54688C7.73438 12.75 7.89844 12.5859 7.89844 12.375V10.125C7.89844 9.9375 8.08594 9.75 8.27344 9.75H9.77344C9.98438 9.75 10.1484 9.9375 10.1484 10.125V12.375C10.1484 12.5859 10.3359 12.75 10.5234 12.75H13.1719C13.3594 12.75 13.5469 12.5859 13.5469 12.375V8.53125L9.21094 4.99219C9.16406 4.94531 9.09375 4.92188 9.04688 4.92188C8.97656 4.92188 8.90625 4.94531 8.85938 4.99219ZM15.6797 7.40625L13.7344 5.78906V2.55469C13.7344 2.39062 13.5938 2.27344 13.4531 2.27344H12.1406C11.9766 2.27344 11.8594 2.39062 11.8594 2.55469V4.24219L9.75 2.50781C9.5625 2.36719 9.30469 2.27344 9.04688 2.27344C8.76562 2.27344 8.50781 2.36719 8.32031 2.50781L2.39062 7.40625C2.32031 7.45312 2.27344 7.54688 2.27344 7.61719C2.27344 7.6875 2.32031 7.75781 2.34375 7.80469L2.95312 8.53125C3 8.60156 3.07031 8.625 3.16406 8.625C3.23438 8.625 3.30469 8.60156 3.35156 8.55469L8.85938 4.03125C8.90625 3.98438 8.97656 3.96094 9.04688 3.96094C9.09375 3.96094 9.16406 3.98438 9.21094 4.03125L14.7188 8.55469C14.7656 8.60156 14.8359 8.625 14.9062 8.625C15 8.625 15.0703 8.60156 15.1172 8.53125L15.7266 7.80469C15.7734 7.75781 15.7969 7.6875 15.7969 7.61719C15.7969 7.54688 15.75 7.45312 15.6797 7.40625Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.5469 8.53125V12.375C13.5469 12.5859 13.3594 12.75 13.1719 12.75H10.5234C10.3359 12.75 10.1484 12.5859 10.1484 12.375V10.125C10.1484 9.9375 9.98438 9.75 9.77344 9.75H8.27344C8.08594 9.75 7.89844 9.9375 7.89844 10.125V12.375C7.89844 12.5859 7.73438 12.75 7.54688 12.75H4.92188C4.71094 12.75 4.54688 12.5859 4.54688 12.375V8.55469L8.85938 4.99219C8.90625 4.94531 8.97656 4.92188 9.04688 4.92188C9.09375 4.92188 9.16406 4.94531 9.21094 4.99219L13.5469 8.53125ZM14.7188 8.55469C14.7199 8.55582 14.721 8.55693 14.7222 8.55803C14.7604 8.5945 14.8132 8.61608 14.8687 8.62275C14.8811 8.62425 14.8937 8.625 14.9062 8.625C15 8.625 15.0703 8.60156 15.1172 8.53125L15.7266 7.80469C15.7734 7.75781 15.7969 7.6875 15.7969 7.61719C15.7969 7.58321 15.7859 7.54375 15.7667 7.50676C15.7461 7.46721 15.716 7.43047 15.6797 7.40625L13.7344 5.78906V2.55469C13.7344 2.39062 13.5938 2.27344 13.4531 2.27344H12.1406C11.9766 2.27344 11.8594 2.39062 11.8594 2.55469V4.24219L9.75 2.50781C9.7076 2.47601 9.6616 2.44661 9.61282 2.42014C9.4459 2.32958 9.24639 2.27344 9.04688 2.27344C8.76562 2.27344 8.50781 2.36719 8.32031 2.50781L2.39062 7.40625C2.36532 7.42312 2.34306 7.44605 2.32492 7.47178C2.31701 7.483 2.30989 7.49475 2.30364 7.50676C2.30125 7.51134 2.299 7.51595 2.29688 7.52059C2.28184 7.55343 2.27344 7.58741 2.27344 7.61719C2.27344 7.64997 2.28362 7.68274 2.29688 7.71315C2.30676 7.73582 2.31834 7.75718 2.32868 7.77623C2.33421 7.78642 2.33939 7.79596 2.34375 7.80469L2.95312 8.53125C2.95878 8.53973 2.96477 8.54753 2.97111 8.55469C3.0173 8.60688 3.08162 8.625 3.16406 8.625C3.17663 8.625 3.1892 8.62425 3.20163 8.62275C3.25545 8.61627 3.30677 8.59576 3.34472 8.56121C3.34705 8.55909 3.34933 8.55692 3.35156 8.55469L8.85938 4.03125C8.90625 3.98438 8.97656 3.96094 9.04688 3.96094C9.09375 3.96094 9.16406 3.98438 9.21094 4.03125L14.7188 8.55469ZM2.29688 10.7274C1.92098 10.5959 1.51659 10.355 1.18506 9.92451L0.449688 9.04772L0.343607 8.83555C0.343034 8.83449 0.342438 8.83338 0.341816 8.83223C0.327503 8.80565 0.290725 8.73712 0.25148 8.65078C0.185064 8.50467 0.0234375 8.12434 0.0234375 7.61719C0.0234375 7.12558 0.172273 6.71911 0.324604 6.4362C0.462785 6.17958 0.67834 5.88605 0.998912 5.63749L6.92805 0.739506L6.97031 0.707813C7.54728 0.275088 8.27879 0.0234375 9.04688 0.0234375C9.64799 0.0234375 10.2245 0.186404 10.7144 0.458244C11.1195 0.183444 11.61 0.0234375 12.1406 0.0234375H13.4531C14.7135 0.0234375 15.9844 1.02855 15.9844 2.55469V4.73359L17.0756 5.64079C17.3939 5.88864 17.6081 6.18072 17.7457 6.4362C17.898 6.71911 18.0469 7.12558 18.0469 7.61719C18.0469 8.10158 17.902 8.74439 17.4193 9.28773L16.8852 9.92451C16.5606 10.3461 16.1661 10.5858 15.7969 10.719V12.375C15.7969 13.9179 14.5108 15 13.1719 15H10.5234C9.99374 15 9.47232 14.8306 9.03552 14.5304C8.62355 14.823 8.11631 15 7.54688 15H4.92188C3.4683 15 2.29688 13.8286 2.29688 12.375V10.7274Z' fill='%232F2F2F'/%3E%3C/svg%3E" );
--unit-air-status-rtb-red-url: url( "data:image/svg+xml,%3Csvg width='19' height='15' viewBox='0 0 19 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.83594 4.99219L4.52344 8.55469V12.375C4.52344 12.5859 4.6875 12.75 4.89844 12.75H7.52344C7.71094 12.75 7.875 12.5859 7.875 12.375V10.125C7.875 9.9375 8.0625 9.75 8.25 9.75H9.75C9.96094 9.75 10.125 9.9375 10.125 10.125V12.375C10.125 12.5859 10.3125 12.75 10.5 12.75H13.1484C13.3359 12.75 13.5234 12.5859 13.5234 12.375V8.53125L9.1875 4.99219C9.14062 4.94531 9.07031 4.92188 9.02344 4.92188C8.95312 4.92188 8.88281 4.94531 8.83594 4.99219ZM15.6562 7.40625L13.7109 5.78906V2.55469C13.7109 2.39062 13.5703 2.27344 13.4297 2.27344H12.1172C11.9531 2.27344 11.8359 2.39062 11.8359 2.55469V4.24219L9.72656 2.50781C9.53906 2.36719 9.28125 2.27344 9.02344 2.27344C8.74219 2.27344 8.48438 2.36719 8.29688 2.50781L2.36719 7.40625C2.29688 7.45312 2.25 7.54688 2.25 7.61719C2.25 7.6875 2.29688 7.75781 2.32031 7.80469L2.92969 8.53125C2.97656 8.60156 3.04688 8.625 3.14062 8.625C3.21094 8.625 3.28125 8.60156 3.32812 8.55469L8.83594 4.03125C8.88281 3.98438 8.95312 3.96094 9.02344 3.96094C9.07031 3.96094 9.14062 3.98438 9.1875 4.03125L14.6953 8.55469C14.7422 8.60156 14.8125 8.625 14.8828 8.625C14.9766 8.625 15.0469 8.60156 15.0938 8.53125L15.7031 7.80469C15.75 7.75781 15.7734 7.6875 15.7734 7.61719C15.7734 7.54688 15.7266 7.45312 15.6562 7.40625Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.5234 8.53125V12.375C13.5234 12.5859 13.3359 12.75 13.1484 12.75H10.5C10.3125 12.75 10.125 12.5859 10.125 12.375V10.125C10.125 9.9375 9.96094 9.75 9.75 9.75H8.25C8.0625 9.75 7.875 9.9375 7.875 10.125V12.375C7.875 12.5859 7.71094 12.75 7.52344 12.75H4.89844C4.6875 12.75 4.52344 12.5859 4.52344 12.375V8.55469L8.83594 4.99219C8.88281 4.94531 8.95312 4.92188 9.02344 4.92188C9.07031 4.92188 9.14062 4.94531 9.1875 4.99219L13.5234 8.53125ZM14.6953 8.55469C14.6964 8.55582 14.6976 8.55693 14.6987 8.55803C14.737 8.5945 14.7898 8.61608 14.8452 8.62275C14.8577 8.62425 14.8702 8.625 14.8828 8.625C14.9766 8.625 15.0469 8.60156 15.0938 8.53125L15.7031 7.80469C15.75 7.75781 15.7734 7.6875 15.7734 7.61719C15.7734 7.58321 15.7625 7.54375 15.7432 7.50676C15.7227 7.46721 15.6926 7.43047 15.6562 7.40625L13.7109 5.78906V2.55469C13.7109 2.39062 13.5703 2.27344 13.4297 2.27344H12.1172C11.9531 2.27344 11.8359 2.39062 11.8359 2.55469V4.24219L9.72656 2.50781C9.68416 2.47601 9.63816 2.44661 9.58938 2.42014C9.42246 2.32958 9.22295 2.27344 9.02344 2.27344C8.74219 2.27344 8.48438 2.36719 8.29688 2.50781L2.36719 7.40625C2.34189 7.42312 2.31962 7.44605 2.30148 7.47178C2.29357 7.483 2.28645 7.49475 2.2802 7.50676C2.27782 7.51134 2.27556 7.51595 2.27344 7.52059C2.25841 7.55343 2.25 7.58741 2.25 7.61719C2.25 7.64997 2.26019 7.68274 2.27344 7.71315C2.28332 7.73582 2.29491 7.75718 2.30524 7.77623C2.31078 7.78642 2.31595 7.79596 2.32031 7.80469L2.92969 8.53125C2.93534 8.53973 2.94134 8.54753 2.94767 8.55469C2.99386 8.60688 3.05818 8.625 3.14062 8.625C3.15319 8.625 3.16576 8.62425 3.17819 8.62275C3.23202 8.61627 3.28333 8.59576 3.32129 8.56121C3.32362 8.55909 3.3259 8.55692 3.32812 8.55469L8.83594 4.03125C8.88281 3.98438 8.95312 3.96094 9.02344 3.96094C9.07031 3.96094 9.14062 3.98438 9.1875 4.03125L14.6953 8.55469ZM2.27344 10.7274C1.89755 10.5959 1.49315 10.355 1.16162 9.92451L0.426251 9.04772L0.32017 8.83555C0.319597 8.83449 0.319 8.83338 0.318378 8.83223C0.304066 8.80565 0.267288 8.73712 0.228043 8.65078C0.161627 8.50467 0 8.12434 0 7.61719C0 7.12558 0.148836 6.71911 0.301167 6.4362C0.439348 6.17958 0.654902 5.88605 0.975475 5.63749L6.90462 0.739506L6.94688 0.707813C7.52384 0.275088 8.25535 0.0234375 9.02344 0.0234375C9.62455 0.0234375 10.201 0.186404 10.691 0.458244C11.0961 0.183444 11.5866 0.0234375 12.1172 0.0234375H13.4297C14.6901 0.0234375 15.9609 1.02855 15.9609 2.55469V4.73359L17.0522 5.64079C17.3704 5.88864 17.5847 6.18072 17.7223 6.4362C17.8746 6.71911 18.0234 7.12558 18.0234 7.61719C18.0234 8.10158 17.8785 8.74439 17.3959 9.28773L16.8618 9.92451C16.5372 10.3461 16.1426 10.5858 15.7734 10.719V12.375C15.7734 13.9179 14.4874 15 13.1484 15H10.5C9.9703 15 9.44888 14.8306 9.01208 14.5304C8.60011 14.823 8.09287 15 7.52344 15H4.89844C3.44486 15 2.27344 13.8286 2.27344 12.375V10.7274Z' fill='%23262222'/%3E%3C/svg%3E" );
--unit-aircraft-status-rtb-blue-url: url( "data:image/svg+xml,%3Csvg width='19' height='15' viewBox='0 0 19 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.8125 4.99219L5.5 8.55469V12.375C5.5 12.5859 5.66406 12.75 5.875 12.75H8.5C8.6875 12.75 8.85156 12.5859 8.85156 12.375V10.125C8.85156 9.9375 9.03906 9.75 9.22656 9.75H10.7266C10.9375 9.75 11.1016 9.9375 11.1016 10.125V12.375C11.1016 12.5859 11.2891 12.75 11.4766 12.75H14.125C14.3125 12.75 14.5 12.5859 14.5 12.375V8.53125L10.1641 4.99219C10.1172 4.94531 10.0469 4.92188 10 4.92188C9.92969 4.92188 9.85938 4.94531 9.8125 4.99219ZM16.6328 7.40625L14.6875 5.78906V2.55469C14.6875 2.39062 14.5469 2.27344 14.4062 2.27344H13.0938C12.9297 2.27344 12.8125 2.39062 12.8125 2.55469V4.24219L10.7031 2.50781C10.5156 2.36719 10.2578 2.27344 10 2.27344C9.71875 2.27344 9.46094 2.36719 9.27344 2.50781L3.34375 7.40625C3.27344 7.45312 3.22656 7.54688 3.22656 7.61719C3.22656 7.6875 3.27344 7.75781 3.29688 7.80469L3.90625 8.53125C3.95312 8.60156 4.02344 8.625 4.11719 8.625C4.1875 8.625 4.25781 8.60156 4.30469 8.55469L9.8125 4.03125C9.85938 3.98438 9.92969 3.96094 10 3.96094C10.0469 3.96094 10.1172 3.98438 10.1641 4.03125L15.6719 8.55469C15.7188 8.60156 15.7891 8.625 15.8594 8.625C15.9531 8.625 16.0234 8.60156 16.0703 8.53125L16.6797 7.80469C16.7266 7.75781 16.75 7.6875 16.75 7.61719C16.75 7.54688 16.7031 7.45312 16.6328 7.40625Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M14.5 8.53125V12.375C14.5 12.5859 14.3125 12.75 14.125 12.75H11.4766C11.2891 12.75 11.1016 12.5859 11.1016 12.375V10.125C11.1016 9.9375 10.9375 9.75 10.7266 9.75H9.22656C9.03906 9.75 8.85156 9.9375 8.85156 10.125V12.375C8.85156 12.5859 8.6875 12.75 8.5 12.75H5.875C5.66406 12.75 5.5 12.5859 5.5 12.375V8.55469L9.8125 4.99219C9.85938 4.94531 9.92969 4.92188 10 4.92188C10.0469 4.92188 10.1172 4.94531 10.1641 4.99219L14.5 8.53125ZM15.6719 8.55469C15.673 8.55582 15.6741 8.55693 15.6753 8.55803C15.7136 8.5945 15.7664 8.61608 15.8218 8.62275C15.8342 8.62425 15.8468 8.625 15.8594 8.625C15.9531 8.625 16.0234 8.60156 16.0703 8.53125L16.6797 7.80469C16.7266 7.75781 16.75 7.6875 16.75 7.61719C16.75 7.58321 16.7391 7.54375 16.7198 7.50676C16.6992 7.46721 16.6691 7.43047 16.6328 7.40625L14.6875 5.78906V2.55469C14.6875 2.39062 14.5469 2.27344 14.4062 2.27344H13.0938C12.9297 2.27344 12.8125 2.39062 12.8125 2.55469V4.24219L10.7031 2.50781C10.6607 2.47601 10.6147 2.44661 10.5659 2.42014C10.399 2.32958 10.1995 2.27344 10 2.27344C9.71875 2.27344 9.46094 2.36719 9.27344 2.50781L3.34375 7.40625C3.31845 7.42312 3.29618 7.44605 3.27804 7.47178C3.27013 7.483 3.26301 7.49475 3.25676 7.50676C3.25438 7.51134 3.25212 7.51595 3.25 7.52059C3.23497 7.55343 3.22656 7.58741 3.22656 7.61719C3.22656 7.64997 3.23675 7.68274 3.25 7.71315C3.25988 7.73582 3.27147 7.75718 3.2818 7.77623C3.28734 7.78642 3.29251 7.79596 3.29688 7.80469L3.90625 8.53125C3.9119 8.53973 3.9179 8.54753 3.92423 8.55469C3.97043 8.60688 4.03475 8.625 4.11719 8.625C4.12975 8.625 4.14232 8.62425 4.15475 8.62275C4.20858 8.61627 4.2599 8.59576 4.29785 8.56121C4.30018 8.55909 4.30246 8.55692 4.30469 8.55469L9.8125 4.03125C9.85938 3.98438 9.92969 3.96094 10 3.96094C10.0469 3.96094 10.1172 3.98438 10.1641 4.03125L15.6719 8.55469ZM3.25 10.7274C2.87411 10.5959 2.46972 10.355 2.13819 9.92451L1.40281 9.04772L1.29673 8.83555C1.29616 8.83449 1.29556 8.83338 1.29494 8.83223C1.28063 8.80565 1.24385 8.73712 1.20461 8.65078C1.13819 8.50467 0.976562 8.12434 0.976562 7.61719C0.976562 7.12558 1.1254 6.71911 1.27773 6.4362C1.41591 6.17958 1.63146 5.88605 1.95204 5.63749L7.88118 0.739506L7.92344 0.707813C8.5004 0.275088 9.23192 0.0234375 10 0.0234375C10.6011 0.0234375 11.1776 0.186404 11.6675 0.458244C12.0727 0.183444 12.5631 0.0234375 13.0938 0.0234375H14.4062C15.6666 0.0234375 16.9375 1.02855 16.9375 2.55469V4.73359L18.0288 5.64079C18.347 5.88864 18.5613 6.18072 18.6988 6.4362C18.8512 6.71911 19 7.12558 19 7.61719C19 8.10158 18.8551 8.74439 18.3724 9.28773L17.8384 9.92451C17.5137 10.3461 17.1192 10.5858 16.75 10.719V12.375C16.75 13.9179 15.4639 15 14.125 15H11.4766C10.9469 15 10.4254 14.8306 9.98865 14.5304C9.57667 14.823 9.06944 15 8.5 15H5.875C4.42142 15 3.25 13.8286 3.25 12.375V10.7274Z' fill='%23082E44'/%3E%3C/svg%3E" );
--unit-aircraft-status-rtb-neutral-url: url( "data:image/svg+xml,%3Csvg width='19' height='15' viewBox='0 0 19 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.85938 4.99219L4.54688 8.55469V12.375C4.54688 12.5859 4.71094 12.75 4.92188 12.75H7.54688C7.73438 12.75 7.89844 12.5859 7.89844 12.375V10.125C7.89844 9.9375 8.08594 9.75 8.27344 9.75H9.77344C9.98438 9.75 10.1484 9.9375 10.1484 10.125V12.375C10.1484 12.5859 10.3359 12.75 10.5234 12.75H13.1719C13.3594 12.75 13.5469 12.5859 13.5469 12.375V8.53125L9.21094 4.99219C9.16406 4.94531 9.09375 4.92188 9.04688 4.92188C8.97656 4.92188 8.90625 4.94531 8.85938 4.99219ZM15.6797 7.40625L13.7344 5.78906V2.55469C13.7344 2.39062 13.5938 2.27344 13.4531 2.27344H12.1406C11.9766 2.27344 11.8594 2.39062 11.8594 2.55469V4.24219L9.75 2.50781C9.5625 2.36719 9.30469 2.27344 9.04688 2.27344C8.76562 2.27344 8.50781 2.36719 8.32031 2.50781L2.39062 7.40625C2.32031 7.45312 2.27344 7.54688 2.27344 7.61719C2.27344 7.6875 2.32031 7.75781 2.34375 7.80469L2.95312 8.53125C3 8.60156 3.07031 8.625 3.16406 8.625C3.23438 8.625 3.30469 8.60156 3.35156 8.55469L8.85938 4.03125C8.90625 3.98438 8.97656 3.96094 9.04688 3.96094C9.09375 3.96094 9.16406 3.98438 9.21094 4.03125L14.7188 8.55469C14.7656 8.60156 14.8359 8.625 14.9062 8.625C15 8.625 15.0703 8.60156 15.1172 8.53125L15.7266 7.80469C15.7734 7.75781 15.7969 7.6875 15.7969 7.61719C15.7969 7.54688 15.75 7.45312 15.6797 7.40625Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.5469 8.53125V12.375C13.5469 12.5859 13.3594 12.75 13.1719 12.75H10.5234C10.3359 12.75 10.1484 12.5859 10.1484 12.375V10.125C10.1484 9.9375 9.98438 9.75 9.77344 9.75H8.27344C8.08594 9.75 7.89844 9.9375 7.89844 10.125V12.375C7.89844 12.5859 7.73438 12.75 7.54688 12.75H4.92188C4.71094 12.75 4.54688 12.5859 4.54688 12.375V8.55469L8.85938 4.99219C8.90625 4.94531 8.97656 4.92188 9.04688 4.92188C9.09375 4.92188 9.16406 4.94531 9.21094 4.99219L13.5469 8.53125ZM14.7188 8.55469C14.7199 8.55582 14.721 8.55693 14.7222 8.55803C14.7604 8.5945 14.8132 8.61608 14.8687 8.62275C14.8811 8.62425 14.8937 8.625 14.9062 8.625C15 8.625 15.0703 8.60156 15.1172 8.53125L15.7266 7.80469C15.7734 7.75781 15.7969 7.6875 15.7969 7.61719C15.7969 7.58321 15.7859 7.54375 15.7667 7.50676C15.7461 7.46721 15.716 7.43047 15.6797 7.40625L13.7344 5.78906V2.55469C13.7344 2.39062 13.5938 2.27344 13.4531 2.27344H12.1406C11.9766 2.27344 11.8594 2.39062 11.8594 2.55469V4.24219L9.75 2.50781C9.7076 2.47601 9.6616 2.44661 9.61282 2.42014C9.4459 2.32958 9.24639 2.27344 9.04688 2.27344C8.76562 2.27344 8.50781 2.36719 8.32031 2.50781L2.39062 7.40625C2.36532 7.42312 2.34306 7.44605 2.32492 7.47178C2.31701 7.483 2.30989 7.49475 2.30364 7.50676C2.30125 7.51134 2.299 7.51595 2.29688 7.52059C2.28184 7.55343 2.27344 7.58741 2.27344 7.61719C2.27344 7.64997 2.28362 7.68274 2.29688 7.71315C2.30676 7.73582 2.31834 7.75718 2.32868 7.77623C2.33421 7.78642 2.33939 7.79596 2.34375 7.80469L2.95312 8.53125C2.95878 8.53973 2.96477 8.54753 2.97111 8.55469C3.0173 8.60688 3.08162 8.625 3.16406 8.625C3.17663 8.625 3.1892 8.62425 3.20163 8.62275C3.25545 8.61627 3.30677 8.59576 3.34472 8.56121C3.34705 8.55909 3.34933 8.55692 3.35156 8.55469L8.85938 4.03125C8.90625 3.98438 8.97656 3.96094 9.04688 3.96094C9.09375 3.96094 9.16406 3.98438 9.21094 4.03125L14.7188 8.55469ZM2.29688 10.7274C1.92098 10.5959 1.51659 10.355 1.18506 9.92451L0.449688 9.04772L0.343607 8.83555C0.343034 8.83449 0.342438 8.83338 0.341816 8.83223C0.327503 8.80565 0.290725 8.73712 0.25148 8.65078C0.185064 8.50467 0.0234375 8.12434 0.0234375 7.61719C0.0234375 7.12558 0.172273 6.71911 0.324604 6.4362C0.462785 6.17958 0.67834 5.88605 0.998912 5.63749L6.92805 0.739506L6.97031 0.707813C7.54728 0.275088 8.27879 0.0234375 9.04688 0.0234375C9.64799 0.0234375 10.2245 0.186404 10.7144 0.458244C11.1195 0.183444 11.61 0.0234375 12.1406 0.0234375H13.4531C14.7135 0.0234375 15.9844 1.02855 15.9844 2.55469V4.73359L17.0756 5.64079C17.3939 5.88864 17.6081 6.18072 17.7457 6.4362C17.898 6.71911 18.0469 7.12558 18.0469 7.61719C18.0469 8.10158 17.902 8.74439 17.4193 9.28773L16.8852 9.92451C16.5606 10.3461 16.1661 10.5858 15.7969 10.719V12.375C15.7969 13.9179 14.5108 15 13.1719 15H10.5234C9.99374 15 9.47232 14.8306 9.03552 14.5304C8.62355 14.823 8.11631 15 7.54688 15H4.92188C3.4683 15 2.29688 13.8286 2.29688 12.375V10.7274Z' fill='%232F2F2F'/%3E%3C/svg%3E" );
--unit-aircraft-status-rtb-red-url: url( "data:image/svg+xml,%3Csvg width='19' height='15' viewBox='0 0 19 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.83594 4.99219L4.52344 8.55469V12.375C4.52344 12.5859 4.6875 12.75 4.89844 12.75H7.52344C7.71094 12.75 7.875 12.5859 7.875 12.375V10.125C7.875 9.9375 8.0625 9.75 8.25 9.75H9.75C9.96094 9.75 10.125 9.9375 10.125 10.125V12.375C10.125 12.5859 10.3125 12.75 10.5 12.75H13.1484C13.3359 12.75 13.5234 12.5859 13.5234 12.375V8.53125L9.1875 4.99219C9.14062 4.94531 9.07031 4.92188 9.02344 4.92188C8.95312 4.92188 8.88281 4.94531 8.83594 4.99219ZM15.6562 7.40625L13.7109 5.78906V2.55469C13.7109 2.39062 13.5703 2.27344 13.4297 2.27344H12.1172C11.9531 2.27344 11.8359 2.39062 11.8359 2.55469V4.24219L9.72656 2.50781C9.53906 2.36719 9.28125 2.27344 9.02344 2.27344C8.74219 2.27344 8.48438 2.36719 8.29688 2.50781L2.36719 7.40625C2.29688 7.45312 2.25 7.54688 2.25 7.61719C2.25 7.6875 2.29688 7.75781 2.32031 7.80469L2.92969 8.53125C2.97656 8.60156 3.04688 8.625 3.14062 8.625C3.21094 8.625 3.28125 8.60156 3.32812 8.55469L8.83594 4.03125C8.88281 3.98438 8.95312 3.96094 9.02344 3.96094C9.07031 3.96094 9.14062 3.98438 9.1875 4.03125L14.6953 8.55469C14.7422 8.60156 14.8125 8.625 14.8828 8.625C14.9766 8.625 15.0469 8.60156 15.0938 8.53125L15.7031 7.80469C15.75 7.75781 15.7734 7.6875 15.7734 7.61719C15.7734 7.54688 15.7266 7.45312 15.6562 7.40625Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.5234 8.53125V12.375C13.5234 12.5859 13.3359 12.75 13.1484 12.75H10.5C10.3125 12.75 10.125 12.5859 10.125 12.375V10.125C10.125 9.9375 9.96094 9.75 9.75 9.75H8.25C8.0625 9.75 7.875 9.9375 7.875 10.125V12.375C7.875 12.5859 7.71094 12.75 7.52344 12.75H4.89844C4.6875 12.75 4.52344 12.5859 4.52344 12.375V8.55469L8.83594 4.99219C8.88281 4.94531 8.95312 4.92188 9.02344 4.92188C9.07031 4.92188 9.14062 4.94531 9.1875 4.99219L13.5234 8.53125ZM14.6953 8.55469C14.6964 8.55582 14.6976 8.55693 14.6987 8.55803C14.737 8.5945 14.7898 8.61608 14.8452 8.62275C14.8577 8.62425 14.8702 8.625 14.8828 8.625C14.9766 8.625 15.0469 8.60156 15.0938 8.53125L15.7031 7.80469C15.75 7.75781 15.7734 7.6875 15.7734 7.61719C15.7734 7.58321 15.7625 7.54375 15.7432 7.50676C15.7227 7.46721 15.6926 7.43047 15.6562 7.40625L13.7109 5.78906V2.55469C13.7109 2.39062 13.5703 2.27344 13.4297 2.27344H12.1172C11.9531 2.27344 11.8359 2.39062 11.8359 2.55469V4.24219L9.72656 2.50781C9.68416 2.47601 9.63816 2.44661 9.58938 2.42014C9.42246 2.32958 9.22295 2.27344 9.02344 2.27344C8.74219 2.27344 8.48438 2.36719 8.29688 2.50781L2.36719 7.40625C2.34189 7.42312 2.31962 7.44605 2.30148 7.47178C2.29357 7.483 2.28645 7.49475 2.2802 7.50676C2.27782 7.51134 2.27556 7.51595 2.27344 7.52059C2.25841 7.55343 2.25 7.58741 2.25 7.61719C2.25 7.64997 2.26019 7.68274 2.27344 7.71315C2.28332 7.73582 2.29491 7.75718 2.30524 7.77623C2.31078 7.78642 2.31595 7.79596 2.32031 7.80469L2.92969 8.53125C2.93534 8.53973 2.94134 8.54753 2.94767 8.55469C2.99386 8.60688 3.05818 8.625 3.14062 8.625C3.15319 8.625 3.16576 8.62425 3.17819 8.62275C3.23202 8.61627 3.28333 8.59576 3.32129 8.56121C3.32362 8.55909 3.3259 8.55692 3.32812 8.55469L8.83594 4.03125C8.88281 3.98438 8.95312 3.96094 9.02344 3.96094C9.07031 3.96094 9.14062 3.98438 9.1875 4.03125L14.6953 8.55469ZM2.27344 10.7274C1.89755 10.5959 1.49315 10.355 1.16162 9.92451L0.426251 9.04772L0.32017 8.83555C0.319597 8.83449 0.319 8.83338 0.318378 8.83223C0.304066 8.80565 0.267288 8.73712 0.228043 8.65078C0.161627 8.50467 0 8.12434 0 7.61719C0 7.12558 0.148836 6.71911 0.301167 6.4362C0.439348 6.17958 0.654902 5.88605 0.975475 5.63749L6.90462 0.739506L6.94688 0.707813C7.52384 0.275088 8.25535 0.0234375 9.02344 0.0234375C9.62455 0.0234375 10.201 0.186404 10.691 0.458244C11.0961 0.183444 11.5866 0.0234375 12.1172 0.0234375H13.4297C14.6901 0.0234375 15.9609 1.02855 15.9609 2.55469V4.73359L17.0522 5.64079C17.3704 5.88864 17.5847 6.18072 17.7223 6.4362C17.8746 6.71911 18.0234 7.12558 18.0234 7.61719C18.0234 8.10158 17.8785 8.74439 17.3959 9.28773L16.8618 9.92451C16.5372 10.3461 16.1426 10.5858 15.7734 10.719V12.375C15.7734 13.9179 14.4874 15 13.1484 15H10.5C9.9703 15 9.44888 14.8306 9.01208 14.5304C8.60011 14.823 8.09287 15 7.52344 15H4.89844C3.44486 15 2.27344 13.8286 2.27344 12.375V10.7274Z' fill='%23262222'/%3E%3C/svg%3E" );
--unit-air-status-hold-height: 50px;
--unit-air-status-hold-width: 50px;
--unit-aircraft-status-hold-height: 50px;
--unit-aircraft-status-hold-width: 50px;
--unit-air-status-hold-blue-url: url( "data:image/svg+xml,%3Csvg width='18' height='17' viewBox='0 0 18 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9.48873 0.900581C10.6482 -0.282964 12.5476 -0.302474 13.7311 0.857004L15.5175 2.607C16.0935 3.17128 16.4181 3.94367 16.4181 4.75C16.4181 4.98835 16.3897 5.22373 16.3349 5.45165C16.7777 5.85549 17.1041 6.39558 17.2419 7.02558L17.3634 7.58115L17.3634 7.58116C18.1864 11.3434 15.254 14.75 11.5216 14.75H9.59627C9.45579 15.0566 9.26081 15.3446 9.01119 15.5994C7.85171 16.783 5.95232 16.8025 4.76878 15.643L2.98245 13.893C2.40646 13.3287 2.08187 12.5563 2.08187 11.75C2.08187 11.5117 2.11023 11.2763 2.16507 11.0484C1.72225 10.6445 1.3958 10.1044 1.258 9.47436L1.13648 8.91882C1.13648 8.91881 1.13648 8.9188 1.13648 8.9188C0.313576 5.15664 3.24591 1.75 6.97832 1.75H8.90365C9.04413 1.44337 9.23911 1.15538 9.48873 0.900581ZM8.90365 7.75H8.85271C8.88343 7.77715 8.91372 7.80505 8.94357 7.83367C8.92981 7.80595 8.9165 7.77805 8.90365 7.75ZM9.55635 8.66633C9.57011 8.69406 9.58342 8.72195 9.59627 8.75H9.64721C9.61649 8.72285 9.5862 8.69496 9.55635 8.66633Z' fill='%23082E44'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.0958 2.47515C11.3856 2.17926 11.8605 2.17438 12.1564 2.46425L13.9427 4.21425C14.0867 4.35532 14.1678 4.54842 14.1678 4.75C14.1678 4.95158 14.0867 5.14468 13.9427 5.28575L12.1564 7.03575C11.8605 7.32562 11.3856 7.32074 11.0958 7.02486C10.8059 6.72897 10.8108 6.25412 11.1067 5.96425L11.5805 5.5H6.9781C5.54192 5.5 4.50895 6.78851 4.79965 8.11751L4.79965 8.11751L4.92117 8.67308C5.00967 9.07772 4.75339 9.4775 4.34875 9.56601C3.9441 9.65452 3.54432 9.39824 3.45581 8.99359L3.33429 8.43803C3.33429 8.43803 3.33429 8.43803 3.33429 8.43802C2.83071 6.13576 4.62343 4 6.9781 4H11.5805L11.1067 3.53575C10.8108 3.24588 10.8059 2.77103 11.0958 2.47515ZM14.1507 6.93399C14.5554 6.84548 14.9552 7.10175 15.0437 7.5064L15.1652 8.06196L14.4609 8.21604L15.1652 8.06196C15.6688 10.3642 13.8761 12.5 11.5214 12.5H6.91894L7.39283 12.9643C7.68872 13.2541 7.69359 13.729 7.40372 14.0249C7.11385 14.3207 6.63901 14.3256 6.34312 14.0357L4.5568 12.2857C4.4128 12.1447 4.33165 11.9516 4.33165 11.75C4.33165 11.5484 4.4128 11.3553 4.5568 11.2143L6.34312 9.46425C6.63901 9.17438 7.11385 9.17926 7.40372 9.47515C7.69359 9.77103 7.68872 10.2459 7.39283 10.5357L6.91894 11H11.5214C12.9576 11 13.9906 9.71149 13.6998 8.38251L13.5783 7.82694C13.4898 7.42229 13.7461 7.02251 14.1507 6.93399Z' fill='white'/%3E%3C/svg%3E" );
--unit-air-status-hold-neutral-url: url( "data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M8.5356 0.900581C9.69508 -0.282964 11.5945 -0.302474 12.778 0.857004L14.5643 2.607C15.1403 3.17128 15.4649 3.94367 15.4649 4.75C15.4649 4.98835 15.4366 5.22373 15.3817 5.45165C15.8245 5.85549 16.151 6.39558 16.2888 7.02558L16.4103 7.58115L16.4103 7.58116C17.2333 11.3434 14.3009 14.75 10.5685 14.75H8.64315C8.50267 15.0566 8.30769 15.3446 8.05807 15.5994C6.89859 16.783 4.99919 16.8025 3.81565 15.643L2.02933 13.893C1.45334 13.3287 1.12875 12.5563 1.12875 11.75C1.12875 11.5117 1.15711 11.2763 1.21194 11.0484C0.769126 10.6445 0.442675 10.1044 0.30487 9.47436L0.183357 8.91882C0.183355 8.91881 0.183354 8.9188 0.183352 8.9188C-0.639549 5.15664 2.29279 1.75 6.02519 1.75H7.95052C8.09101 1.44337 8.28598 1.15538 8.5356 0.900581ZM7.95052 7.75H7.89958C7.93031 7.77715 7.9606 7.80505 7.99045 7.83367C7.97668 7.80595 7.96338 7.77805 7.95052 7.75ZM8.60322 8.66633C8.61699 8.69406 8.6303 8.72195 8.64315 8.75H8.69409C8.66337 8.72285 8.63307 8.69496 8.60322 8.66633Z' fill='%232F2F2F'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1426 2.47515C10.4325 2.17926 10.9074 2.17438 11.2032 2.46425L12.9896 4.21425C13.1336 4.35532 13.2147 4.54842 13.2147 4.75C13.2147 4.95158 13.1336 5.14468 12.9896 5.28575L11.2032 7.03575C10.9074 7.32562 10.4325 7.32074 10.1426 7.02486C9.85276 6.72897 9.85764 6.25412 10.1535 5.96425L10.6274 5.5H6.02497C4.5888 5.5 3.55582 6.78851 3.84652 8.11751L3.84652 8.11751L3.96804 8.67308C4.05655 9.07772 3.80027 9.4775 3.39562 9.56601C2.99097 9.65452 2.59119 9.39824 2.50268 8.99359L2.38117 8.43803C2.38117 8.43803 2.38117 8.43803 2.38117 8.43802C1.87759 6.13576 3.6703 4 6.02497 4H10.6274L10.1535 3.53575C9.85764 3.24588 9.85276 2.77103 10.1426 2.47515ZM13.1976 6.93399C13.6022 6.84548 14.002 7.10175 14.0905 7.5064L14.2121 8.06196L13.5077 8.21604L14.2121 8.06196C14.7157 10.3642 12.9229 12.5 10.5683 12.5H5.96582L6.4397 12.9643C6.73559 13.2541 6.74047 13.729 6.4506 14.0249C6.16073 14.3207 5.68588 14.3256 5.38999 14.0357L3.60367 12.2857C3.45967 12.1447 3.37853 11.9516 3.37853 11.75C3.37853 11.5484 3.45967 11.3553 3.60367 11.2143L5.38999 9.46425C5.68588 9.17438 6.16073 9.17926 6.4506 9.47515C6.74047 9.77103 6.73559 10.2459 6.4397 10.5357L5.96582 11H10.5683C12.0044 11 13.0374 9.71149 12.7467 8.38251L12.6252 7.82694C12.5367 7.42229 12.7929 7.02251 13.1976 6.93399Z' fill='white'/%3E%3C/svg%3E" );
--unit-air-status-hold-red-url: url( "data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M8.51217 0.900581C9.67164 -0.282964 11.571 -0.302474 12.7546 0.857004L14.5409 2.607C15.1169 3.17128 15.4415 3.94367 15.4415 4.75C15.4415 4.98835 15.4131 5.22373 15.3583 5.45165C15.8011 5.85549 16.1275 6.39558 16.2654 7.02558L16.3869 7.58115L16.3869 7.58116C17.2098 11.3434 14.2774 14.75 10.5451 14.75H8.61971C8.47923 15.0566 8.28425 15.3446 8.03463 15.5994C6.87515 16.783 4.97576 16.8025 3.79221 15.643L2.00589 13.893C1.4299 13.3287 1.10531 12.5563 1.10531 11.75C1.10531 11.5117 1.13367 11.2763 1.1885 11.0484C0.745688 10.6445 0.419237 10.1044 0.281433 9.47436L0.159919 8.91882C0.159918 8.91881 0.159916 8.9188 0.159915 8.9188C-0.662986 5.15664 2.26935 1.75 6.00175 1.75H7.92709C8.06757 1.44337 8.26255 1.15538 8.51217 0.900581ZM7.92709 7.75H7.87615C7.90687 7.77715 7.93716 7.80505 7.96701 7.83367C7.95325 7.80595 7.93994 7.77805 7.92709 7.75ZM8.57979 8.66633C8.59355 8.69406 8.60686 8.72195 8.61971 8.75H8.67065C8.63993 8.72285 8.60963 8.69496 8.57979 8.66633Z' fill='%23262222'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1192 2.47515C10.4091 2.17926 10.8839 2.17438 11.1798 2.46425L12.9661 4.21425C13.1101 4.35532 13.1913 4.54842 13.1913 4.75C13.1913 4.95158 13.1101 5.14468 12.9661 5.28575L11.1798 7.03575C10.8839 7.32562 10.4091 7.32074 10.1192 7.02486C9.82932 6.72897 9.8342 6.25412 10.1301 5.96425L10.604 5.5H6.00153C4.56536 5.5 3.53239 6.78851 3.82309 8.11751L3.82309 8.11751L3.9446 8.67308C4.03311 9.07772 3.77683 9.4775 3.37218 9.56601C2.96754 9.65452 2.56775 9.39824 2.47925 8.99359L2.35773 8.43803C2.35773 8.43803 2.35773 8.43803 2.35773 8.43802C1.85415 6.13576 3.64687 4 6.00153 4H10.604L10.1301 3.53575C9.8342 3.24588 9.82932 2.77103 10.1192 2.47515ZM13.1742 6.93399C13.5788 6.84548 13.9786 7.10175 14.0671 7.5064L14.1886 8.06196L13.4843 8.21604L14.1886 8.06196C14.6922 10.3642 12.8995 12.5 10.5448 12.5H5.94238L6.41627 12.9643C6.71215 13.2541 6.71703 13.729 6.42716 14.0249C6.13729 14.3207 5.66244 14.3256 5.36656 14.0357L3.58023 12.2857C3.43624 12.1447 3.35509 11.9516 3.35509 11.75C3.35509 11.5484 3.43624 11.3553 3.58023 11.2143L5.36656 9.46425C5.66244 9.17438 6.13729 9.17926 6.42716 9.47515C6.71703 9.77103 6.71215 10.2459 6.41627 10.5357L5.94238 11H10.5448C11.981 11 13.014 9.71149 12.7233 8.38251L12.6018 7.82694C12.5132 7.42229 12.7695 7.02251 13.1742 6.93399Z' fill='white'/%3E%3C/svg%3E" );
--unit-aircraft-status-hold-blue-url: url( "data:image/svg+xml,%3Csvg width='18' height='17' viewBox='0 0 18 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9.48873 0.900581C10.6482 -0.282964 12.5476 -0.302474 13.7311 0.857004L15.5175 2.607C16.0935 3.17128 16.4181 3.94367 16.4181 4.75C16.4181 4.98835 16.3897 5.22373 16.3349 5.45165C16.7777 5.85549 17.1041 6.39558 17.2419 7.02558L17.3634 7.58115L17.3634 7.58116C18.1864 11.3434 15.254 14.75 11.5216 14.75H9.59627C9.45579 15.0566 9.26081 15.3446 9.01119 15.5994C7.85171 16.783 5.95232 16.8025 4.76878 15.643L2.98245 13.893C2.40646 13.3287 2.08187 12.5563 2.08187 11.75C2.08187 11.5117 2.11023 11.2763 2.16507 11.0484C1.72225 10.6445 1.3958 10.1044 1.258 9.47436L1.13648 8.91882C1.13648 8.91881 1.13648 8.9188 1.13648 8.9188C0.313576 5.15664 3.24591 1.75 6.97832 1.75H8.90365C9.04413 1.44337 9.23911 1.15538 9.48873 0.900581ZM8.90365 7.75H8.85271C8.88343 7.77715 8.91372 7.80505 8.94357 7.83367C8.92981 7.80595 8.9165 7.77805 8.90365 7.75ZM9.55635 8.66633C9.57011 8.69406 9.58342 8.72195 9.59627 8.75H9.64721C9.61649 8.72285 9.5862 8.69496 9.55635 8.66633Z' fill='%23082E44'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.0958 2.47515C11.3856 2.17926 11.8605 2.17438 12.1564 2.46425L13.9427 4.21425C14.0867 4.35532 14.1678 4.54842 14.1678 4.75C14.1678 4.95158 14.0867 5.14468 13.9427 5.28575L12.1564 7.03575C11.8605 7.32562 11.3856 7.32074 11.0958 7.02486C10.8059 6.72897 10.8108 6.25412 11.1067 5.96425L11.5805 5.5H6.9781C5.54192 5.5 4.50895 6.78851 4.79965 8.11751L4.79965 8.11751L4.92117 8.67308C5.00967 9.07772 4.75339 9.4775 4.34875 9.56601C3.9441 9.65452 3.54432 9.39824 3.45581 8.99359L3.33429 8.43803C3.33429 8.43803 3.33429 8.43803 3.33429 8.43802C2.83071 6.13576 4.62343 4 6.9781 4H11.5805L11.1067 3.53575C10.8108 3.24588 10.8059 2.77103 11.0958 2.47515ZM14.1507 6.93399C14.5554 6.84548 14.9552 7.10175 15.0437 7.5064L15.1652 8.06196L14.4609 8.21604L15.1652 8.06196C15.6688 10.3642 13.8761 12.5 11.5214 12.5H6.91894L7.39283 12.9643C7.68872 13.2541 7.69359 13.729 7.40372 14.0249C7.11385 14.3207 6.63901 14.3256 6.34312 14.0357L4.5568 12.2857C4.4128 12.1447 4.33165 11.9516 4.33165 11.75C4.33165 11.5484 4.4128 11.3553 4.5568 11.2143L6.34312 9.46425C6.63901 9.17438 7.11385 9.17926 7.40372 9.47515C7.69359 9.77103 7.68872 10.2459 7.39283 10.5357L6.91894 11H11.5214C12.9576 11 13.9906 9.71149 13.6998 8.38251L13.5783 7.82694C13.4898 7.42229 13.7461 7.02251 14.1507 6.93399Z' fill='white'/%3E%3C/svg%3E" );
--unit-aircraft-status-hold-neutral-url: url( "data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M8.5356 0.900581C9.69508 -0.282964 11.5945 -0.302474 12.778 0.857004L14.5643 2.607C15.1403 3.17128 15.4649 3.94367 15.4649 4.75C15.4649 4.98835 15.4366 5.22373 15.3817 5.45165C15.8245 5.85549 16.151 6.39558 16.2888 7.02558L16.4103 7.58115L16.4103 7.58116C17.2333 11.3434 14.3009 14.75 10.5685 14.75H8.64315C8.50267 15.0566 8.30769 15.3446 8.05807 15.5994C6.89859 16.783 4.99919 16.8025 3.81565 15.643L2.02933 13.893C1.45334 13.3287 1.12875 12.5563 1.12875 11.75C1.12875 11.5117 1.15711 11.2763 1.21194 11.0484C0.769126 10.6445 0.442675 10.1044 0.30487 9.47436L0.183357 8.91882C0.183355 8.91881 0.183354 8.9188 0.183352 8.9188C-0.639549 5.15664 2.29279 1.75 6.02519 1.75H7.95052C8.09101 1.44337 8.28598 1.15538 8.5356 0.900581ZM7.95052 7.75H7.89958C7.93031 7.77715 7.9606 7.80505 7.99045 7.83367C7.97668 7.80595 7.96338 7.77805 7.95052 7.75ZM8.60322 8.66633C8.61699 8.69406 8.6303 8.72195 8.64315 8.75H8.69409C8.66337 8.72285 8.63307 8.69496 8.60322 8.66633Z' fill='%232F2F2F'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1426 2.47515C10.4325 2.17926 10.9074 2.17438 11.2032 2.46425L12.9896 4.21425C13.1336 4.35532 13.2147 4.54842 13.2147 4.75C13.2147 4.95158 13.1336 5.14468 12.9896 5.28575L11.2032 7.03575C10.9074 7.32562 10.4325 7.32074 10.1426 7.02486C9.85276 6.72897 9.85764 6.25412 10.1535 5.96425L10.6274 5.5H6.02497C4.5888 5.5 3.55582 6.78851 3.84652 8.11751L3.84652 8.11751L3.96804 8.67308C4.05655 9.07772 3.80027 9.4775 3.39562 9.56601C2.99097 9.65452 2.59119 9.39824 2.50268 8.99359L2.38117 8.43803C2.38117 8.43803 2.38117 8.43803 2.38117 8.43802C1.87759 6.13576 3.6703 4 6.02497 4H10.6274L10.1535 3.53575C9.85764 3.24588 9.85276 2.77103 10.1426 2.47515ZM13.1976 6.93399C13.6022 6.84548 14.002 7.10175 14.0905 7.5064L14.2121 8.06196L13.5077 8.21604L14.2121 8.06196C14.7157 10.3642 12.9229 12.5 10.5683 12.5H5.96582L6.4397 12.9643C6.73559 13.2541 6.74047 13.729 6.4506 14.0249C6.16073 14.3207 5.68588 14.3256 5.38999 14.0357L3.60367 12.2857C3.45967 12.1447 3.37853 11.9516 3.37853 11.75C3.37853 11.5484 3.45967 11.3553 3.60367 11.2143L5.38999 9.46425C5.68588 9.17438 6.16073 9.17926 6.4506 9.47515C6.74047 9.77103 6.73559 10.2459 6.4397 10.5357L5.96582 11H10.5683C12.0044 11 13.0374 9.71149 12.7467 8.38251L12.6252 7.82694C12.5367 7.42229 12.7929 7.02251 13.1976 6.93399Z' fill='white'/%3E%3C/svg%3E" );
--unit-aircraft-status-hold-red-url: url( "data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M8.51217 0.900581C9.67164 -0.282964 11.571 -0.302474 12.7546 0.857004L14.5409 2.607C15.1169 3.17128 15.4415 3.94367 15.4415 4.75C15.4415 4.98835 15.4131 5.22373 15.3583 5.45165C15.8011 5.85549 16.1275 6.39558 16.2654 7.02558L16.3869 7.58115L16.3869 7.58116C17.2098 11.3434 14.2774 14.75 10.5451 14.75H8.61971C8.47923 15.0566 8.28425 15.3446 8.03463 15.5994C6.87515 16.783 4.97576 16.8025 3.79221 15.643L2.00589 13.893C1.4299 13.3287 1.10531 12.5563 1.10531 11.75C1.10531 11.5117 1.13367 11.2763 1.1885 11.0484C0.745688 10.6445 0.419237 10.1044 0.281433 9.47436L0.159919 8.91882C0.159918 8.91881 0.159916 8.9188 0.159915 8.9188C-0.662986 5.15664 2.26935 1.75 6.00175 1.75H7.92709C8.06757 1.44337 8.26255 1.15538 8.51217 0.900581ZM7.92709 7.75H7.87615C7.90687 7.77715 7.93716 7.80505 7.96701 7.83367C7.95325 7.80595 7.93994 7.77805 7.92709 7.75ZM8.57979 8.66633C8.59355 8.69406 8.60686 8.72195 8.61971 8.75H8.67065C8.63993 8.72285 8.60963 8.69496 8.57979 8.66633Z' fill='%23262222'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1192 2.47515C10.4091 2.17926 10.8839 2.17438 11.1798 2.46425L12.9661 4.21425C13.1101 4.35532 13.1913 4.54842 13.1913 4.75C13.1913 4.95158 13.1101 5.14468 12.9661 5.28575L11.1798 7.03575C10.8839 7.32562 10.4091 7.32074 10.1192 7.02486C9.82932 6.72897 9.8342 6.25412 10.1301 5.96425L10.604 5.5H6.00153C4.56536 5.5 3.53239 6.78851 3.82309 8.11751L3.82309 8.11751L3.9446 8.67308C4.03311 9.07772 3.77683 9.4775 3.37218 9.56601C2.96754 9.65452 2.56775 9.39824 2.47925 8.99359L2.35773 8.43803C2.35773 8.43803 2.35773 8.43803 2.35773 8.43802C1.85415 6.13576 3.64687 4 6.00153 4H10.604L10.1301 3.53575C9.8342 3.24588 9.82932 2.77103 10.1192 2.47515ZM13.1742 6.93399C13.5788 6.84548 13.9786 7.10175 14.0671 7.5064L14.1886 8.06196L13.4843 8.21604L14.1886 8.06196C14.6922 10.3642 12.8995 12.5 10.5448 12.5H5.94238L6.41627 12.9643C6.71215 13.2541 6.71703 13.729 6.42716 14.0249C6.13729 14.3207 5.66244 14.3256 5.36656 14.0357L3.58023 12.2857C3.43624 12.1447 3.35509 11.9516 3.35509 11.75C3.35509 11.5484 3.43624 11.3553 3.58023 11.2143L5.36656 9.46425C5.66244 9.17438 6.13729 9.17926 6.42716 9.47515C6.71703 9.77103 6.71215 10.2459 6.41627 10.5357L5.94238 11H10.5448C11.981 11 13.014 9.71149 12.7233 8.38251L12.6018 7.82694C12.5132 7.42229 12.7695 7.02251 13.1742 6.93399Z' fill='white'/%3E%3C/svg%3E" );
/*** Ground ***/
--unit-ground-mi-marker-height: 50px;
--unit-ground-mi-marker-width: 50px;
--unit-groundunit-marker-height: 50px;
--unit-groundunit-marker-width: 50px;
--unit-ground-mi-marker-blue-url: url( "/themes/olympus/images/icon_ground_blue.svg" );
--unit-ground-mi-marker-blue-hover-url: url( "/themes/olympus/images/icon_ground_blue_hover.svg" );
--unit-ground-mi-marker-blue-selected-url: url( "/themes/olympus/images/icon_ground_blue_selected.svg" );
--unit-groundunit-marker-blue-url: url( "/themes/olympus/images/icon_ground_blue.svg" );
--unit-groundunit-marker-blue-hover-url: url( "/themes/olympus/images/icon_ground_blue_hover.svg" );
--unit-groundunit-marker-blue-selected-url: url( "/themes/olympus/images/icon_ground_blue_selected.svg" );
--unit-ground-mi-marker-neutral-url: url( "/themes/olympus/images/icon_ground_neutral.svg" );
--unit-ground-mi-marker-neutral-hover-url: url( "/themes/olympus/images/icon_ground_neutral_hover.svg" );
--unit-ground-mi-marker-neutral-selected-url: url( "/themes/olympus/images/icon_ground_neutral_selected.svg" );
--unit-groundunit-marker-neutral-url: url( "/themes/olympus/images/icon_ground_neutral.svg" );
--unit-groundunit-marker-neutral-hover-url: url( "/themes/olympus/images/icon_ground_neutral_hover.svg" );
--unit-groundunit-marker-neutral-selected-url: url( "/themes/olympus/images/icon_ground_neutral_selected.svg" );
--unit-ground-mi-marker-red-url: url( "/themes/olympus/images/icon_ground_red.svg" );
--unit-ground-mi-marker-red-hover-url: url( "/themes/olympus/images/icon_ground_red_hover.svg" );
--unit-ground-mi-marker-red-selected-url: url( "/themes/olympus/images/icon_ground_red_selected.svg" );
--unit-groundunit-marker-red-url: url( "/themes/olympus/images/icon_ground_red.svg" );
--unit-groundunit-marker-red-hover-url: url( "/themes/olympus/images/icon_ground_red_hover.svg" );
--unit-groundunit-marker-red-selected-url: url( "/themes/olympus/images/icon_ground_red_selected.svg" );
/*** SAMs ***/
--unit-sam-marker-height: 50px;
--unit-sam-marker-width: 50px;
--unit-ground-sam-marker-blue-url: url( "/themes/olympus/images/icon_aa_blue.svg" );
--unit-ground-sam-marker-blue-hover-url: url( "/themes/olympus/images/icon_aa_blue_hover.svg" );
--unit-ground-sam-marker-blue-selected-url: url( "/themes/olympus/images/icon_aa_blue_selected.svg" );
--unit-sam-marker-blue-url: url( "/themes/olympus/images/icon_aa_blue.svg" );
--unit-sam-marker-blue-hover-url: url( "/themes/olympus/images/icon_aa_blue_hover.svg" );
--unit-sam-marker-blue-selected-url: url( "/themes/olympus/images/icon_aa_blue_selected.svg" );
--unit-ground-sam-marker-neutral-url: url( "/themes/olympus/images/icon_aa_neutral.svg" );
--unit-ground-sam-marker-neutral-hover-url: url( "/themes/olympus/images/icon_aa_neutral_hover.svg" );
--unit-ground-sam-marker-neutral-selected-url: url( "/themes/olympus/images/icon_aa_neutral_selected.svg" );
--unit-sam-marker-neutral-url: url( "/themes/olympus/images/icon_aa_neutral.svg" );
--unit-sam-marker-neutral-hover-url: url( "/themes/olympus/images/icon_aa_neutral_hover.svg" );
--unit-sam-marker-neutral-selected-url: url( "/themes/olympus/images/icon_aa_neutral_selected.svg" );
--unit-ground-sam-marker-red-url: url( "/themes/olympus/images/icon_aa_red.svg" );
--unit-ground-sam-marker-red-hover-url: url( "/themes/olympus/images/icon_aa_red_hover.svg" );
--unit-ground-sam-marker-red-selected-url: url( "/themes/olympus/images/icon_aa_red_selected.svg" );
--unit-sam-marker-red-url: url( "/themes/olympus/images/icon_aa_red.svg" );
--unit-sam-marker-red-hover-url: url( "/themes/olympus/images/icon_aa_red_hover.svg" );
--unit-sam-marker-red-selected-url: url( "/themes/olympus/images/icon_aa_red_selected.svg" );
/*** Naval ***/
--unit-naval-marker-height: 50px;
--unit-naval-marker-width: 50px;
/*** navyunit ***/
--unit-navyunit-marker-height: 50px;
--unit-navyunit-marker-width: 50px;
--unit-naval-marker-blue-url: url( "/themes/olympus/images/icon_ship_blue.svg" );
--unit-naval-marker-blue-hover-url: url( "/themes/olympus/images/icon_ship_blue_hover.svg" );
--unit-naval-marker-blue-selected-url: url( "/themes/olympus/images/icon_ship_blue_selected.svg" );
--unit-navyunit-marker-blue-url: url( "/themes/olympus/images/icon_ship_blue.svg" );
--unit-navyunit-marker-blue-hover-url: url( "/themes/olympus/images/icon_ship_blue_hover.svg" );
--unit-navyunit-marker-blue-selected-url: url( "/themes/olympus/images/icon_ship_blue_selected.svg" );
--unit-naval-marker-neutral-url: url( "/themes/olympus/images/icon_ship_neutral.svg" );
--unit-naval-marker-neutral-hover-url: url( "/themes/olympus/images/icon_ship_neutral_hover.svg" );
--unit-naval-marker-neutral-selected-url: url( "/themes/olympus/images/icon_ship_neutral_selected.svg" );
--unit-navyunit-marker-neutral-url: url( "/themes/olympus/images/icon_ship_neutral.svg" );
--unit-navyunit-marker-neutral-hover-url: url( "/themes/olympus/images/icon_ship_neutral_hover.svg" );
--unit-navyunit-marker-neutral-selected-url: url( "/themes/olympus/images/icon_ship_neutral_selected.svg" );
--unit-naval-marker-red-url: url( "/themes/olympus/images/icon_ship_red.svg" );
--unit-naval-marker-red-hover-url: url( "/themes/olympus/images/icon_ship_red_hover.svg" );
--unit-naval-marker-red-selected-url: url( "/themes/olympus/images/icon_ship_red_selected.svg" );
--unit-navyunit-marker-red-url: url( "/themes/olympus/images/icon_ship_red.svg" );
--unit-navyunit-marker-red-hover-url: url( "/themes/olympus/images/icon_ship_red_hover.svg" );
--unit-navyunit-marker-red-selected-url: url( "/themes/olympus/images/icon_ship_red_selected.svg" );
/*** Building ***/
@ -199,17 +199,17 @@
/*** Weapons ***/
--unit-weapons-missile-marker-height: 50px;
--unit-weapons-missile-marker-width: 50px;
--unit-missile-marker-height: 50px;
--unit-missile-marker-width: 50px;
--unit-weapons-missile-marker-blue-url: url( "/themes/olympus/images/icon_missile_blue.svg" );
--unit-weapons-missile-marker-neutral-url: url( "/themes/olympus/images/icon_missile_neutral.svg" );
--unit-weapons-missile-marker-red-url: url( "/themes/olympus/images/icon_missile_red.svg" );
--unit-missile-marker-blue-url: url( "/themes/olympus/images/icon_missile_blue.svg" );
--unit-missile-marker-neutral-url: url( "/themes/olympus/images/icon_missile_neutral.svg" );
--unit-missile-marker-red-url: url( "/themes/olympus/images/icon_missile_red.svg" );
/*** Context menu ***/
--spawn-aircraft-url: url( "/themes/olympus/images/spawn_aircraft.svg" );
--spawn-ground-url: url( "/themes/olympus/images/spawn_ground.svg" );
--spawn-groundunit-url: url( "/themes/olympus/images/spawn_ground.svg" );
--spawn-smoke-url: url( "/themes/olympus/images/spawn_smoke.svg" );
/*** Airbase ***/

View File

@ -112,8 +112,8 @@ export class MapContextMenu extends ContextMenu {
#setAircraftRole(role: string)
{
this.#spawnOptions.role = role;
this.#resetAircraftRole();
this.#aircraftTypeDropdown.setOptions(aircraftDatabase.getLabelsByRole(role));
this.#resetAircraftType();
this.#aircraftTypeDropdown.setOptions(aircraftDatabase.getByRole(role).map((blueprint) => {return blueprint.label}));
this.#aircraftTypeDropdown.selectValue(0);
this.clip();
}
@ -130,7 +130,7 @@ export class MapContextMenu extends ContextMenu {
#setAircraftType(label: string)
{
this.#resetAircraftType();
var type = aircraftDatabase.getNameByLabel(label);
var type = aircraftDatabase.getByLabel(label)?.name || null;
if (type != null)
{
this.#spawnOptions.type = type;
@ -154,7 +154,7 @@ export class MapContextMenu extends ContextMenu {
#setAircraftLoadout(loadoutName: string)
{
var loadout = aircraftDatabase.getLoadoutsByName(this.#spawnOptions.type, loadoutName);
var loadout = aircraftDatabase.getLoadoutByName(this.#spawnOptions.type, loadoutName);
if (loadout)
{
this.#spawnOptions.loadout = loadout.code;
@ -177,7 +177,7 @@ export class MapContextMenu extends ContextMenu {
{
this.#spawnOptions.role = role;
this.#resetGroundUnitRole();
this.#groundUnitTypeDropdown.setOptions(groundUnitsDatabase.getLabelsByRole(role));
this.#groundUnitTypeDropdown.setOptions(groundUnitsDatabase.getByRole(role).map((blueprint) => {return blueprint.label}));
this.#groundUnitTypeDropdown.selectValue(0);
this.clip();
}
@ -194,7 +194,7 @@ export class MapContextMenu extends ContextMenu {
#setGroundUnitType(label: string)
{
this.#resetGroundUnitType();
var type = groundUnitsDatabase.getNameByLabel(label);
var type = groundUnitsDatabase.getByLabel(label)?.name || null;
if (type != null)
{
this.#spawnOptions.type = type;

View File

@ -184,15 +184,6 @@ function setupEvents() {
}
//*/
document.addEventListener("toggleCoalitionVisibility", (ev: CustomEventInit) => {
ev.detail._element.classList.toggle("off");
document.body.toggleAttribute("data-hide-" + ev.detail.coalition);
});
document.addEventListener("toggleUnitVisibility", (ev: CustomEventInit) => {
document.body.toggleAttribute("data-hide-" + ev.detail.category);
});
document.addEventListener( "closeDialog", (ev: CustomEventInit) => {
ev.detail._element.closest( ".ol-dialog" ).classList.add( "hide" );
});

View File

@ -6,6 +6,7 @@ import { UnitContextMenu } from "../controls/unitcontextmenu";
import { AirbaseContextMenu } from "../controls/airbasecontextmenu";
import { Dropdown } from "../controls/dropdown";
import { Airbase } from "../missionhandler/airbase";
import { Unit } from "../units/unit";
export const IDLE = "IDLE";
export const MOVE_UNIT = "MOVE_UNIT";
@ -45,6 +46,17 @@ export class Map extends L.Map {
this.on('mouseup', (e: any) => this.#onMouseUp(e));
this.on('mousemove', (e: any) => this.#onMouseMove(e));
document.addEventListener("toggleCoalitionVisibility", (ev: CustomEventInit) => {
ev.detail._element.classList.toggle("off");
document.body.toggleAttribute("data-hide-" + ev.detail.coalition);
Object.values(getUnitsManager().getUnits()).forEach((unit: Unit) => unit.updateVisibility());
});
document.addEventListener("toggleUnitVisibility", (ev: CustomEventInit) => {
document.body.toggleAttribute("data-hide-" + ev.detail.category);
Object.values(getUnitsManager().getUnits()).forEach((unit: Unit) => unit.updateVisibility());
});
this.#mapSourceDropdown = new Dropdown("map-type", (layerName: string) => this.setLayer(layerName), this.getLayers())
}

View File

@ -3,23 +3,24 @@ import { Slider } from "../controls/slider";
import { aircraftDatabase } from "../units/aircraftdatabase";
import { groundUnitsDatabase } from "../units/groundunitsdatabase";
import { Aircraft, GroundUnit, Unit } from "../units/unit";
import { UnitDatabase } from "../units/unitdatabase";
import { UnitsManager } from "../units/unitsmanager";
import { Panel } from "./panel";
const ROEs: string[] = ["Free", "Designated free", "Designated", "Return", "Hold"];
const reactionsToThreat: string[] = [ "None", "Passive", "Evade", "Escape", "Abort"];
const minSpeedValues: {[key: string]: number} = {Aircraft: 100, Helicopter: 0, NavyUnit: 0, GroundUnit: 0};
const maxSpeedValues: {[key: string]: number} = {Aircraft: 800, Helicopter: 300, NavyUnit: 60, GroundUnit: 60};
const speedIncrements: {[key: string]: number} = {Aircraft: 25, Helicopter: 10, NavyUnit: 5, GroundUnit: 5};
const minAltitudeValues: {[key: string]: number} = {Aircraft: 0, Helicopter: 0};
const maxAltitudeValues: {[key: string]: number} = {Aircraft: 50000, Helicopter: 10000};
const altitudeIncrements: {[key: string]: number} = {Aircraft: 2500, Helicopter: 1000};
const reactionsToThreat: string[] = ["None", "Passive", "Evade", "Escape", "Abort"];
const minSpeedValues: { [key: string]: number } = { Aircraft: 100, Helicopter: 0, NavyUnit: 0, GroundUnit: 0 };
const maxSpeedValues: { [key: string]: number } = { Aircraft: 800, Helicopter: 300, NavyUnit: 60, GroundUnit: 60 };
const speedIncrements: { [key: string]: number } = { Aircraft: 25, Helicopter: 10, NavyUnit: 5, GroundUnit: 5 };
const minAltitudeValues: { [key: string]: number } = { Aircraft: 0, Helicopter: 0 };
const maxAltitudeValues: { [key: string]: number } = { Aircraft: 50000, Helicopter: 10000 };
const altitudeIncrements: { [key: string]: number } = { Aircraft: 2500, Helicopter: 1000 };
export class UnitControlPanel extends Panel {
#altitudeSlider: Slider;
#airspeedSlider: Slider;
#optionButtons: {[key: string]: HTMLButtonElement[]} = {}
#optionButtons: { [key: string]: HTMLButtonElement[] } = {}
constructor(ID: string) {
super(ID);
@ -28,87 +29,66 @@ export class UnitControlPanel extends Panel {
this.#airspeedSlider = new Slider("airspeed-slider", 0, 100, "kts", (value: number) => getUnitsManager().selectedUnitsSetSpeed(value / 1.94384));
/* Option buttons */
this.#optionButtons["ROE"] = ROEs.map((option: string, index:number) => {
this.#optionButtons["ROE"] = ROEs.map((option: string, index: number) => {
var button = document.createElement("button");
button.title = option;
button.value = option;
button.addEventListener("click", () => {getUnitsManager().selectedUnitsSetROE(button.title);});
button.addEventListener("click", () => { getUnitsManager().selectedUnitsSetROE(button.title); });
return button;
});
this.#optionButtons["reactionToThreat"] = reactionsToThreat.map((option: string, index:number) => {
this.#optionButtons["reactionToThreat"] = reactionsToThreat.map((option: string, index: number) => {
var button = document.createElement("button");
button.title = option;
button.value = option;
button.addEventListener("click", () => {getUnitsManager().selectedUnitsSetReactionToThreat(button.title);});
button.addEventListener("click", () => { getUnitsManager().selectedUnitsSetReactionToThreat(button.title); });
return button;
});
this.getElement().querySelector("#roe-buttons-container")?.append(...this.#optionButtons["ROE"]);
this.getElement().querySelector("#reaction-to-threat-buttons-container")?.append(...this.#optionButtons["reactionToThreat"]);
document.addEventListener("unitUpdated", (e: CustomEvent<Unit>) => {if (e.detail.getSelected()) this.update()});
document.addEventListener("unitsSelection", (e: CustomEvent<Unit[]>) => {this.show(); this.update()});
document.addEventListener("clearSelection", () => {this.hide()});
document.addEventListener("unitUpdated", (e: CustomEvent<Unit>) => { if (e.detail.getSelected()) this.update() });
document.addEventListener("unitsSelection", (e: CustomEvent<Unit[]>) => { this.show(); this.update() });
document.addEventListener("clearSelection", () => { this.hide() });
this.hide();
}
update() {
var units = getUnitsManager().getSelectedUnits();
if (this.getElement() != null && units.length > 0)
{
if (this.getElement() != null && units.length > 0) {
this.#showFlightControlSliders(units);
this.getElement().querySelector("#selected-units-container")?.replaceChildren(...units.map((unit: Unit, index:number) =>
{
const baseData = unit.getBaseData();
this.getElement().querySelector("#selected-units-container")?.replaceChildren(...units.map((unit: Unit, index: number) => {
let database: UnitDatabase | null;
if (unit instanceof Aircraft)
database = aircraftDatabase;
else if (unit instanceof GroundUnit)
database = groundUnitsDatabase;
else
database = null; // TODO add databases for other unit types
if ( index === 0 ) {
this.getElement().querySelectorAll(`[data-object|="unit"]`).forEach( marker => {
marker.setAttribute( "data-coalition", unit.getMissionData().coalition );
const shortLabel = <HTMLElement>marker.querySelector( ".unit-short-label" );
if ( shortLabel ) {
shortLabel.innerText = aircraftDatabase.getShortLabelByName( baseData.name );
}
if (index === 0) {
this.getElement().querySelectorAll(`[data-object|="unit"]`).forEach(marker => {
marker.setAttribute("data-coalition", unit.getMissionData().coalition);
const shortLabel = <HTMLElement>marker.querySelector(".unit-short-label");
if (shortLabel)
shortLabel.innerText = database?.getByName(unit.getBaseData().name)?.shortLabel || "";
});
}
var button = document.createElement("button");
const unitName = <HTMLInputElement>this.getElement().querySelector("#unit-name");
var callsign = aircraftDatabase.getByName(unit.getBaseData().unitName)?.label || "";
let callsign;
button.innerText = "";
button.setAttribute("data-short-label", database?.getByName(unit.getBaseData().name)?.shortLabel || "");
button.setAttribute("data-callsign", callsign);
unitName.value = callsign;
const unitName = <HTMLInputElement>this.getElement().querySelector( "#unit-name" );
if (unit instanceof Aircraft) {
button.innerText = "";
button.setAttribute( "data-short-label", aircraftDatabase.getLabelByName( baseData.name ) );
callsign = aircraftDatabase.getLabelByName( baseData.unitName );
button.setAttribute( "data-callsign", callsign );
unitName.value = callsign;
} else if (unit instanceof GroundUnit) {
button.setAttribute( "data-short-label", groundUnitsDatabase.getShortLabelByName(baseData.name));
callsign = aircraftDatabase.getLabelByName( baseData.unitName ) || "";
button.setAttribute( "data-callsign", groundUnitsDatabase.getLabelByName( baseData.unitName ) );
unitName.value = callsign;
} else {
button.setAttribute( "data-short-label", "");
button.setAttribute( "data-callsign", "" );
}
button.setAttribute( "data-coalition", unit.getMissionData().coalition );
button.classList.add( "pill", "highlight-coalition" )
button.setAttribute("data-coalition", unit.getMissionData().coalition);
button.classList.add("pill", "highlight-coalition")
button.addEventListener("click", () => getUnitsManager().selectUnit(unit.ID, true));
return (button);
@ -116,16 +96,15 @@ export class UnitControlPanel extends Panel {
this.#optionButtons["ROE"].forEach((button: HTMLButtonElement) => {
button.classList.toggle("selected", units.every((unit: Unit) => unit.getOptionsData().ROE === button.value))
});
});
this.#optionButtons["reactionToThreat"].forEach((button: HTMLButtonElement) => {
button.classList.toggle("selected", units.every((unit: Unit) => unit.getOptionsData().reactionToThreat === button.value))
});
});
}
}
#showFlightControlSliders(units: Unit[])
{
#showFlightControlSliders(units: Unit[]) {
this.#airspeedSlider.show();
this.#altitudeSlider.show();
@ -133,8 +112,7 @@ export class UnitControlPanel extends Panel {
var targetAltitude = getUnitsManager().getSelectedUnitsTargetAltitude();
var targetSpeed = getUnitsManager().getSelectedUnitsTargetSpeed();
if (unitsType != undefined)
{
if (unitsType != undefined) {
if (["GroundUnit", "NavyUnit"].includes(unitsType))
this.#altitudeSlider.hide()

View File

@ -54,7 +54,7 @@ export class UnitInfoPanel extends Panel {
const baseData = unit.getBaseData();
/* Set the unit info */
this.#unitLabel.innerText = aircraftDatabase.getLabelByName( baseData.name );
this.#unitLabel.innerText = aircraftDatabase.getByName(baseData.name)?.label || "";
this.#unitName.innerText = baseData.unitName;
this.#unitControl.innerText = ( ( baseData.AI ) ? "AI" : "Human" ) + " controlled";
// this.#groupName.innerText = baseData.groupName;

View File

@ -3,7 +3,7 @@ import { UnitDatabase } from "./unitdatabase"
export class AircraftDatabase extends UnitDatabase {
constructor() {
super();
this.units = {
this.blueprints = {
"A-10C": {
"name": "A-10C",

View File

@ -3,7 +3,7 @@ import { UnitDatabase } from "./unitdatabase"
export class GroundUnitsDatabase extends UnitDatabase {
constructor() {
super();
this.units = {
this.blueprints = {
"2B11 mortar": {
"name": "2B11 mortar",
"label": "2B11 mortar",

View File

@ -1,7 +1,7 @@
import { Marker, LatLng, Polyline, Icon, DivIcon } from 'leaflet';
import { getMap, getUnitsManager } from '..';
import { rad2deg } from '../other/utils';
import { addDestination, attackUnit, changeAltitude, changeSpeed, createFormation as setLeader, deleteUnit, landAt, setAltitude, setReactionToThreat, setROE, setSpeed } from '../server/server';
import { addDestination, attackUnit, changeAltitude, changeSpeed, createFormation as setLeader, deleteUnit, getUnits, landAt, setAltitude, setReactionToThreat, setROE, setSpeed } from '../server/server';
import { aircraftDatabase } from './aircraftdatabase';
import { groundUnitsDatabase } from './groundunitsdatabase';
@ -79,7 +79,7 @@ export class Unit extends Marker {
if (type === "NavyUnit") return NavyUnit;
}
constructor(ID: number, data: UpdateData, html: string) {
constructor(ID: number, data: UpdateData) {
super(new LatLng(0, 0), { riseOnHover: true });
this.ID = ID;
@ -89,19 +89,12 @@ export class Unit extends Marker {
this.on('click', (e) => this.#onClick(e));
this.on('dblclick', (e) => this.#onDoubleClick(e));
this.on('contextmenu', (e) => this.#onContextMenu(e));
var icon = new DivIcon({
html: html,
className: 'leaflet-unit-marker',
iconAnchor: [0, 0]
});
this.setIcon(icon);
this.#pathPolyline = new Polyline([], { color: '#2d3e50', weight: 3, opacity: 0.5, smoothFactor: 1 });
this.#pathPolyline.addTo(getMap());
this.#targetsPolylines = [];
// Deselect units if they are hidden
/* Deselect units if they are hidden */
document.addEventListener("toggleCoalitionVisibility", (ev: CustomEventInit) => {
setTimeout(() => {this.setSelected(this.getSelected() && !this.getHidden())}, 300);
});
@ -110,7 +103,31 @@ export class Unit extends Marker {
setTimeout(() => {this.setSelected(this.getSelected() && !this.getHidden())}, 300);
});
/* Set the unit data */
this.setData(data);
/* Set the icon */
var icon = new DivIcon({
html: this.getMarkerHTML(),
className: 'leaflet-unit-marker',
iconAnchor: [0, 0]
});
this.setIcon(icon);
}
getMarkerHTML() {
return `<div class="unit" data-object="unit-${this.getMarkerCategory()}" data-coalition="${this.getMissionData().coalition}">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label"></div>
</div>`
}
getMarkerCategory()
{
// Overloaded by child classes
return "";
}
setData(data: UpdateData) {
@ -118,6 +135,7 @@ export class Unit extends Marker {
var updateMarker = false;
if ((data.flightData.latitude != undefined && data.flightData.longitude != undefined && (this.getFlightData().latitude != data.flightData.latitude || this.getFlightData().longitude != data.flightData.longitude))
|| (data.flightData.heading != undefined && this.getFlightData().heading != data.flightData.heading)
|| (data.baseData.alive != undefined && this.getBaseData().alive != data.baseData.alive)
|| this.#forceUpdate || !getMap().hasLayer(this))
updateMarker = true;
@ -253,13 +271,30 @@ export class Unit extends Marker {
this.getTaskData().activePath = undefined;
}
updateVisibility()
{
this.setHidden( document.body.getAttribute(`data-hide-${this.getMissionData().coalition}`) != null ||
document.body.getAttribute(`data-hide-${this.getMarkerCategory()}`) != null ||
!this.getBaseData().alive)
}
setHidden(hidden: boolean)
{
this.#hidden = hidden;
this.#hidden = hidden;
/* Add the marker if not present */
if (!getMap().hasLayer(this) && !this.getHidden()) {
this.addTo(getMap());
}
/* Hide the marker if necessary*/
if (getMap().hasLayer(this) && this.getHidden()) {
getMap().removeLayer(this);
}
}
getHidden() {
return (<HTMLElement>this.getElement()?.querySelector(`.unit`))?.offsetParent === null;
return this.#hidden;
}
getLeader() {
@ -282,10 +317,6 @@ export class Unit extends Marker {
return wingmen;
}
forceUpdate() {
this.#forceUpdate = true;
}
attackUnit(targetID: number) {
/* Call DCS attackUnit function */
if (this.ID != targetID) {
@ -355,11 +386,14 @@ export class Unit extends Marker {
var options = [
'Attack'
]
getMap().showUnitContextMenu(e);
getMap().getUnitContextMenu().setOptions(options, (option: string) => {
getMap().hideUnitContextMenu();
this.#executeAction(option);
});
if (getUnitsManager().getSelectedUnits().length > 0 && !(getUnitsManager().getSelectedUnits().includes(this)))
{
getMap().showUnitContextMenu(e);
getMap().getUnitContextMenu().setOptions(options, (option: string) => {
getMap().hideUnitContextMenu();
this.#executeAction(option);
});
}
}
#executeAction(action: string) {
@ -368,21 +402,13 @@ export class Unit extends Marker {
}
#updateMarker() {
/* Add the marker if not present */
if (!getMap().hasLayer(this) && !this.getHidden()) {
this.addTo(getMap());
}
this.updateVisibility();
/* Hide the marker if necessary*/
if (getMap().hasLayer(this) && this.getHidden()) {
getMap().removeLayer(this);
}
else {
if (!this.getHidden()) {
this.setLatLng(new LatLng(this.getFlightData().latitude, this.getFlightData().longitude));
var element = this.getElement();
if (element != null) {
element.querySelector(".unit-vvi")?.setAttribute("style", `height: ${15 + this.getFlightData().speed / 5}px;`);
element.querySelector(".unit")?.setAttribute("data-pilot", this.getMissionData().flags.human? "human": "ai");
@ -401,9 +427,8 @@ export class Unit extends Marker {
}
const headingDeg = rad2deg( this.getFlightData().heading );
element.querySelectorAll( "[data-rotate-to-heading]" ).forEach( el => {
const headingDeg = rad2deg( this.getFlightData().heading );
let currentStyle = el.getAttribute( "style" ) || "";
el.setAttribute( "style", currentStyle + `transform:rotate(${headingDeg}deg);` );
});
@ -494,93 +519,111 @@ export class AirUnit extends Unit {
export class Aircraft extends AirUnit {
constructor(ID: number, data: UnitData) {
super(ID, data,
`<div class="unit" data-object="unit-air-aircraft" data-status="" data-coalition="${data.missionData.coalition}">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker-border"></div>
<div class="unit-status"></div>
<div class="unit-vvi" data-rotate-to-heading></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id"></div>
</div>
<div class="unit-marker"></div>
<div class="unit-short-label">${aircraftDatabase.getShortLabelByName(data.baseData.name)}</div>
<div class="unit-fuel">
<div class="unit-fuel-level" style="width:100%;"></div>
</div>
<div class="unit-ammo">
<div class="unit-ammo-fox-1"></div>
<div class="unit-ammo-fox-2"></div>
<div class="unit-ammo-fox-3"></div>
<div class="unit-ammo-other"></div>
</div>
<div class="unit-summary">
<div class="unit-callsign">${data.baseData.unitName}</div>
<div class="unit-altitude"></div>
<div class="unit-speed"></div>
</div>
</div>`);
super(ID, data);
}
getMarkerHTML()
{
return `<div class="unit" data-object="unit-aircraft" data-status="" data-coalition="${this.getMissionData().coalition}">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker-border"></div>
<div class="unit-status"></div>
<div class="unit-vvi" data-rotate-to-heading></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id"></div>
</div>
<div class="unit-marker"></div>
<div class="unit-short-label">${aircraftDatabase.getByName(this.getBaseData().name)?.shortLabel || ""}</div>
<div class="unit-fuel">
<div class="unit-fuel-level" style="width:100%;"></div>
</div>
<div class="unit-ammo">
<div class="unit-ammo-fox-1"></div>
<div class="unit-ammo-fox-2"></div>
<div class="unit-ammo-fox-3"></div>
<div class="unit-ammo-other"></div>
</div>
<div class="unit-summary">
<div class="unit-callsign">${this.getBaseData().unitName}</div>
<div class="unit-altitude"></div>
<div class="unit-speed"></div>
</div>
</div>`
}
getMarkerCategory()
{
return "aircraft";
}
}
export class Helicopter extends AirUnit {
constructor(ID: number, data: UnitData) {
super(ID, data,
``);
super(ID, data);
}
getVisibilityCategory()
{
return "helicopter";
}
}
export class GroundUnit extends Unit {
constructor(ID: number, data: UnitData) {
// TODO this is very messy
var role = groundUnitsDatabase.getByName(data.baseData.name)?.loadouts[0].roles[0];
if (role == undefined)
role = "U";
var roleType = (role === "SAM") ? "sam" : "mi";
super(ID, data);
}
super(ID, data, `
<div class="unit" data-object="unit-ground-${roleType}" data-coalition="${data.missionData.coalition}">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">${role?.substring(0, 1).toUpperCase()}</div>
</div>
`);
getMarkerCategory()
{
// TODO this is very messy
var role = groundUnitsDatabase.getByName(this.getBaseData().name)?.loadouts[0].roles[0];
var markerCategory = (role === "SAM") ? "sam" : "groundunit";
return markerCategory;
}
}
export class NavyUnit extends Unit {
constructor(ID: number, data: UnitData) {
super(ID, data, `
<div class="unit" data-object="unit-naval" data-coalition="${data.missionData.coalition}">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">N</div>
</div>
`);
super(ID, data);
}
getMarkerCategory() {
return "navyunit";
}
}
export class Weapon extends Unit {
constructor(ID: number, data: UnitData, html: string) {
super(ID, data, html);
constructor(ID: number, data: UnitData) {
super(ID, data);
this.setSelectable(false);
}
getMarkerHTML(): string {
return `<div class="unit" data-object="unit-${this.getMarkerCategory()}" data-coalition="${this.getMissionData().coalition}">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker" data-rotate-to-heading></div>
<div class="unit-short-label"></div>
</div>`
}
}
export class Missile extends Weapon {
constructor(ID: number, data: UnitData) {
super(ID, data, `
<div class="unit" data-object="unit-weapon-missile" data-coalition="${data.missionData.coalition}">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker" data-rotate-to-heading></div>
<div class="unit-short-label"></div>
</div>
`);
super(ID, data);
}
getMarkerCategory() {
return "missile";
}
}
export class Bomb extends Weapon {
constructor(ID: number, data: UnitData) {
super(ID, data, "");
super(ID, data);
}
getMarkerCategory() {
return "bomb";
}
}

View File

@ -1,34 +1,18 @@
export class UnitDatabase {
units: {[key: string]: UnitBlueprint} = {};
blueprints: {[key: string]: UnitBlueprint} = {};
constructor()
{
}
getByName(name: string)
{
if (name in this.units)
return this.units[name];
return null;
}
getByLabel(label: string)
{
for (let unit in this.units)
{
if (this.units[unit].label === label)
return this.units[unit];
}
return null;
}
/* Returns a list of all possible roles in a database */
getRoles()
{
var roles: string[] = [];
for (let unit in this.units)
for (let unit in this.blueprints)
{
for (let loadout of this.units[unit].loadouts)
for (let loadout of this.blueprints[unit].loadouts)
{
for (let role of loadout.roles)
{
@ -40,16 +24,36 @@ export class UnitDatabase {
return roles;
}
getLabelsByRole(role: string)
/* Gets a specific blueprint by name */
getByName(name: string)
{
if (name in this.blueprints)
return this.blueprints[name];
return null;
}
/* Gets a specific blueprint by label */
getByLabel(label: string)
{
for (let unit in this.blueprints)
{
if (this.blueprints[unit].label === label)
return this.blueprints[unit];
}
return null;
}
/* Get all blueprints by role */
getByRole(role: string)
{
var units = [];
for (let unit in this.units)
for (let unit in this.blueprints)
{
for (let loadout of this.units[unit].loadouts)
for (let loadout of this.blueprints[unit].loadouts)
{
if (loadout.roles.includes(role) || loadout.roles.includes(role.toLowerCase()))
{
units.push(this.units[unit].label)
units.push(this.blueprints[unit])
break;
}
}
@ -57,10 +61,11 @@ export class UnitDatabase {
return units;
}
getLoadoutNamesByRole(unit: string, role: string)
/* Get the names of all the loadouts for a specific unit and for a specific role */
getLoadoutNamesByRole(name: string, role: string)
{
var loadouts = [];
for (let loadout of this.units[unit].loadouts)
for (let loadout of this.blueprints[name].loadouts)
{
if (loadout.roles.includes(role) || loadout.roles.includes(""))
{
@ -70,37 +75,14 @@ export class UnitDatabase {
return loadouts;
}
getLoadoutsByName(unit: string, loadoutName: string)
/* Get the loadout content from the unit name and loadout name */
getLoadoutByName(name: string, loadoutName: string)
{
for (let loadout of this.units[unit].loadouts)
for (let loadout of this.blueprints[name].loadouts)
{
if (loadout.name === loadoutName)
{
return loadout;
}
}
return null;
}
getNameByLabel(label: string)
{
for (let name in this.units)
{
if (this.units[name].label === label)
{
return name;
}
}
return null;
}
getLabelByName(name: string)
{
return this.units[name] === undefined? name: this.units[name].label;
}
getShortLabelByName(name: string)
{
return this.units[name] === undefined? "U": this.units[name].shortLabel;
}
}

View File

@ -28,11 +28,11 @@
</div>
<div id="unit-visibility-control" class="ol-group">
<button id="unit-visibility-control-aircraft" title="Toggle aircraft' visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "aircraft" }'></button>
<button id="unit-visibility-control-ground" title="Toggle ground units' visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "ground" }'></button>
<button id="unit-visibility-control-aircraft" title="Toggle aircrafts' visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "aircraft" }'></button>
<button id="unit-visibility-control-groundunit" title="Toggle ground units' visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "groundunit" }'></button>
<button id="unit-visibility-control-sam" title="Toggle SAMs' visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "sam" }'></button>
<button id="unit-visibility-control-threat" title="Toggle threat rings' visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "threat" }'></button>
<button id="unit-visibility-control-naval" title="Toggle naval visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "naval" }'></button>
<button id="unit-visibility-control-navyunit" title="Toggle navy units' visibility" data-on-click="toggleUnitVisibility" data-on-click-params='{ "category": "navyunit" }'></button>
</div>
<div id="coalition-visibility-control" class="ol-group ol-group-button-toggle">

View File

@ -170,7 +170,7 @@
<div class="caption">Neutral</div>
<div data-object="unit-ground-mi" data-coalition="">
<div data-object="unit-groundunit" data-coalition="">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">Z</div>
@ -182,7 +182,7 @@
<div class="caption">Blue</div>
<div data-object="unit-ground-mi" data-coalition="blue">
<div data-object="unit-groundunit" data-coalition="blue">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">Y</div>
@ -194,7 +194,7 @@
<div class="caption">Red</div>
<div data-object="unit-ground-mi" data-coalition="red">
<div data-object="unit-groundunit" data-coalition="red">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">X</div>
@ -216,7 +216,7 @@
<div class="caption">Neutral</div>
<div data-object="unit-ground-sam" data-coalition="">
<div data-object="unit-sam" data-coalition="">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">Z</div>
@ -228,7 +228,7 @@
<div class="caption">Blue</div>
<div data-object="unit-ground-sam" data-coalition="blue">
<div data-object="unit-sam" data-coalition="blue">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">Y</div>
@ -240,7 +240,7 @@
<div class="caption">Red</div>
<div data-object="unit-ground-sam" data-coalition="red">
<div data-object="unit-sam" data-coalition="red">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">X</div>
@ -254,14 +254,14 @@
<div class="content">
<div class="content-header">Naval</div>
<div class="content-header">navyunit</div>
<div class="content-body">
<div class="example">
<div class="caption">Neutral</div>
<div data-object="unit-naval" data-coalition="">
<div data-object="unit-navyunit" data-coalition="">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">Z</div>
@ -273,7 +273,7 @@
<div class="caption">Blue</div>
<div data-object="unit-naval" data-coalition="blue">
<div data-object="unit-navyunit" data-coalition="blue">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">Y</div>
@ -285,7 +285,7 @@
<div class="caption">Red</div>
<div data-object="unit-naval" data-coalition="red">
<div data-object="unit-navyunit" data-coalition="red">
<div class="unit-selected-spotlight"></div>
<div class="unit-marker"></div>
<div class="unit-short-label">X</div>
@ -355,7 +355,7 @@
<div class="example">
<div class="caption">0% (empty)</div>
<div data-object="unit-air-aircraft" data-pilot="ai" data-has-low-fuel data-coalition="red" data-is-selected>
<div data-object="unit-aircraft" data-pilot="ai" data-has-low-fuel data-coalition="red" data-is-selected>
<div class="unit-selected-spotlight"></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id">4</div>
@ -379,7 +379,7 @@
<div class="caption">10%</div>
<div data-object="unit-air-aircraft" data-pilot="ai" data-has-low-fuel data-coalition="red" data-is-selected>
<div data-object="unit-aircraft" data-pilot="ai" data-has-low-fuel data-coalition="red" data-is-selected>
<div class="unit-selected-spotlight"></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id">4</div>
@ -402,7 +402,7 @@
<div class="example">
<div class="caption">20%</div>
<div data-object="unit-air-aircraft" data-pilot="ai" data-has-low-fuel data-coalition="red">
<div data-object="unit-aircraft" data-pilot="ai" data-has-low-fuel data-coalition="red">
<div class="unit-selected-spotlight"></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id">4</div>
@ -425,7 +425,7 @@
<div class="example">
<div class="caption">50%</div>
<div data-object="unit-air-aircraft" data-pilot="ai" data-coalition="red" data-is-selected>
<div data-object="unit-aircraft" data-pilot="ai" data-coalition="red" data-is-selected>
<div class="unit-selected-spotlight"></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id">4</div>
@ -448,7 +448,7 @@
<div class="example">
<div class="caption">75%</div>
<div data-object="unit-air-aircraft" data-pilot="ai" data-coalition="red">
<div data-object="unit-aircraft" data-pilot="ai" data-coalition="red">
<div class="unit-selected-spotlight"></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id">4</div>
@ -471,7 +471,7 @@
<div class="example">
<div class="caption">100%</div>
<div data-object="unit-air-aircraft" data-pilot="ai" data-coalition="red" data-is-selected>
<div data-object="unit-aircraft" data-pilot="ai" data-coalition="red" data-is-selected>
<div class="unit-selected-spotlight"></div>
<div class="unit-hotgroup">
<div class="unit-hotgroup-id">4</div>
@ -502,7 +502,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="rtb" data-pilot="ai">
<div data-object="unit-aircraft" data-status="rtb" data-pilot="ai">
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(135deg);"></div>
@ -532,7 +532,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="rtb" data-coalition="blue" data-is-in-hotgroup data-is-selected>
<div data-object="unit-aircraft" data-status="rtb" data-coalition="blue" data-is-in-hotgroup data-is-selected>
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(315deg);"></div>
@ -561,7 +561,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="rtb" data-pilot="ai" data-coalition="red" data-is-in-hotgroup>
<div data-object="unit-aircraft" data-status="rtb" data-pilot="ai" data-coalition="red" data-is-in-hotgroup>
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(270deg);"></div>
@ -591,7 +591,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="hold" data-pilot="ai">
<div data-object="unit-aircraft" data-status="hold" data-pilot="ai">
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(135deg);"></div>
@ -621,7 +621,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="hold" data-coalition="blue" data-is-in-hotgroup data-is-selected>
<div data-object="unit-aircraft" data-status="hold" data-coalition="blue" data-is-in-hotgroup data-is-selected>
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(315deg);"></div>
@ -650,7 +650,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="hold" data-pilot="ai" data-coalition="red" data-is-in-hotgroup>
<div data-object="unit-aircraft" data-status="hold" data-pilot="ai" data-coalition="red" data-is-in-hotgroup>
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(280deg);"></div>
@ -688,7 +688,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="hold" data-pilot="ai" data-is-dead>
<div data-object="unit-aircraft" data-status="hold" data-pilot="ai" data-is-dead>
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(135deg);"></div>
@ -718,7 +718,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="hold" data-coalition="blue" data-is-in-hotgroup data-is-selected data-is-dead>
<div data-object="unit-aircraft" data-status="hold" data-coalition="blue" data-is-in-hotgroup data-is-selected data-is-dead>
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(315deg);"></div>
@ -747,7 +747,7 @@
<div class="example">
<div data-object="unit-air-aircraft" data-status="hold" data-pilot="ai" data-coalition="red" data-is-dead>
<div data-object="unit-aircraft" data-status="hold" data-pilot="ai" data-coalition="red" data-is-dead>
<div class="unit-selected-spotlight"></div>
<div class="unit-status"></div>
<div class="unit-vvi" style="height: 50px; transform:rotate(280deg);"></div>
@ -790,7 +790,7 @@
<div class="example">
<div data-object="unit-weapon-missile">
<div data-object="unit-missile">
<div class="unit-marker"></div>
</div>
@ -799,7 +799,7 @@
<div class="example">
<div data-object="unit-weapon-missile" data-coalition="blue">
<div data-object="unit-missile" data-coalition="blue">
<div class="unit-marker" style="transform: rotate( 90deg );"></div>
</div>
@ -807,7 +807,7 @@
<div class="example">
<div data-object="unit-weapon-missile" data-coalition="red">
<div data-object="unit-missile" data-coalition="red">
<div class="unit-marker" style="transform: rotate( 225deg );"></div>
</div>

View File

@ -3,7 +3,7 @@
<div id="unit-selection">
<div id="unit-identification">
<div data-object="unit-air-aircraft">
<div data-object="unit-aircraft">
<div class="unit-marker"></div>
<div class="unit-short-label"></div>
</div>