Merge branch '111-measurebox-shows-000-when-measuring-north-should-read-360' of https://github.com/Pax1601/DCSOlympus into 111-measurebox-shows-000-when-measuring-north-should-read-360

This commit is contained in:
PeekabooSteam 2023-03-31 20:31:45 +01:00
commit ee6fadfb36
107 changed files with 3907 additions and 993 deletions

View File

@ -2,6 +2,7 @@ var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var fs = require('fs');
var indexRouter = require('./routes/index');
var uikitRouter = require('./routes/uikit');
@ -21,12 +22,14 @@ app.use('/uikit', uikitRouter);
app.set('view engine', 'ejs');
let rawdata = fs.readFileSync('../olympus.json');
let config = JSON.parse(rawdata);
app.get('/config', (req, res) => res.send(config));
module.exports = app;
const DemoDataGenerator = require('./demo.js');
var demoDataGenerator = new DemoDataGenerator(10);
app.get('/demo/units', (req, res) => demoDataGenerator.units(req, res));
app.get('/demo/logs', (req, res) => demoDataGenerator.logs(req, res));
app.get('/demo/bullseyes', (req, res) => demoDataGenerator.bullseyes(req, res));

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.80,
altitude: 2000,
heading: 0.5,
speed: 300
@ -492,16 +492,102 @@ 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.6,
speed: 300
},
missionData: {
fuel: 0.5,
flags: {human: false},
ammo: [],
targets: [],
hasTask: true,
coalition: "red"
},
formationData: {
formation: "Echelon",
isLeader: false,
isWingman: false,
leaderID: null,
wingmen: [],
wingmenIDs: []
},
taskData: {
currentTask: "Example task",
activePath: undefined,
targetSpeed: 400,
targetAltitude: 3000
},
optionsData: {
ROE: "None",
reactionToThreat: "None",
}
},
["13"]:{
baseData: {
AI: true,
name: "CVN-75",
unitName: "Olympus 1-11",
groupName: "Group 1",
alive: true,
category: "Bomb",
},
flightData: {
latitude: 37.05,
longitude: -115.8,
altitude: 2000,
heading: 0.5,
speed: 300
},
missionData: {
fuel: 0.5,
flags: {human: false},
ammo: [],
targets: [],
hasTask: true,
coalition: "blue"
},
formationData: {
formation: "Echelon",
isLeader: false,
isWingman: false,
leaderID: null,
wingmen: [],
wingmenIDs: []
},
taskData: {
currentTask: "Example task",
activePath: undefined,
targetSpeed: 400,
targetAltitude: 3000
},
optionsData: {
ROE: "None",
reactionToThreat: "None",
}
},
["14"]:{
baseData: {
AI: true,
name: "CVN-75",
unitName: "Olympus 1-12",
groupName: "Group 1",
alive: true,
category: "Bomb",
},
flightData: {
latitude: 37.05,
longitude: -115.75,
altitude: 2000,
heading: 0.6,
speed: 300
},
missionData: {
fuel: 0.5,
flags: {human: false},

View File

@ -2,7 +2,7 @@
"name": "DCSOlympus",
"node-main": "./bin/www",
"main": "http://localhost:3000",
"version": "0.1.0-alpha",
"version": "0.1.1-alpha",
"private": true,
"scripts": {
"copy": "copy .\\node_modules\\leaflet\\dist\\leaflet.css .\\public\\stylesheets\\leaflet.css",

Binary file not shown.

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);
}
@ -666,101 +666,93 @@ body[data-hide-naval] #unit-visibility-control-naval {
}
#roe-buttons-container button::before, #reaction-to-threat-buttons-container button::before {
background-position:center;
background-repeat: no-repeat;
background-size:16px 16px;
content: "";
display:block;
height:16px;
width:16px;
height:24px;
width:24px;
}
#roe-buttons-container button[title="Free"]::before {
background-image: url( "/themes/olympus/images/icons_roe_free_light.svg");
}
#roe-buttons-container button[title="Designated free"]::before {
#roe-buttons-container button[title="Hold"]::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_light.svg");
}
#roe-buttons-container button[title="Designated"]::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_light.svg");
#roe-buttons-container button[title="Hold"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_dark.svg");
}
/**/
#roe-buttons-container button[title="Return"]::before {
background-image: url( "/themes/olympus/images/icons_roe_defend_light.svg");
}
#roe-buttons-container button[title="Return"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_defend_dark.svg");
}
/**/
#roe-buttons-container button[title="Designated"]::before {
background-image: url( "/themes/olympus/images/icons_roe_target_light.svg");
}
#roe-buttons-container button[title="Hold"]::before {
background-image: url( "/themes/olympus/images/icons_actions_nothing_light.svg");
#roe-buttons-container button[title="Designated"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_target_dark.svg");
}
/**/
#roe-buttons-container button[title="Free"]::before {
background-image: url( "/themes/olympus/images/icons_roe_free_light.svg");
}
#roe-buttons-container button[title="Free"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_free_dark.svg");
}
#roe-buttons-container button[title="Designated free"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_dark.svg");
}
#roe-buttons-container button[title="Designated"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_dark.svg");
}
#roe-buttons-container button[title="Return"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_target_dark.svg");
}
#roe-buttons-container button[title="Hold"].selected::before {
background-image: url( "/themes/olympus/images/icons_actions_nothing_dark.svg");
}
/****************************************************************************************/
#reaction-to-threat-buttons-container button[title="None"]::before {
background-image: url( "/themes/olympus/images/icons_actions_nothing_light.svg");
background-image: url( "/themes/olympus/images/icons_threat_nothing_light.svg");
}
#reaction-to-threat-buttons-container button[title="Passive"]::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_light.svg");
}
#reaction-to-threat-buttons-container button[title="Evade"]::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_light.svg");
}
#reaction-to-threat-buttons-container button[title="Escape"]::before {
background-image: url( "/themes/olympus/images/icons_threat_retreat_light.svg");
}
#reaction-to-threat-buttons-container button[title="Abort"]::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_light.svg");
}
#reaction-to-threat-buttons-container button[title="None"]::before {
background-image: url( "/themes/olympus/images/icons_actions_nothing_light.svg");
}
#reaction-to-threat-buttons-container button[title="None"].selected::before {
background-image: url( "/themes/olympus/images/icons_actions_nothing_dark.svg");
background-image: url( "/themes/olympus/images/icons_threat_nothing_dark.svg");
}
/**/
#reaction-to-threat-buttons-container button[title="Passive"]::before {
background-image: url( "/themes/olympus/images/icons_threat_cms_light.svg");
}
#reaction-to-threat-buttons-container button[title="Passive"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_dark.svg");
background-image: url( "/themes/olympus/images/icons_threat_cms_dark.svg");
}
/**/
#reaction-to-threat-buttons-container button[title="Evade"]::before {
background-image: url( "/themes/olympus/images/icons_threat_defend_light.svg");
}
#reaction-to-threat-buttons-container button[title="Evade"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_dark.svg");
background-image: url( "/themes/olympus/images/icons_threat_defend_dark.svg");
}
#reaction-to-threat-buttons-container button[title="Escape"].selected::before {
background-image: url( "/themes/olympus/images/icons_threat_retreat_dark.svg");
}
#reaction-to-threat-buttons-container button[title="Abort"].selected::before {
background-image: url( "/themes/olympus/images/icons_roe_stop_dark.svg");
}
/****************************************************************************************/
#splash-screen {

View File

@ -13,7 +13,7 @@ body.feature-forceShowUnitControlPanel #unit-control-panel {
}
#unit-control-panel #selected-units-container {
align-items: center;
align-items: left;
border-radius: var( --border-radius-md );
display:flex;
flex-direction: column;
@ -21,23 +21,66 @@ body.feature-forceShowUnitControlPanel #unit-control-panel {
}
#unit-control-panel #selected-units-container button {
font-size: 12px;
align-items: center;
border-radius: var( --border-radius-lg );
display:flex;
font-size: 11px;
height:30px;
padding:8px 0;
position: relative;
width:90%;
}
#unit-control-panel #selected-units-container button::before {
background-color: var( --accent-light-blue );
border-radius: var( --border-radius-sm );
background-color: var( --primary-grey );
border-radius: var( --border-radius-md );
content: attr( data-short-label );
padding:4px;
position: absolute;
translate:-40px -4px;
margin:0 5px;
padding:4px 6px;
white-space: nowrap;
width:fit-content;
}
#unit-control-panel #selected-units-container button[data-coalition="blue"]::before {
background-color: var( --accent-light-blue );
}
#unit-control-panel #selected-units-container button[data-coalition="red"]::before {
background-color: var( --accent-light-red );
color:var(--secondary-red-outline)
}
#unit-control-panel #selected-units-container button::after {
border-radius: var( --border-radius-sm );
content: attr( data-callsign );
display: block;
overflow: hidden;
padding:4px;
padding-left:0;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
width:fit-content;
}
#unit-control-panel #selected-units-container button:hover::after {
overflow: visible;
text-overflow:initial;
}
#unit-control-panel #selected-units-container button:hover::after {
background-color: var( --background-grey );
}
#unit-control-panel #selected-units-container button[data-coalition="blue"]:hover::after {
background-color: var( --primary-blue );
}
#unit-control-panel #selected-units-container button[data-coalition="red"]:hover::after {
background-color: var( --primary-red );
}
#unit-control-panel h4 {

View File

@ -10,13 +10,14 @@
#unit-info-panel #unit-name {
line-height: 18px;
margin-bottom:10px;
padding:0px 0;
margin-bottom:4px;
}
#unit-info-panel #current-task {
border-radius: var( --border-radius-lg );
margin-top:15px;
margin-top:8px;
padding:6px 16px;
}
#unit-info-panel #current-task::after {
@ -25,36 +26,98 @@
}
#unit-info-panel #loadout-data {
max-width: 250px;
#loadout-container {
width:250px;
}
#unit-info-panel #loadout-data .ol-data-grid {
margin: 6px 0;
#loadout {
display:flex;
}
#unit-info-panel #loadout-data .ol-data-grid dt:first-child {
text-indent: 5px;
#loadout-silhouette {
align-items: center;
display:flex;
justify-content: center;
width:55%;
}
#unit-info-panel #loadout-data .ol-data-grid dt:first-child::before {
#loadout-silhouette::before {
background-image: var( --loadout-background-image );
background-repeat: no-repeat;
background-size:75px 75px;
content:"";
display:block;
filter: invert( 100% );
height:75px;
translate:-10px 0;
width:75px;
}
#loadout-items {
align-self: center;
display:flex;
flex-flow: column nowrap;
row-gap: 8px;
text-align: center;
width:45%;
}
#loadout-items > * {
align-items: center;
column-gap: 8px;
display:flex;
white-space: nowrap;
}
#loadout-items > *::before {
align-items: center;
background-color: var( --secondary-light-grey );
border-radius: 50%;
content: attr( data-qty );
display:flex;
font-weight: var( --font-weight-bolder );
justify-content: center;
height:20px;
width:20px;
}
#loadout-items > *::after {
content: attr( data-item );
}
#fuel-percentage {
align-items: center;
display:flex;
}
#fuel-percentage::before {
content: url( /images/icons/fuel.svg );
display:inline-block;
filter:invert(100%);
height:16px;
text-indent:5px;
translate:-10px 5%;
margin-right:6px;
width:16px;
}
#unit-info-panel #loadout-fuel-level::after {
content: attr( data-fuel-level ) "%";
#fuel-percentage::after {
content: attr( data-percentage ) "%";
}
#unit-info-panel #loadout-container .loadout-item {
background-color: black;
#fuel-display {
background-color: var( --background-grey );
border-radius: var( --border-radius-md );
height:6px;
margin-top:4px;
overflow: hidden;
width:90%;
}
#fuel-display #fuel-bar {
border-radius: var( --border-radius-md );
height:100%;
}
#unit-info-panel #loadout-container .loadout-item::before {
content: attr( data-loadout-qty )'\d7 ' attr( data-loadout-item ) ;
}

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 );
}
@ -310,24 +298,36 @@
/* Weapons */
[data-object|="unit-weapon"] {
[data-object|="unit-missile"], [data-object|="unit-bomb"] {
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-missile"][data-coalition="red"] .unit-marker {
background-image: var( --unit-missile-marker-red-url );
}
[data-object|="unit-weapon-missile"][data-coalition="red"] .unit-marker {
background-image: var( --unit-weapons-missile-marker-red-url );
[data-object|="unit-bomb"] .unit-marker {
background-image: var( --unit-bomb-marker-neutral-url );
height: var( --unit-bomb-marker-height );
width: var( --unit-bomb-marker-width );
}
[data-object|="unit-bomb"][data-coalition="blue"] .unit-marker {
background-image: var( --unit-bomb-marker-blue-url );
}
[data-object|="unit-bomb"][data-coalition="red"] .unit-marker {
background-image: var( --unit-bomb-marker-red-url );
}
@ -344,28 +344,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 +377,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 +509,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

@ -0,0 +1,3 @@
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.86 33.5C19.8652 26 20.293 15 24.9991 12C29.7052 15.5 29.7052 27 27.1382 33.5C27.1382 33.5 28.7905 34.0138 29.2774 35C29.7783 36.0148 29.2774 38 29.2774 38H20.721C20.721 38 20.2237 36.0172 20.721 35C21.2771 33.8627 22.86 33.5 22.86 33.5Z" fill="#5CA7FF" stroke="#082E44" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 405 B

View File

@ -0,0 +1,3 @@
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.86 33.5C19.8652 26 20.293 15 24.9991 12C29.7052 15.5 29.7052 27 27.1382 33.5C27.1382 33.5 28.7905 34.0138 29.2774 35C29.7783 36.0148 29.2774 38 29.2774 38H20.721C20.721 38 20.2237 36.0172 20.721 35C21.2771 33.8627 22.86 33.5 22.86 33.5Z" fill="#CFD9E8" stroke="#2F2F2F" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 405 B

View File

@ -0,0 +1,3 @@
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.86 33.5C19.8652 26 20.293 15 24.9991 12C29.7052 15.5 29.7052 27 27.1382 33.5C27.1382 33.5 28.7905 34.0138 29.2774 35C29.7783 36.0148 29.2774 38 29.2774 38H20.721C20.721 38 20.2237 36.0172 20.721 35C21.2771 33.8627 22.86 33.5 22.86 33.5Z" fill="#FF5858" stroke="#262222" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 405 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: 379 B

After

Width:  |  Height:  |  Size: 379 B

View File

@ -0,0 +1,4 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.4955 18.2238C12.7115 15.3416 13.888 9.51496 16.8654 9.26602C20.5872 8.95485 25.1646 8.07764 24.7964 21.0345" stroke="#202831" stroke-linecap="round" stroke-dasharray="2 2"/>
<path d="M11.8419 26.3021C11.8812 26.3949 11.9723 26.4546 12.0729 26.4546C12.1735 26.4546 12.2646 26.3949 12.3039 26.3021L12.997 24.685C13.0504 24.5592 13.0787 24.4257 13.0787 24.2889L13.0787 23.0788L15.3418 21.7587L15.3418 22.0541C15.3418 22.2631 15.51 22.4313 15.719 22.4313C15.928 22.4313 16.0962 22.2631 16.0962 22.0541L16.0962 21.174L16.0962 20.6711L16.0962 20.2939C16.0962 20.0849 15.928 19.9167 15.719 19.9167C15.51 19.9167 15.3418 20.0849 15.3418 20.2939L15.3418 20.4197L13.0787 20.4197L13.0787 19.9058L13.9981 19.0995C14.0531 19.0523 14.0845 18.9832 14.0845 18.9109L14.0845 18.6595C14.0845 18.5212 13.9714 18.408 13.8331 18.408L12.3244 18.408L12.3244 19.4138C12.3244 19.5521 12.2112 19.6653 12.0729 19.6653C11.9346 19.6653 11.8214 19.5521 11.8214 19.4138L11.8214 18.408L10.3127 18.408C10.1744 18.408 10.0613 18.5212 10.0613 18.6595L10.0613 18.9109C10.0613 18.9832 10.0926 19.0523 10.1477 19.0995L11.0671 19.9058L11.0671 20.4197L8.80398 20.4197L8.80398 20.2939C8.80398 20.0849 8.6358 19.9167 8.42679 19.9167C8.21778 19.9167 8.04961 20.0849 8.04961 20.2939L8.04961 20.6711L8.04961 21.174L8.04961 22.0541C8.04961 22.2631 8.21778 22.4313 8.42679 22.4313C8.6358 22.4313 8.80398 22.2631 8.80398 22.0541L8.80398 21.7587L11.0671 23.0788L11.0671 24.2889C11.0671 24.4257 11.0954 24.5592 11.1488 24.685L11.8419 26.3021Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,4 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.4955 18.2238C12.7115 15.3416 13.888 9.51496 16.8654 9.26602C20.5872 8.95485 25.1646 8.07764 24.7964 21.0345" stroke="#5CA7FF" stroke-linecap="round" stroke-dasharray="2 2"/>
<path d="M11.8419 26.3021C11.8812 26.3949 11.9723 26.4546 12.0729 26.4546C12.1735 26.4546 12.2646 26.3949 12.3039 26.3021L12.997 24.685C13.0504 24.5592 13.0787 24.4257 13.0787 24.2889L13.0787 23.0788L15.3418 21.7587L15.3418 22.0541C15.3418 22.2631 15.51 22.4313 15.719 22.4313C15.928 22.4313 16.0962 22.2631 16.0962 22.0541L16.0962 21.174L16.0962 20.6711L16.0962 20.2939C16.0962 20.0849 15.928 19.9167 15.719 19.9167C15.51 19.9167 15.3418 20.0849 15.3418 20.2939L15.3418 20.4197L13.0787 20.4197L13.0787 19.9058L13.9981 19.0995C14.0531 19.0523 14.0845 18.9832 14.0845 18.9109L14.0845 18.6595C14.0845 18.5212 13.9714 18.408 13.8331 18.408L12.3244 18.408L12.3244 19.4138C12.3244 19.5521 12.2112 19.6653 12.0729 19.6653C11.9346 19.6653 11.8214 19.5521 11.8214 19.4138L11.8214 18.408L10.3127 18.408C10.1744 18.408 10.0613 18.5212 10.0613 18.6595L10.0613 18.9109C10.0613 18.9832 10.0926 19.0523 10.1477 19.0995L11.0671 19.9058L11.0671 20.4197L8.80398 20.4197L8.80398 20.2939C8.80398 20.0849 8.6358 19.9167 8.42679 19.9167C8.21778 19.9167 8.04961 20.0849 8.04961 20.2939L8.04961 20.6711L8.04961 21.174L8.04961 22.0541C8.04961 22.2631 8.21778 22.4313 8.42679 22.4313C8.6358 22.4313 8.80398 22.2631 8.80398 22.0541L8.80398 21.7587L11.0671 23.0788L11.0671 24.2889C11.0671 24.4257 11.0954 24.5592 11.1488 24.685L11.8419 26.3021Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.582 14.7988C21.9629 14.4473 21.9629 13.832 21.582 13.4805C21.2305 13.0996 20.6152 13.0996 20.2637 13.4805L17.1875 16.5566L14.082 13.4805C13.7305 13.0996 13.1152 13.0996 12.7637 13.4805C12.3828 13.832 12.3828 14.4473 12.7637 14.7988L15.8398 17.875L12.7637 20.9805C12.3828 21.332 12.3828 21.9473 12.7637 22.2988C13.1152 22.6797 13.7305 22.6797 14.082 22.2988L17.1875 19.2227L20.2637 22.2988C20.6152 22.6797 21.2305 22.6797 21.582 22.2988C21.9629 21.9473 21.9629 21.332 21.582 20.9805L18.5059 17.875L21.582 14.7988Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 647 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.582 14.7988C21.9629 14.4473 21.9629 13.832 21.582 13.4805C21.2305 13.0996 20.6152 13.0996 20.2637 13.4805L17.1875 16.5566L14.082 13.4805C13.7305 13.0996 13.1152 13.0996 12.7637 13.4805C12.3828 13.832 12.3828 14.4473 12.7637 14.7988L15.8398 17.875L12.7637 20.9805C12.3828 21.332 12.3828 21.9473 12.7637 22.2988C13.1152 22.6797 13.7305 22.6797 14.082 22.2988L17.1875 19.2227L20.2637 22.2988C20.6152 22.6797 21.2305 22.6797 21.582 22.2988C21.9629 21.9473 21.9629 21.332 21.582 20.9805L18.5059 17.875L21.582 14.7988Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 647 B

View File

@ -1,3 +1,3 @@
<svg width="15" height="19" viewBox="0 0 15 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.9375 4.62549C0.9375 3.6001 1.75781 2.75049 2.8125 2.75049H7.5C8.52539 2.75049 9.375 3.6001 9.375 4.62549V10.2505H9.60938C11.0156 10.2505 12.1875 11.4224 12.1875 12.8286V13.7661C12.1875 14.1763 12.4805 14.4692 12.8906 14.4692C13.2715 14.4692 13.5938 14.1763 13.5938 13.7661V9.25439C12.7734 9.04932 12.1875 8.31689 12.1875 7.43799V5.56299L11.25 4.62549C10.9863 4.39111 10.9863 3.95166 11.25 3.68799C11.4844 3.45361 11.9238 3.45361 12.1875 3.68799L14.4434 5.97314C14.7949 6.32471 15 6.79346 15 7.2915V7.67236V8.37549V9.31299V13.7661C15 14.938 14.0332 15.8755 12.8906 15.8755C11.7188 15.8755 10.7812 14.938 10.7812 13.7661V12.8286C10.7812 12.1841 10.2539 11.6567 9.60938 11.6567H9.375V15.8755C9.87305 15.8755 10.3125 16.3149 10.3125 16.813C10.3125 17.3403 9.87305 17.7505 9.375 17.7505H0.9375C0.410156 17.7505 0 17.3403 0 16.813C0 16.3149 0.410156 15.8755 0.9375 15.8755V4.62549ZM2.8125 5.09424V7.90674C2.8125 8.17041 3.01758 8.37549 3.28125 8.37549H7.03125C7.26562 8.37549 7.5 8.17041 7.5 7.90674V5.09424C7.5 4.85986 7.26562 4.62549 7.03125 4.62549H3.28125C3.01758 4.62549 2.8125 4.85986 2.8125 5.09424Z" fill="#202831"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.25 13.5C12.25 12.6797 12.9062 12 13.75 12H17.5C18.3203 12 19 12.6797 19 13.5V18H19.1875C20.3125 18 21.25 18.9375 21.25 20.0625V20.8125C21.25 21.1406 21.4844 21.375 21.8125 21.375C22.1172 21.375 22.375 21.1406 22.375 20.8125V17.2031C21.7188 17.0391 21.25 16.4531 21.25 15.75V14.25L20.5 13.5C20.2891 13.3125 20.2891 12.9609 20.5 12.75C20.6875 12.5625 21.0391 12.5625 21.25 12.75L23.0547 14.5781C23.3359 14.8594 23.5 15.2344 23.5 15.6328V15.9375V16.5V17.25V20.8125C23.5 21.75 22.7266 22.5 21.8125 22.5C20.875 22.5 20.125 21.75 20.125 20.8125V20.0625C20.125 19.5469 19.7031 19.125 19.1875 19.125H19V22.5C19.3984 22.5 19.75 22.8516 19.75 23.25C19.75 23.6719 19.3984 24 19 24H12.25C11.8281 24 11.5 23.6719 11.5 23.25C11.5 22.8516 11.8281 22.5 12.25 22.5V13.5ZM13.75 13.875V16.125C13.75 16.3359 13.9141 16.5 14.125 16.5H17.125C17.3125 16.5 17.5 16.3359 17.5 16.125V13.875C17.5 13.6875 17.3125 13.5 17.125 13.5H14.125C13.9141 13.5 13.75 13.6875 13.75 13.875Z" fill="#202831"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,3 +1,3 @@
<svg width="15" height="19" viewBox="0 0 15 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.9375 4.62549C0.9375 3.6001 1.75781 2.75049 2.8125 2.75049H7.5C8.52539 2.75049 9.375 3.6001 9.375 4.62549V10.2505H9.60938C11.0156 10.2505 12.1875 11.4224 12.1875 12.8286V13.7661C12.1875 14.1763 12.4805 14.4692 12.8906 14.4692C13.2715 14.4692 13.5938 14.1763 13.5938 13.7661V9.25439C12.7734 9.04932 12.1875 8.31689 12.1875 7.43799V5.56299L11.25 4.62549C10.9863 4.39111 10.9863 3.95166 11.25 3.68799C11.4844 3.45361 11.9238 3.45361 12.1875 3.68799L14.4434 5.97314C14.7949 6.32471 15 6.79346 15 7.2915V7.67236V8.37549V9.31299V13.7661C15 14.938 14.0332 15.8755 12.8906 15.8755C11.7188 15.8755 10.7812 14.938 10.7812 13.7661V12.8286C10.7812 12.1841 10.2539 11.6567 9.60938 11.6567H9.375V15.8755C9.87305 15.8755 10.3125 16.3149 10.3125 16.813C10.3125 17.3403 9.87305 17.7505 9.375 17.7505H0.9375C0.410156 17.7505 0 17.3403 0 16.813C0 16.3149 0.410156 15.8755 0.9375 15.8755V4.62549ZM2.8125 5.09424V7.90674C2.8125 8.17041 3.01758 8.37549 3.28125 8.37549H7.03125C7.26562 8.37549 7.5 8.17041 7.5 7.90674V5.09424C7.5 4.85986 7.26562 4.62549 7.03125 4.62549H3.28125C3.01758 4.62549 2.8125 4.85986 2.8125 5.09424Z" fill="#5CA7FF"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.25 13.5C12.25 12.6797 12.9062 12 13.75 12H17.5C18.3203 12 19 12.6797 19 13.5V18H19.1875C20.3125 18 21.25 18.9375 21.25 20.0625V20.8125C21.25 21.1406 21.4844 21.375 21.8125 21.375C22.1172 21.375 22.375 21.1406 22.375 20.8125V17.2031C21.7188 17.0391 21.25 16.4531 21.25 15.75V14.25L20.5 13.5C20.2891 13.3125 20.2891 12.9609 20.5 12.75C20.6875 12.5625 21.0391 12.5625 21.25 12.75L23.0547 14.5781C23.3359 14.8594 23.5 15.2344 23.5 15.6328V15.9375V16.5V17.25V20.8125C23.5 21.75 22.7266 22.5 21.8125 22.5C20.875 22.5 20.125 21.75 20.125 20.8125V20.0625C20.125 19.5469 19.7031 19.125 19.1875 19.125H19V22.5C19.3984 22.5 19.75 22.8516 19.75 23.25C19.75 23.6719 19.3984 24 19 24H12.25C11.8281 24 11.5 23.6719 11.5 23.25C11.5 22.8516 11.8281 22.5 12.25 22.5V13.5ZM13.75 13.875V16.125C13.75 16.3359 13.9141 16.5 14.125 16.5H17.125C17.3125 16.5 17.5 16.3359 17.5 16.125V13.875C17.5 13.6875 17.3125 13.5 17.125 13.5H14.125C13.9141 13.5 13.75 13.6875 13.75 13.875Z" fill="#5CA7FF"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,3 +1,3 @@
<svg width="17" height="19" viewBox="0 0 17 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.8457 10.2505C16.8457 10.7778 16.4062 11.188 15.9082 11.188H14.9707L15 15.8755C15 15.9634 15 16.0513 15 16.1099V16.5786C15 17.2524 14.4727 17.7505 13.8281 17.7505H13.3594C13.3008 17.7505 13.2715 17.7505 13.2422 17.7505C13.2129 17.7505 13.1543 17.7505 13.125 17.7505H12.1875H11.4844C10.8105 17.7505 10.3125 17.2524 10.3125 16.5786V15.8755V14.0005C10.3125 13.5024 9.87305 13.063 9.375 13.063H7.5C6.97266 13.063 6.5625 13.5024 6.5625 14.0005V15.8755V16.5786C6.5625 17.2524 6.03516 17.7505 5.39062 17.7505H4.6875H3.75C3.69141 17.7505 3.66211 17.7505 3.60352 17.7505C3.57422 17.7505 3.54492 17.7505 3.51562 17.7505H3.04688C2.37305 17.7505 1.875 17.2524 1.875 16.5786V13.2974C1.875 13.2974 1.875 13.2681 1.875 13.2388V11.188H0.9375C0.410156 11.188 0 10.7778 0 10.2505C0 9.98682 0.0878906 9.75244 0.292969 9.54736L7.79297 2.98486C7.99805 2.77979 8.23242 2.75049 8.4375 2.75049C8.64258 2.75049 8.87695 2.80908 9.05273 2.95557L16.5234 9.54736C16.7578 9.75244 16.875 9.98682 16.8457 10.2505Z" fill="#202831"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.5996 17.625C24.5996 18.082 24.2188 18.4375 23.7871 18.4375H22.9746L23 22.5C23 22.5762 23 22.6523 23 22.7031V23.1094C23 23.6934 22.543 24.125 21.9844 24.125H21.5781C21.5273 24.125 21.502 24.125 21.4766 24.125C21.4512 24.125 21.4004 24.125 21.375 24.125H20.5625H19.9531C19.3691 24.125 18.9375 23.6934 18.9375 23.1094V22.5V20.875C18.9375 20.4434 18.5566 20.0625 18.125 20.0625H16.5C16.043 20.0625 15.6875 20.4434 15.6875 20.875V22.5V23.1094C15.6875 23.6934 15.2305 24.125 14.6719 24.125H14.0625H13.25C13.1992 24.125 13.1738 24.125 13.123 24.125C13.0977 24.125 13.0723 24.125 13.0469 24.125H12.6406C12.0566 24.125 11.625 23.6934 11.625 23.1094V20.2656C11.625 20.2656 11.625 20.2402 11.625 20.2148V18.4375H10.8125C10.3555 18.4375 10 18.082 10 17.625C10 17.3965 10.0762 17.1934 10.2539 17.0156L16.7539 11.3281C16.9316 11.1504 17.1348 11.125 17.3125 11.125C17.4902 11.125 17.6934 11.1758 17.8457 11.3027L24.3203 17.0156C24.5234 17.1934 24.625 17.3965 24.5996 17.625Z" fill="#202831"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,3 +1,3 @@
<svg width="17" height="19" viewBox="0 0 17 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.8457 10.2505C16.8457 10.7778 16.4062 11.188 15.9082 11.188H14.9707L15 15.8755C15 15.9634 15 16.0513 15 16.1099V16.5786C15 17.2524 14.4727 17.7505 13.8281 17.7505H13.3594C13.3008 17.7505 13.2715 17.7505 13.2422 17.7505C13.2129 17.7505 13.1543 17.7505 13.125 17.7505H12.1875H11.4844C10.8105 17.7505 10.3125 17.2524 10.3125 16.5786V15.8755V14.0005C10.3125 13.5024 9.87305 13.063 9.375 13.063H7.5C6.97266 13.063 6.5625 13.5024 6.5625 14.0005V15.8755V16.5786C6.5625 17.2524 6.03516 17.7505 5.39062 17.7505H4.6875H3.75C3.69141 17.7505 3.66211 17.7505 3.60352 17.7505C3.57422 17.7505 3.54492 17.7505 3.51562 17.7505H3.04688C2.37305 17.7505 1.875 17.2524 1.875 16.5786V13.2974C1.875 13.2974 1.875 13.2681 1.875 13.2388V11.188H0.9375C0.410156 11.188 0 10.7778 0 10.2505C0 9.98682 0.0878906 9.75244 0.292969 9.54736L7.79297 2.98486C7.99805 2.77979 8.23242 2.75049 8.4375 2.75049C8.64258 2.75049 8.87695 2.80908 9.05273 2.95557L16.5234 9.54736C16.7578 9.75244 16.875 9.98682 16.8457 10.2505Z" fill="#5CA7FF"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.5996 17.625C24.5996 18.082 24.2188 18.4375 23.7871 18.4375H22.9746L23 22.5C23 22.5762 23 22.6523 23 22.7031V23.1094C23 23.6934 22.543 24.125 21.9844 24.125H21.5781C21.5273 24.125 21.502 24.125 21.4766 24.125C21.4512 24.125 21.4004 24.125 21.375 24.125H20.5625H19.9531C19.3691 24.125 18.9375 23.6934 18.9375 23.1094V22.5V20.875C18.9375 20.4434 18.5566 20.0625 18.125 20.0625H16.5C16.043 20.0625 15.6875 20.4434 15.6875 20.875V22.5V23.1094C15.6875 23.6934 15.2305 24.125 14.6719 24.125H14.0625H13.25C13.1992 24.125 13.1738 24.125 13.123 24.125C13.0977 24.125 13.0723 24.125 13.0469 24.125H12.6406C12.0566 24.125 11.625 23.6934 11.625 23.1094V20.2656C11.625 20.2656 11.625 20.2402 11.625 20.2148V18.4375H10.8125C10.3555 18.4375 10 18.082 10 17.625C10 17.3965 10.0762 17.1934 10.2539 17.0156L16.7539 11.3281C16.9316 11.1504 17.1348 11.125 17.3125 11.125C17.4902 11.125 17.6934 11.1758 17.8457 11.3027L24.3203 17.0156C24.5234 17.1934 24.625 17.3965 24.5996 17.625Z" fill="#5CA7FF"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,5 +1,5 @@
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.7297 12.0271C24.6906 11.9349 24.6 11.8755 24.5 11.8755C24.4 11.8755 24.3094 11.9349 24.2703 12.0271L23.5812 13.6349C23.5281 13.7599 23.5 13.8927 23.5 14.0286V15.2318L21.25 16.5442V16.2505C21.25 16.0427 21.0828 15.8755 20.875 15.8755C20.6672 15.8755 20.5 16.0427 20.5 16.2505V17.1255V17.6255V18.0005C20.5 18.2083 20.6672 18.3755 20.875 18.3755C21.0828 18.3755 21.25 18.2083 21.25 18.0005V17.8755H23.5V18.3864L22.5859 19.188C22.5312 19.2349 22.5 19.3036 22.5 19.3755V19.6255C22.5 19.763 22.6125 19.8755 22.75 19.8755H24.25V18.8755C24.25 18.738 24.3625 18.6255 24.5 18.6255C24.6375 18.6255 24.75 18.738 24.75 18.8755V19.8755H26.25C26.3875 19.8755 26.5 19.763 26.5 19.6255V19.3755C26.5 19.3036 26.4688 19.2349 26.4141 19.188L25.5 18.3864V17.8755H27.75V18.0005C27.75 18.2083 27.9172 18.3755 28.125 18.3755C28.3328 18.3755 28.5 18.2083 28.5 18.0005V17.6255V17.1255V16.2505C28.5 16.0427 28.3328 15.8755 28.125 15.8755C27.9172 15.8755 27.75 16.0427 27.75 16.2505V16.5442L25.5 15.2318V14.0286C25.5 13.8927 25.4719 13.7599 25.4187 13.6349L24.7297 12.0271Z" fill="#202831"/>
<path d="M7.72969 12.0271C7.69063 11.9349 7.6 11.8755 7.5 11.8755C7.4 11.8755 7.30938 11.9349 7.27031 12.0271L6.58125 13.6349C6.52812 13.7599 6.5 13.8927 6.5 14.0286V15.2318L4.25 16.5442V16.2505C4.25 16.0427 4.08281 15.8755 3.875 15.8755C3.66719 15.8755 3.5 16.0427 3.5 16.2505V17.1255V17.6255V18.0005C3.5 18.2083 3.66719 18.3755 3.875 18.3755C4.08281 18.3755 4.25 18.2083 4.25 18.0005V17.8755H6.5V18.3864L5.58594 19.188C5.53125 19.2349 5.5 19.3036 5.5 19.3755V19.6255C5.5 19.763 5.6125 19.8755 5.75 19.8755H7.25V18.8755C7.25 18.738 7.3625 18.6255 7.5 18.6255C7.6375 18.6255 7.75 18.738 7.75 18.8755V19.8755H9.25C9.3875 19.8755 9.5 19.763 9.5 19.6255V19.3755C9.5 19.3036 9.46875 19.2349 9.41406 19.188L8.5 18.3864V17.8755H10.75V18.0005C10.75 18.2083 10.9172 18.3755 11.125 18.3755C11.3328 18.3755 11.5 18.2083 11.5 18.0005V17.6255V17.1255V16.2505C11.5 16.0427 11.3328 15.8755 11.125 15.8755C10.9172 15.8755 10.75 16.0427 10.75 16.2505V16.5442L8.5 15.2318V14.0286C8.5 13.8927 8.47187 13.7599 8.41875 13.6349L7.72969 12.0271Z" fill="#202831"/>
<path d="M14 17.3755H18" stroke="#202831" stroke-linecap="round" stroke-dasharray="2 2"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.7297 13.6516C26.6906 13.5594 26.6 13.5 26.5 13.5C26.4 13.5 26.3094 13.5594 26.2703 13.6516L25.5812 15.2594C25.5281 15.3844 25.5 15.5172 25.5 15.6531V16.8563L23.25 18.1687V17.875C23.25 17.6672 23.0828 17.5 22.875 17.5C22.6672 17.5 22.5 17.6672 22.5 17.875V18.75V19.25V19.625C22.5 19.8328 22.6672 20 22.875 20C23.0828 20 23.25 19.8328 23.25 19.625V19.5H25.5V20.0109L24.5859 20.8125C24.5312 20.8594 24.5 20.9281 24.5 21V21.25C24.5 21.3875 24.6125 21.5 24.75 21.5H26.25V20.5C26.25 20.3625 26.3625 20.25 26.5 20.25C26.6375 20.25 26.75 20.3625 26.75 20.5V21.5H28.25C28.3875 21.5 28.5 21.3875 28.5 21.25V21C28.5 20.9281 28.4688 20.8594 28.4141 20.8125L27.5 20.0109V19.5H29.75V19.625C29.75 19.8328 29.9172 20 30.125 20C30.3328 20 30.5 19.8328 30.5 19.625V19.25V18.75V17.875C30.5 17.6672 30.3328 17.5 30.125 17.5C29.9172 17.5 29.75 17.6672 29.75 17.875V18.1687L27.5 16.8563V15.6531C27.5 15.5172 27.4719 15.3844 27.4187 15.2594L26.7297 13.6516Z" fill="#202831"/>
<path d="M9.72969 13.6516C9.69063 13.5594 9.6 13.5 9.5 13.5C9.4 13.5 9.30938 13.5594 9.27031 13.6516L8.58125 15.2594C8.52812 15.3844 8.5 15.5172 8.5 15.6531V16.8563L6.25 18.1687V17.875C6.25 17.6672 6.08281 17.5 5.875 17.5C5.66719 17.5 5.5 17.6672 5.5 17.875V18.75V19.25V19.625C5.5 19.8328 5.66719 20 5.875 20C6.08281 20 6.25 19.8328 6.25 19.625V19.5H8.5V20.0109L7.58594 20.8125C7.53125 20.8594 7.5 20.9281 7.5 21V21.25C7.5 21.3875 7.6125 21.5 7.75 21.5H9.25V20.5C9.25 20.3625 9.3625 20.25 9.5 20.25C9.6375 20.25 9.75 20.3625 9.75 20.5V21.5H11.25C11.3875 21.5 11.5 21.3875 11.5 21.25V21C11.5 20.9281 11.4687 20.8594 11.4141 20.8125L10.5 20.0109V19.5H12.75V19.625C12.75 19.8328 12.9172 20 13.125 20C13.3328 20 13.5 19.8328 13.5 19.625V19.25V18.75V17.875C13.5 17.6672 13.3328 17.5 13.125 17.5C12.9172 17.5 12.75 17.6672 12.75 17.875V18.1687L10.5 16.8563V15.6531C10.5 15.5172 10.4719 15.3844 10.4187 15.2594L9.72969 13.6516Z" fill="#202831"/>
<path d="M16 19H20" stroke="#202831" stroke-linecap="round" stroke-dasharray="2 2"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,5 +1,5 @@
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.7297 12.0271C24.6906 11.9349 24.6 11.8755 24.5 11.8755C24.4 11.8755 24.3094 11.9349 24.2703 12.0271L23.5812 13.6349C23.5281 13.7599 23.5 13.8927 23.5 14.0286V15.2318L21.25 16.5442V16.2505C21.25 16.0427 21.0828 15.8755 20.875 15.8755C20.6672 15.8755 20.5 16.0427 20.5 16.2505V17.1255V17.6255V18.0005C20.5 18.2083 20.6672 18.3755 20.875 18.3755C21.0828 18.3755 21.25 18.2083 21.25 18.0005V17.8755H23.5V18.3864L22.5859 19.188C22.5312 19.2349 22.5 19.3036 22.5 19.3755V19.6255C22.5 19.763 22.6125 19.8755 22.75 19.8755H24.25V18.8755C24.25 18.738 24.3625 18.6255 24.5 18.6255C24.6375 18.6255 24.75 18.738 24.75 18.8755V19.8755H26.25C26.3875 19.8755 26.5 19.763 26.5 19.6255V19.3755C26.5 19.3036 26.4688 19.2349 26.4141 19.188L25.5 18.3864V17.8755H27.75V18.0005C27.75 18.2083 27.9172 18.3755 28.125 18.3755C28.3328 18.3755 28.5 18.2083 28.5 18.0005V17.6255V17.1255V16.2505C28.5 16.0427 28.3328 15.8755 28.125 15.8755C27.9172 15.8755 27.75 16.0427 27.75 16.2505V16.5442L25.5 15.2318V14.0286C25.5 13.8927 25.4719 13.7599 25.4187 13.6349L24.7297 12.0271Z" fill="#5CA7FF"/>
<path d="M7.72969 12.0271C7.69063 11.9349 7.6 11.8755 7.5 11.8755C7.4 11.8755 7.30938 11.9349 7.27031 12.0271L6.58125 13.6349C6.52812 13.7599 6.5 13.8927 6.5 14.0286V15.2318L4.25 16.5442V16.2505C4.25 16.0427 4.08281 15.8755 3.875 15.8755C3.66719 15.8755 3.5 16.0427 3.5 16.2505V17.1255V17.6255V18.0005C3.5 18.2083 3.66719 18.3755 3.875 18.3755C4.08281 18.3755 4.25 18.2083 4.25 18.0005V17.8755H6.5V18.3864L5.58594 19.188C5.53125 19.2349 5.5 19.3036 5.5 19.3755V19.6255C5.5 19.763 5.6125 19.8755 5.75 19.8755H7.25V18.8755C7.25 18.738 7.3625 18.6255 7.5 18.6255C7.6375 18.6255 7.75 18.738 7.75 18.8755V19.8755H9.25C9.3875 19.8755 9.5 19.763 9.5 19.6255V19.3755C9.5 19.3036 9.46875 19.2349 9.41406 19.188L8.5 18.3864V17.8755H10.75V18.0005C10.75 18.2083 10.9172 18.3755 11.125 18.3755C11.3328 18.3755 11.5 18.2083 11.5 18.0005V17.6255V17.1255V16.2505C11.5 16.0427 11.3328 15.8755 11.125 15.8755C10.9172 15.8755 10.75 16.0427 10.75 16.2505V16.5442L8.5 15.2318V14.0286C8.5 13.8927 8.47187 13.7599 8.41875 13.6349L7.72969 12.0271Z" fill="#5CA7FF"/>
<path d="M14 17.3755H18" stroke="#5CA7FF" stroke-linecap="round" stroke-dasharray="2 2"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.7297 13.6516C26.6906 13.5594 26.6 13.5 26.5 13.5C26.4 13.5 26.3094 13.5594 26.2703 13.6516L25.5812 15.2594C25.5281 15.3844 25.5 15.5172 25.5 15.6531V16.8563L23.25 18.1687V17.875C23.25 17.6672 23.0828 17.5 22.875 17.5C22.6672 17.5 22.5 17.6672 22.5 17.875V18.75V19.25V19.625C22.5 19.8328 22.6672 20 22.875 20C23.0828 20 23.25 19.8328 23.25 19.625V19.5H25.5V20.0109L24.5859 20.8125C24.5312 20.8594 24.5 20.9281 24.5 21V21.25C24.5 21.3875 24.6125 21.5 24.75 21.5H26.25V20.5C26.25 20.3625 26.3625 20.25 26.5 20.25C26.6375 20.25 26.75 20.3625 26.75 20.5V21.5H28.25C28.3875 21.5 28.5 21.3875 28.5 21.25V21C28.5 20.9281 28.4688 20.8594 28.4141 20.8125L27.5 20.0109V19.5H29.75V19.625C29.75 19.8328 29.9172 20 30.125 20C30.3328 20 30.5 19.8328 30.5 19.625V19.25V18.75V17.875C30.5 17.6672 30.3328 17.5 30.125 17.5C29.9172 17.5 29.75 17.6672 29.75 17.875V18.1687L27.5 16.8563V15.6531C27.5 15.5172 27.4719 15.3844 27.4187 15.2594L26.7297 13.6516Z" fill="#5CA7FF"/>
<path d="M9.72969 13.6516C9.69063 13.5594 9.6 13.5 9.5 13.5C9.4 13.5 9.30938 13.5594 9.27031 13.6516L8.58125 15.2594C8.52812 15.3844 8.5 15.5172 8.5 15.6531V16.8563L6.25 18.1687V17.875C6.25 17.6672 6.08281 17.5 5.875 17.5C5.66719 17.5 5.5 17.6672 5.5 17.875V18.75V19.25V19.625C5.5 19.8328 5.66719 20 5.875 20C6.08281 20 6.25 19.8328 6.25 19.625V19.5H8.5V20.0109L7.58594 20.8125C7.53125 20.8594 7.5 20.9281 7.5 21V21.25C7.5 21.3875 7.6125 21.5 7.75 21.5H9.25V20.5C9.25 20.3625 9.3625 20.25 9.5 20.25C9.6375 20.25 9.75 20.3625 9.75 20.5V21.5H11.25C11.3875 21.5 11.5 21.3875 11.5 21.25V21C11.5 20.9281 11.4687 20.8594 11.4141 20.8125L10.5 20.0109V19.5H12.75V19.625C12.75 19.8328 12.9172 20 13.125 20C13.3328 20 13.5 19.8328 13.5 19.625V19.25V18.75V17.875C13.5 17.6672 13.3328 17.5 13.125 17.5C12.9172 17.5 12.75 17.6672 12.75 17.875V18.1687L10.5 16.8563V15.6531C10.5 15.5172 10.4719 15.3844 10.4187 15.2594L9.72969 13.6516Z" fill="#5CA7FF"/>
<path d="M16 19H20" stroke="#5CA7FF" stroke-linecap="round" stroke-dasharray="2 2"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,4 +1,4 @@
<svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.20834 4.78954C9.1445 4.63898 8.99647 4.54199 8.83314 4.54199C8.6698 4.54199 8.52179 4.63898 8.45798 4.78954L7.33252 7.41564C7.24574 7.61981 7.1998 7.83673 7.1998 8.05876V10.0238L3.5248 12.1676V11.6878C3.5248 11.3484 3.25173 11.0753 2.9123 11.0753C2.57288 11.0753 2.2998 11.3484 2.2998 11.6878V13.117V13.9337V14.5462C2.2998 14.8856 2.57288 15.1587 2.9123 15.1587C3.25173 15.1587 3.5248 14.8856 3.5248 14.5462V14.342H7.1998V15.1765L5.70684 16.4858C5.61752 16.5623 5.56647 16.6746 5.56647 16.792V17.2003C5.56647 17.4249 5.75022 17.6087 5.9748 17.6087H8.4248V15.9753C8.4248 15.7508 8.60855 15.567 8.83314 15.567C9.0577 15.567 9.24147 15.7508 9.24147 15.9753V17.6087H11.6915C11.916 17.6087 12.0998 17.4249 12.0998 17.2003V16.792C12.0998 16.6746 12.0488 16.5623 11.9594 16.4858L10.4665 15.1765V14.342H14.1415V14.5462C14.1415 14.8856 14.4146 15.1587 14.754 15.1587C15.0934 15.1587 15.3665 14.8856 15.3665 14.5462V13.9337V13.117V11.6878C15.3665 11.3484 15.0934 11.0753 14.754 11.0753C14.4146 11.0753 14.1415 11.3484 14.1415 11.6878V12.1676L10.4665 10.0238V8.05876C10.4665 7.83673 10.4206 7.61981 10.3338 7.41564L9.20834 4.78954Z" fill="#202831"/>
<path d="M19.8732 13.2084C19.8097 13.0816 19.6625 13 19.5 13C19.3375 13 19.1903 13.0816 19.1268 13.2084L18.0071 15.4191C17.9207 15.591 17.875 15.7736 17.875 15.9605V17.6148L14.2188 19.4195V19.0156C14.2188 18.7299 13.9471 18.5 13.6094 18.5C13.2717 18.5 13 18.7299 13 19.0156V20.2188V20.9062V21.4219C13 21.7076 13.2717 21.9375 13.6094 21.9375C13.9471 21.9375 14.2188 21.7076 14.2188 21.4219V21.25H17.875V21.9525L16.3896 23.0547C16.3008 23.1191 16.25 23.2137 16.25 23.3125V23.6562C16.25 23.8453 16.4328 24 16.6563 24H19.0938V22.625C19.0938 22.4359 19.2765 22.2812 19.5 22.2812C19.7235 22.2812 19.9063 22.4359 19.9063 22.625V24H22.3438C22.5672 24 22.75 23.8453 22.75 23.6562V23.3125C22.75 23.2137 22.6992 23.1191 22.6104 23.0547L21.125 21.9525V21.25H24.7812V21.4219C24.7812 21.7076 25.053 21.9375 25.3906 21.9375C25.7283 21.9375 26 21.7076 26 21.4219V20.9062V20.2188V19.0156C26 18.7299 25.7283 18.5 25.3906 18.5C25.053 18.5 24.7812 18.7299 24.7812 19.0156V19.4195L21.125 17.6148V15.9605C21.125 15.7736 21.0793 15.591 20.9929 15.4191L19.8732 13.2084Z" fill="#202831"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.2083 7.41405C12.1445 7.26349 11.9965 7.1665 11.8331 7.1665C11.6698 7.1665 11.5218 7.26349 11.458 7.41405L10.3325 10.0402C10.2457 10.2443 10.1998 10.4612 10.1998 10.6833V12.6483L6.5248 14.7921V14.3123C6.5248 13.9729 6.25173 13.6998 5.9123 13.6998C5.57288 13.6998 5.2998 13.9729 5.2998 14.3123V15.7415V16.5582V17.1707C5.2998 17.5101 5.57288 17.7832 5.9123 17.7832C6.25173 17.7832 6.5248 17.5101 6.5248 17.1707V16.9665H10.1998V17.801L8.70684 19.1103C8.61752 19.1868 8.56647 19.2991 8.56647 19.4165V19.8248C8.56647 20.0494 8.75022 20.2332 8.9748 20.2332H11.4248V18.5998C11.4248 18.3753 11.6086 18.1915 11.8331 18.1915C12.0577 18.1915 12.2415 18.3753 12.2415 18.5998V20.2332H14.6915C14.916 20.2332 15.0998 20.0494 15.0998 19.8248V19.4165C15.0998 19.2991 15.0488 19.1868 14.9594 19.1103L13.4665 17.801V16.9665H17.1415V17.1707C17.1415 17.5101 17.4146 17.7832 17.754 17.7832C18.0934 17.7832 18.3665 17.5101 18.3665 17.1707V16.5582V15.7415V14.3123C18.3665 13.9729 18.0934 13.6998 17.754 13.6998C17.4146 13.6998 17.1415 13.9729 17.1415 14.3123V14.7921L13.4665 12.6483V10.6833C13.4665 10.4612 13.4206 10.2443 13.3338 10.0402L12.2083 7.41405Z" fill="#202831"/>
<path d="M22.8732 15.8329C22.8097 15.7061 22.6625 15.6245 22.5 15.6245C22.3375 15.6245 22.1903 15.7061 22.1268 15.8329L21.0071 18.0436C20.9207 18.2155 20.875 18.3981 20.875 18.585V20.2393L17.2188 22.044V21.6401C17.2188 21.3544 16.9471 21.1245 16.6094 21.1245C16.2717 21.1245 16 21.3544 16 21.6401V22.8433V23.5307V24.0464C16 24.3321 16.2717 24.562 16.6094 24.562C16.9471 24.562 17.2188 24.3321 17.2188 24.0464V23.8745H20.875V24.577L19.3896 25.6792C19.3008 25.7436 19.25 25.8382 19.25 25.937V26.2807C19.25 26.4698 19.4328 26.6245 19.6563 26.6245H22.0938V25.2495C22.0938 25.0604 22.2765 24.9057 22.5 24.9057C22.7235 24.9057 22.9063 25.0604 22.9063 25.2495V26.6245H25.3438C25.5672 26.6245 25.75 26.4698 25.75 26.2807V25.937C25.75 25.8382 25.6992 25.7436 25.6104 25.6792L24.125 24.577V23.8745H27.7813V24.0464C27.7813 24.3321 28.053 24.562 28.3906 24.562C28.7283 24.562 29 24.3321 29 24.0464V23.5307V22.8433V21.6401C29 21.3544 28.7283 21.1245 28.3906 21.1245C28.053 21.1245 27.7813 21.3544 27.7813 21.6401V22.044L24.125 20.2393V18.585C24.125 18.3981 24.0793 18.2155 23.9929 18.0436L22.8732 15.8329Z" fill="#202831"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,4 +1,4 @@
<svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.20834 4.78954C9.1445 4.63898 8.99647 4.54199 8.83314 4.54199C8.6698 4.54199 8.52179 4.63898 8.45798 4.78954L7.33252 7.41564C7.24574 7.61981 7.1998 7.83673 7.1998 8.05876V10.0238L3.5248 12.1676V11.6878C3.5248 11.3484 3.25173 11.0753 2.9123 11.0753C2.57288 11.0753 2.2998 11.3484 2.2998 11.6878V13.117V13.9337V14.5462C2.2998 14.8856 2.57288 15.1587 2.9123 15.1587C3.25173 15.1587 3.5248 14.8856 3.5248 14.5462V14.342H7.1998V15.1765L5.70684 16.4858C5.61752 16.5623 5.56647 16.6746 5.56647 16.792V17.2003C5.56647 17.4249 5.75022 17.6087 5.9748 17.6087H8.4248V15.9753C8.4248 15.7508 8.60855 15.567 8.83314 15.567C9.0577 15.567 9.24147 15.7508 9.24147 15.9753V17.6087H11.6915C11.916 17.6087 12.0998 17.4249 12.0998 17.2003V16.792C12.0998 16.6746 12.0488 16.5623 11.9594 16.4858L10.4665 15.1765V14.342H14.1415V14.5462C14.1415 14.8856 14.4146 15.1587 14.754 15.1587C15.0934 15.1587 15.3665 14.8856 15.3665 14.5462V13.9337V13.117V11.6878C15.3665 11.3484 15.0934 11.0753 14.754 11.0753C14.4146 11.0753 14.1415 11.3484 14.1415 11.6878V12.1676L10.4665 10.0238V8.05876C10.4665 7.83673 10.4206 7.61981 10.3338 7.41564L9.20834 4.78954Z" fill="#5CA7FF"/>
<path d="M19.8732 13.2084C19.8097 13.0816 19.6625 13 19.5 13C19.3375 13 19.1903 13.0816 19.1268 13.2084L18.0071 15.4191C17.9207 15.591 17.875 15.7736 17.875 15.9605V17.6148L14.2188 19.4195V19.0156C14.2188 18.7299 13.9471 18.5 13.6094 18.5C13.2717 18.5 13 18.7299 13 19.0156V20.2188V20.9062V21.4219C13 21.7076 13.2717 21.9375 13.6094 21.9375C13.9471 21.9375 14.2188 21.7076 14.2188 21.4219V21.25H17.875V21.9525L16.3896 23.0547C16.3008 23.1191 16.25 23.2137 16.25 23.3125V23.6562C16.25 23.8453 16.4328 24 16.6563 24H19.0938V22.625C19.0938 22.4359 19.2765 22.2812 19.5 22.2812C19.7235 22.2812 19.9063 22.4359 19.9063 22.625V24H22.3438C22.5672 24 22.75 23.8453 22.75 23.6562V23.3125C22.75 23.2137 22.6992 23.1191 22.6104 23.0547L21.125 21.9525V21.25H24.7813V21.4219C24.7813 21.7076 25.053 21.9375 25.3906 21.9375C25.7283 21.9375 26 21.7076 26 21.4219V20.9062V20.2188V19.0156C26 18.7299 25.7283 18.5 25.3906 18.5C25.053 18.5 24.7813 18.7299 24.7813 19.0156V19.4195L21.125 17.6148V15.9605C21.125 15.7736 21.0793 15.591 20.9929 15.4191L19.8732 13.2084Z" fill="#5CA7FF"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.2083 7.41405C12.1445 7.26349 11.9965 7.1665 11.8331 7.1665C11.6698 7.1665 11.5218 7.26349 11.458 7.41405L10.3325 10.0402C10.2457 10.2443 10.1998 10.4612 10.1998 10.6833V12.6483L6.5248 14.7921V14.3123C6.5248 13.9729 6.25173 13.6998 5.9123 13.6998C5.57288 13.6998 5.2998 13.9729 5.2998 14.3123V15.7415V16.5582V17.1707C5.2998 17.5101 5.57288 17.7832 5.9123 17.7832C6.25173 17.7832 6.5248 17.5101 6.5248 17.1707V16.9665H10.1998V17.801L8.70684 19.1103C8.61752 19.1868 8.56647 19.2991 8.56647 19.4165V19.8248C8.56647 20.0494 8.75022 20.2332 8.9748 20.2332H11.4248V18.5998C11.4248 18.3753 11.6086 18.1915 11.8331 18.1915C12.0577 18.1915 12.2415 18.3753 12.2415 18.5998V20.2332H14.6915C14.916 20.2332 15.0998 20.0494 15.0998 19.8248V19.4165C15.0998 19.2991 15.0488 19.1868 14.9594 19.1103L13.4665 17.801V16.9665H17.1415V17.1707C17.1415 17.5101 17.4146 17.7832 17.754 17.7832C18.0934 17.7832 18.3665 17.5101 18.3665 17.1707V16.5582V15.7415V14.3123C18.3665 13.9729 18.0934 13.6998 17.754 13.6998C17.4146 13.6998 17.1415 13.9729 17.1415 14.3123V14.7921L13.4665 12.6483V10.6833C13.4665 10.4612 13.4206 10.2443 13.3338 10.0402L12.2083 7.41405Z" fill="#5CA7FF"/>
<path d="M22.8732 15.8329C22.8097 15.7061 22.6625 15.6245 22.5 15.6245C22.3375 15.6245 22.1903 15.7061 22.1268 15.8329L21.0071 18.0436C20.9207 18.2155 20.875 18.3981 20.875 18.585V20.2393L17.2188 22.044V21.6401C17.2188 21.3544 16.9471 21.1245 16.6094 21.1245C16.2717 21.1245 16 21.3544 16 21.6401V22.8433V23.5307V24.0464C16 24.3321 16.2717 24.562 16.6094 24.562C16.9471 24.562 17.2188 24.3321 17.2188 24.0464V23.8745H20.875V24.577L19.3896 25.6792C19.3008 25.7436 19.25 25.8382 19.25 25.937V26.2807C19.25 26.4698 19.4328 26.6245 19.6563 26.6245H22.0938V25.2495C22.0938 25.0604 22.2765 24.9057 22.5 24.9057C22.7235 24.9057 22.9063 25.0604 22.9063 25.2495V26.6245H25.3438C25.5672 26.6245 25.75 26.4698 25.75 26.2807V25.937C25.75 25.8382 25.6992 25.7436 25.6104 25.6792L24.125 24.577V23.8745H27.7813V24.0464C27.7813 24.3321 28.053 24.562 28.3906 24.562C28.7283 24.562 29 24.3321 29 24.0464V23.5307V22.8433V21.6401C29 21.3544 28.7283 21.1245 28.3906 21.1245C28.053 21.1245 27.7813 21.3544 27.7813 21.6401V22.044L24.125 20.2393V18.585C24.125 18.3981 24.0793 18.2155 23.9929 18.0436L22.8732 15.8329Z" fill="#5CA7FF"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,4 +1,5 @@
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.7297 17.0271C21.6906 16.9349 21.6 16.8755 21.5 16.8755C21.4 16.8755 21.3094 16.9349 21.2703 17.0271L20.5812 18.6349C20.5281 18.7599 20.5 18.8927 20.5 19.0286V20.2318L18.25 21.5442V21.2505C18.25 21.0427 18.0828 20.8755 17.875 20.8755C17.6672 20.8755 17.5 21.0427 17.5 21.2505V22.1255V22.6255V23.0005C17.5 23.2083 17.6672 23.3755 17.875 23.3755C18.0828 23.3755 18.25 23.2083 18.25 23.0005V22.8755H20.5V23.3864L19.5859 24.188C19.5312 24.2349 19.5 24.3036 19.5 24.3755V24.6255C19.5 24.763 19.6125 24.8755 19.75 24.8755H21.25V23.8755C21.25 23.738 21.3625 23.6255 21.5 23.6255C21.6375 23.6255 21.75 23.738 21.75 23.8755V24.8755H23.25C23.3875 24.8755 23.5 24.763 23.5 24.6255V24.3755C23.5 24.3036 23.4688 24.2349 23.4141 24.188L22.5 23.3864V22.8755H24.75V23.0005C24.75 23.2083 24.9172 23.3755 25.125 23.3755C25.3328 23.3755 25.5 23.2083 25.5 23.0005V22.6255V22.1255V21.2505C25.5 21.0427 25.3328 20.8755 25.125 20.8755C24.9172 20.8755 24.75 21.0427 24.75 21.2505V21.5442L22.5 20.2318V19.0286C22.5 18.8927 22.4719 18.7599 22.4187 18.6349L21.7297 17.0271Z" fill="#202831"/>
<path d="M9.72969 7.02705C9.69063 6.93486 9.6 6.87549 9.5 6.87549C9.4 6.87549 9.30938 6.93486 9.27031 7.02705L8.58125 8.63486C8.52812 8.75986 8.5 8.89268 8.5 9.02862V10.2317L6.25 11.5442V11.2505C6.25 11.0427 6.08281 10.8755 5.875 10.8755C5.66719 10.8755 5.5 11.0427 5.5 11.2505V12.1255V12.6255V13.0005C5.5 13.2083 5.66719 13.3755 5.875 13.3755C6.08281 13.3755 6.25 13.2083 6.25 13.0005V12.8755H8.5V13.3864L7.58594 14.188C7.53125 14.2349 7.5 14.3036 7.5 14.3755V14.6255C7.5 14.763 7.6125 14.8755 7.75 14.8755H9.25V13.8755C9.25 13.738 9.3625 13.6255 9.5 13.6255C9.6375 13.6255 9.75 13.738 9.75 13.8755V14.8755H11.25C11.3875 14.8755 11.5 14.763 11.5 14.6255V14.3755C11.5 14.3036 11.4688 14.2349 11.4141 14.188L10.5 13.3864V12.8755H12.75V13.0005C12.75 13.2083 12.9172 13.3755 13.125 13.3755C13.3328 13.3755 13.5 13.2083 13.5 13.0005V12.6255V12.1255V11.2505C13.5 11.0427 13.3328 10.8755 13.125 10.8755C12.9172 10.8755 12.75 11.0427 12.75 11.2505V11.5442L10.5 10.2317V9.02862C10.5 8.89268 10.4719 8.75986 10.4187 8.63486L9.72969 7.02705Z" fill="#202831"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M23.7297 18.6516C23.6906 18.5594 23.6 18.5 23.5 18.5C23.4 18.5 23.3094 18.5594 23.2703 18.6516L22.5812 20.2594C22.5281 20.3844 22.5 20.5172 22.5 20.6531V21.8563L20.25 23.1687V22.875C20.25 22.6672 20.0828 22.5 19.875 22.5C19.6672 22.5 19.5 22.6672 19.5 22.875V23.75V24.25V24.625C19.5 24.8328 19.6672 25 19.875 25C20.0828 25 20.25 24.8328 20.25 24.625V24.5H22.5V25.0109L21.5859 25.8125C21.5312 25.8594 21.5 25.9281 21.5 26V26.25C21.5 26.3875 21.6125 26.5 21.75 26.5H23.25V25.5C23.25 25.3625 23.3625 25.25 23.5 25.25C23.6375 25.25 23.75 25.3625 23.75 25.5V26.5H25.25C25.3875 26.5 25.5 26.3875 25.5 26.25V26C25.5 25.9281 25.4688 25.8594 25.4141 25.8125L24.5 25.0109V24.5H26.75V24.625C26.75 24.8328 26.9172 25 27.125 25C27.3328 25 27.5 24.8328 27.5 24.625V24.25V23.75V22.875C27.5 22.6672 27.3328 22.5 27.125 22.5C26.9172 22.5 26.75 22.6672 26.75 22.875V23.1687L24.5 21.8563V20.6531C24.5 20.5172 24.4719 20.3844 24.4187 20.2594L23.7297 18.6516Z" fill="#202831"/>
<path d="M11.7297 8.65156C11.6906 8.55937 11.6 8.5 11.5 8.5C11.4 8.5 11.3094 8.55937 11.2703 8.65156L10.5813 10.2594C10.5281 10.3844 10.5 10.5172 10.5 10.6531V11.8562L8.25 13.1687V12.875C8.25 12.6672 8.08281 12.5 7.875 12.5C7.66719 12.5 7.5 12.6672 7.5 12.875V13.75V14.25V14.625C7.5 14.8328 7.66719 15 7.875 15C8.08281 15 8.25 14.8328 8.25 14.625V14.5H10.5V15.0109L9.58594 15.8125C9.53125 15.8594 9.5 15.9281 9.5 16V16.25C9.5 16.3875 9.6125 16.5 9.75 16.5H11.25V15.5C11.25 15.3625 11.3625 15.25 11.5 15.25C11.6375 15.25 11.75 15.3625 11.75 15.5V16.5H13.25C13.3875 16.5 13.5 16.3875 13.5 16.25V16C13.5 15.9281 13.4688 15.8594 13.4141 15.8125L12.5 15.0109V14.5H14.75V14.625C14.75 14.8328 14.9172 15 15.125 15C15.3328 15 15.5 14.8328 15.5 14.625V14.25V13.75V12.875C15.5 12.6672 15.3328 12.5 15.125 12.5C14.9172 12.5 14.75 12.6672 14.75 12.875V13.1687L12.5 11.8562V10.6531C12.5 10.5172 12.4719 10.3844 12.4187 10.2594L11.7297 8.65156Z" fill="#202831"/>
<path d="M17 17L20 19" stroke="#202831" stroke-linecap="round" stroke-dasharray="2 2"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,4 +1,5 @@
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.7297 17.0271C21.6906 16.9349 21.6 16.8755 21.5 16.8755C21.4 16.8755 21.3094 16.9349 21.2703 17.0271L20.5812 18.6349C20.5281 18.7599 20.5 18.8927 20.5 19.0286V20.2318L18.25 21.5442V21.2505C18.25 21.0427 18.0828 20.8755 17.875 20.8755C17.6672 20.8755 17.5 21.0427 17.5 21.2505V22.1255V22.6255V23.0005C17.5 23.2083 17.6672 23.3755 17.875 23.3755C18.0828 23.3755 18.25 23.2083 18.25 23.0005V22.8755H20.5V23.3864L19.5859 24.188C19.5312 24.2349 19.5 24.3036 19.5 24.3755V24.6255C19.5 24.763 19.6125 24.8755 19.75 24.8755H21.25V23.8755C21.25 23.738 21.3625 23.6255 21.5 23.6255C21.6375 23.6255 21.75 23.738 21.75 23.8755V24.8755H23.25C23.3875 24.8755 23.5 24.763 23.5 24.6255V24.3755C23.5 24.3036 23.4688 24.2349 23.4141 24.188L22.5 23.3864V22.8755H24.75V23.0005C24.75 23.2083 24.9172 23.3755 25.125 23.3755C25.3328 23.3755 25.5 23.2083 25.5 23.0005V22.6255V22.1255V21.2505C25.5 21.0427 25.3328 20.8755 25.125 20.8755C24.9172 20.8755 24.75 21.0427 24.75 21.2505V21.5442L22.5 20.2318V19.0286C22.5 18.8927 22.4719 18.7599 22.4187 18.6349L21.7297 17.0271Z" fill="#5CA7FF"/>
<path d="M9.72969 7.02705C9.69063 6.93486 9.6 6.87549 9.5 6.87549C9.4 6.87549 9.30938 6.93486 9.27031 7.02705L8.58125 8.63486C8.52812 8.75986 8.5 8.89268 8.5 9.02862V10.2317L6.25 11.5442V11.2505C6.25 11.0427 6.08281 10.8755 5.875 10.8755C5.66719 10.8755 5.5 11.0427 5.5 11.2505V12.1255V12.6255V13.0005C5.5 13.2083 5.66719 13.3755 5.875 13.3755C6.08281 13.3755 6.25 13.2083 6.25 13.0005V12.8755H8.5V13.3864L7.58594 14.188C7.53125 14.2349 7.5 14.3036 7.5 14.3755V14.6255C7.5 14.763 7.6125 14.8755 7.75 14.8755H9.25V13.8755C9.25 13.738 9.3625 13.6255 9.5 13.6255C9.6375 13.6255 9.75 13.738 9.75 13.8755V14.8755H11.25C11.3875 14.8755 11.5 14.763 11.5 14.6255V14.3755C11.5 14.3036 11.4688 14.2349 11.4141 14.188L10.5 13.3864V12.8755H12.75V13.0005C12.75 13.2083 12.9172 13.3755 13.125 13.3755C13.3328 13.3755 13.5 13.2083 13.5 13.0005V12.6255V12.1255V11.2505C13.5 11.0427 13.3328 10.8755 13.125 10.8755C12.9172 10.8755 12.75 11.0427 12.75 11.2505V11.5442L10.5 10.2317V9.02862C10.5 8.89268 10.4719 8.75986 10.4187 8.63486L9.72969 7.02705Z" fill="#5CA7FF"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M23.7297 18.6516C23.6906 18.5594 23.6 18.5 23.5 18.5C23.4 18.5 23.3094 18.5594 23.2703 18.6516L22.5812 20.2594C22.5281 20.3844 22.5 20.5172 22.5 20.6531V21.8563L20.25 23.1687V22.875C20.25 22.6672 20.0828 22.5 19.875 22.5C19.6672 22.5 19.5 22.6672 19.5 22.875V23.75V24.25V24.625C19.5 24.8328 19.6672 25 19.875 25C20.0828 25 20.25 24.8328 20.25 24.625V24.5H22.5V25.0109L21.5859 25.8125C21.5312 25.8594 21.5 25.9281 21.5 26V26.25C21.5 26.3875 21.6125 26.5 21.75 26.5H23.25V25.5C23.25 25.3625 23.3625 25.25 23.5 25.25C23.6375 25.25 23.75 25.3625 23.75 25.5V26.5H25.25C25.3875 26.5 25.5 26.3875 25.5 26.25V26C25.5 25.9281 25.4688 25.8594 25.4141 25.8125L24.5 25.0109V24.5H26.75V24.625C26.75 24.8328 26.9172 25 27.125 25C27.3328 25 27.5 24.8328 27.5 24.625V24.25V23.75V22.875C27.5 22.6672 27.3328 22.5 27.125 22.5C26.9172 22.5 26.75 22.6672 26.75 22.875V23.1687L24.5 21.8563V20.6531C24.5 20.5172 24.4719 20.3844 24.4187 20.2594L23.7297 18.6516Z" fill="#5CA7FF"/>
<path d="M11.7297 8.65156C11.6906 8.55937 11.6 8.5 11.5 8.5C11.4 8.5 11.3094 8.55937 11.2703 8.65156L10.5813 10.2594C10.5281 10.3844 10.5 10.5172 10.5 10.6531V11.8562L8.25 13.1687V12.875C8.25 12.6672 8.08281 12.5 7.875 12.5C7.66719 12.5 7.5 12.6672 7.5 12.875V13.75V14.25V14.625C7.5 14.8328 7.66719 15 7.875 15C8.08281 15 8.25 14.8328 8.25 14.625V14.5H10.5V15.0109L9.58594 15.8125C9.53125 15.8594 9.5 15.9281 9.5 16V16.25C9.5 16.3875 9.6125 16.5 9.75 16.5H11.25V15.5C11.25 15.3625 11.3625 15.25 11.5 15.25C11.6375 15.25 11.75 15.3625 11.75 15.5V16.5H13.25C13.3875 16.5 13.5 16.3875 13.5 16.25V16C13.5 15.9281 13.4688 15.8594 13.4141 15.8125L12.5 15.0109V14.5H14.75V14.625C14.75 14.8328 14.9172 15 15.125 15C15.3328 15 15.5 14.8328 15.5 14.625V14.25V13.75V12.875C15.5 12.6672 15.3328 12.5 15.125 12.5C14.9172 12.5 14.75 12.6672 14.75 12.875V13.1687L12.5 11.8562V10.6531C12.5 10.5172 12.4719 10.3844 12.4187 10.2594L11.7297 8.65156Z" fill="#5CA7FF"/>
<path d="M17 17L20 19" stroke="#5CA7FF" stroke-linecap="round" stroke-dasharray="2 2"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,4 +1,5 @@
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.7297 18.0271C15.6906 17.9349 15.6 17.8755 15.5 17.8755C15.4 17.8755 15.3094 17.9349 15.2703 18.0271L14.5812 19.6349C14.5281 19.7599 14.5 19.8927 14.5 20.0286V21.2318L12.25 22.5442V22.2505C12.25 22.0427 12.0828 21.8755 11.875 21.8755C11.6672 21.8755 11.5 22.0427 11.5 22.2505V23.1255V23.6255V24.0005C11.5 24.2083 11.6672 24.3755 11.875 24.3755C12.0828 24.3755 12.25 24.2083 12.25 24.0005V23.8755H14.5V24.3864L13.5859 25.188C13.5312 25.2349 13.5 25.3036 13.5 25.3755V25.6255C13.5 25.763 13.6125 25.8755 13.75 25.8755H15.25V24.8755C15.25 24.738 15.3625 24.6255 15.5 24.6255C15.6375 24.6255 15.75 24.738 15.75 24.8755V25.8755H17.25C17.3875 25.8755 17.5 25.763 17.5 25.6255V25.3755C17.5 25.3036 17.4688 25.2349 17.4141 25.188L16.5 24.3864V23.8755H18.75V24.0005C18.75 24.2083 18.9172 24.3755 19.125 24.3755C19.3328 24.3755 19.5 24.2083 19.5 24.0005V23.6255V23.1255V22.2505C19.5 22.0427 19.3328 21.8755 19.125 21.8755C18.9172 21.8755 18.75 22.0427 18.75 22.2505V22.5442L16.5 21.2318V20.0286C16.5 19.8927 16.4719 19.7599 16.4187 19.6349L15.7297 18.0271Z" fill="#202831"/>
<path d="M15.7297 4.02705C15.6906 3.93486 15.6 3.87549 15.5 3.87549C15.4 3.87549 15.3094 3.93486 15.2703 4.02705L14.5812 5.63486C14.5281 5.75986 14.5 5.89268 14.5 6.02862V7.23174L12.25 8.54424V8.25049C12.25 8.04268 12.0828 7.87549 11.875 7.87549C11.6672 7.87549 11.5 8.04268 11.5 8.25049V9.12549V9.62549V10.0005C11.5 10.2083 11.6672 10.3755 11.875 10.3755C12.0828 10.3755 12.25 10.2083 12.25 10.0005V9.87549H14.5V10.3864L13.5859 11.188C13.5312 11.2349 13.5 11.3036 13.5 11.3755V11.6255C13.5 11.763 13.6125 11.8755 13.75 11.8755H15.25V10.8755C15.25 10.738 15.3625 10.6255 15.5 10.6255C15.6375 10.6255 15.75 10.738 15.75 10.8755V11.8755H17.25C17.3875 11.8755 17.5 11.763 17.5 11.6255V11.3755C17.5 11.3036 17.4688 11.2349 17.4141 11.188L16.5 10.3864V9.87549H18.75V10.0005C18.75 10.2083 18.9172 10.3755 19.125 10.3755C19.3328 10.3755 19.5 10.2083 19.5 10.0005V9.62549V9.12549V8.25049C19.5 8.04268 19.3328 7.87549 19.125 7.87549C18.9172 7.87549 18.75 8.04268 18.75 8.25049V8.54424L16.5 7.23174V6.02862C16.5 5.89268 16.4719 5.75986 16.4187 5.63486L15.7297 4.02705Z" fill="#202831"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.2297 20.1516C18.1906 20.0594 18.1 20 18 20C17.9 20 17.8094 20.0594 17.7703 20.1516L17.0812 21.7594C17.0281 21.8844 17 22.0172 17 22.1531V23.3563L14.75 24.6687V24.375C14.75 24.1672 14.5828 24 14.375 24C14.1672 24 14 24.1672 14 24.375V25.25V25.75V26.125C14 26.3328 14.1672 26.5 14.375 26.5C14.5828 26.5 14.75 26.3328 14.75 26.125V26H17V26.5109L16.0859 27.3125C16.0312 27.3594 16 27.4281 16 27.5V27.75C16 27.8875 16.1125 28 16.25 28H17.75V27C17.75 26.8625 17.8625 26.75 18 26.75C18.1375 26.75 18.25 26.8625 18.25 27V28H19.75C19.8875 28 20 27.8875 20 27.75V27.5C20 27.4281 19.9688 27.3594 19.9141 27.3125L19 26.5109V26H21.25V26.125C21.25 26.3328 21.4172 26.5 21.625 26.5C21.8328 26.5 22 26.3328 22 26.125V25.75V25.25V24.375C22 24.1672 21.8328 24 21.625 24C21.4172 24 21.25 24.1672 21.25 24.375V24.6687L19 23.3563V22.1531C19 22.0172 18.9719 21.8844 18.9187 21.7594L18.2297 20.1516Z" fill="#202831"/>
<path d="M18.2297 6.15156C18.1906 6.05937 18.1 6 18 6C17.9 6 17.8094 6.05937 17.7703 6.15156L17.0812 7.75937C17.0281 7.88437 17 8.01719 17 8.15313V9.35625L14.75 10.6687V10.375C14.75 10.1672 14.5828 10 14.375 10C14.1672 10 14 10.1672 14 10.375V11.25V11.75V12.125C14 12.3328 14.1672 12.5 14.375 12.5C14.5828 12.5 14.75 12.3328 14.75 12.125V12H17V12.5109L16.0859 13.3125C16.0312 13.3594 16 13.4281 16 13.5V13.75C16 13.8875 16.1125 14 16.25 14H17.75V13C17.75 12.8625 17.8625 12.75 18 12.75C18.1375 12.75 18.25 12.8625 18.25 13V14H19.75C19.8875 14 20 13.8875 20 13.75V13.5C20 13.4281 19.9688 13.3594 19.9141 13.3125L19 12.5109V12H21.25V12.125C21.25 12.3328 21.4172 12.5 21.625 12.5C21.8328 12.5 22 12.3328 22 12.125V11.75V11.25V10.375C22 10.1672 21.8328 10 21.625 10C21.4172 10 21.25 10.1672 21.25 10.375V10.6687L19 9.35625V8.15313C19 8.01719 18.9719 7.88437 18.9187 7.75937L18.2297 6.15156Z" fill="#202831"/>
<path d="M18 15.5L18 18.5" stroke="#202831" stroke-linecap="round" stroke-dasharray="2 2"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,4 +1,5 @@
<svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.7297 18.0271C15.6906 17.9349 15.6 17.8755 15.5 17.8755C15.4 17.8755 15.3094 17.9349 15.2703 18.0271L14.5812 19.6349C14.5281 19.7599 14.5 19.8927 14.5 20.0286V21.2318L12.25 22.5442V22.2505C12.25 22.0427 12.0828 21.8755 11.875 21.8755C11.6672 21.8755 11.5 22.0427 11.5 22.2505V23.1255V23.6255V24.0005C11.5 24.2083 11.6672 24.3755 11.875 24.3755C12.0828 24.3755 12.25 24.2083 12.25 24.0005V23.8755H14.5V24.3864L13.5859 25.188C13.5312 25.2349 13.5 25.3036 13.5 25.3755V25.6255C13.5 25.763 13.6125 25.8755 13.75 25.8755H15.25V24.8755C15.25 24.738 15.3625 24.6255 15.5 24.6255C15.6375 24.6255 15.75 24.738 15.75 24.8755V25.8755H17.25C17.3875 25.8755 17.5 25.763 17.5 25.6255V25.3755C17.5 25.3036 17.4688 25.2349 17.4141 25.188L16.5 24.3864V23.8755H18.75V24.0005C18.75 24.2083 18.9172 24.3755 19.125 24.3755C19.3328 24.3755 19.5 24.2083 19.5 24.0005V23.6255V23.1255V22.2505C19.5 22.0427 19.3328 21.8755 19.125 21.8755C18.9172 21.8755 18.75 22.0427 18.75 22.2505V22.5442L16.5 21.2318V20.0286C16.5 19.8927 16.4719 19.7599 16.4187 19.6349L15.7297 18.0271Z" fill="#5CA7FF"/>
<path d="M15.7297 4.02705C15.6906 3.93486 15.6 3.87549 15.5 3.87549C15.4 3.87549 15.3094 3.93486 15.2703 4.02705L14.5812 5.63486C14.5281 5.75986 14.5 5.89268 14.5 6.02862V7.23174L12.25 8.54424V8.25049C12.25 8.04268 12.0828 7.87549 11.875 7.87549C11.6672 7.87549 11.5 8.04268 11.5 8.25049V9.12549V9.62549V10.0005C11.5 10.2083 11.6672 10.3755 11.875 10.3755C12.0828 10.3755 12.25 10.2083 12.25 10.0005V9.87549H14.5V10.3864L13.5859 11.188C13.5312 11.2349 13.5 11.3036 13.5 11.3755V11.6255C13.5 11.763 13.6125 11.8755 13.75 11.8755H15.25V10.8755C15.25 10.738 15.3625 10.6255 15.5 10.6255C15.6375 10.6255 15.75 10.738 15.75 10.8755V11.8755H17.25C17.3875 11.8755 17.5 11.763 17.5 11.6255V11.3755C17.5 11.3036 17.4688 11.2349 17.4141 11.188L16.5 10.3864V9.87549H18.75V10.0005C18.75 10.2083 18.9172 10.3755 19.125 10.3755C19.3328 10.3755 19.5 10.2083 19.5 10.0005V9.62549V9.12549V8.25049C19.5 8.04268 19.3328 7.87549 19.125 7.87549C18.9172 7.87549 18.75 8.04268 18.75 8.25049V8.54424L16.5 7.23174V6.02862C16.5 5.89268 16.4719 5.75986 16.4187 5.63486L15.7297 4.02705Z" fill="#5CA7FF"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.2297 20.1516C18.1906 20.0594 18.1 20 18 20C17.9 20 17.8094 20.0594 17.7703 20.1516L17.0812 21.7594C17.0281 21.8844 17 22.0172 17 22.1531V23.3563L14.75 24.6687V24.375C14.75 24.1672 14.5828 24 14.375 24C14.1672 24 14 24.1672 14 24.375V25.25V25.75V26.125C14 26.3328 14.1672 26.5 14.375 26.5C14.5828 26.5 14.75 26.3328 14.75 26.125V26H17V26.5109L16.0859 27.3125C16.0312 27.3594 16 27.4281 16 27.5V27.75C16 27.8875 16.1125 28 16.25 28H17.75V27C17.75 26.8625 17.8625 26.75 18 26.75C18.1375 26.75 18.25 26.8625 18.25 27V28H19.75C19.8875 28 20 27.8875 20 27.75V27.5C20 27.4281 19.9688 27.3594 19.9141 27.3125L19 26.5109V26H21.25V26.125C21.25 26.3328 21.4172 26.5 21.625 26.5C21.8328 26.5 22 26.3328 22 26.125V25.75V25.25V24.375C22 24.1672 21.8328 24 21.625 24C21.4172 24 21.25 24.1672 21.25 24.375V24.6687L19 23.3563V22.1531C19 22.0172 18.9719 21.8844 18.9187 21.7594L18.2297 20.1516Z" fill="#5CA7FF"/>
<path d="M18.2297 6.15156C18.1906 6.05937 18.1 6 18 6C17.9 6 17.8094 6.05937 17.7703 6.15156L17.0812 7.75937C17.0281 7.88437 17 8.01719 17 8.15313V9.35625L14.75 10.6687V10.375C14.75 10.1672 14.5828 10 14.375 10C14.1672 10 14 10.1672 14 10.375V11.25V11.75V12.125C14 12.3328 14.1672 12.5 14.375 12.5C14.5828 12.5 14.75 12.3328 14.75 12.125V12H17V12.5109L16.0859 13.3125C16.0312 13.3594 16 13.4281 16 13.5V13.75C16 13.8875 16.1125 14 16.25 14H17.75V13C17.75 12.8625 17.8625 12.75 18 12.75C18.1375 12.75 18.25 12.8625 18.25 13V14H19.75C19.8875 14 20 13.8875 20 13.75V13.5C20 13.4281 19.9688 13.3594 19.9141 13.3125L19 12.5109V12H21.25V12.125C21.25 12.3328 21.4172 12.5 21.625 12.5C21.8328 12.5 22 12.3328 22 12.125V11.75V11.25V10.375C22 10.1672 21.8328 10 21.625 10C21.4172 10 21.25 10.1672 21.25 10.375V10.6687L19 9.35625V8.15313C19 8.01719 18.9719 7.88437 18.9187 7.75937L18.2297 6.15156Z" fill="#5CA7FF"/>
<path d="M18 15.5L18 18.5" stroke="#5CA7FF" stroke-linecap="round" stroke-dasharray="2 2"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.4199 20.4688C20.1055 20.3672 20.7402 19.9609 21.1211 19.377L25.2344 13.0293C25.5391 12.5215 25.4629 11.8613 25.0312 11.4551C24.5996 11.0488 23.9395 11.0234 23.4824 11.3789L17.4648 15.8984C16.8555 16.3555 16.5 17.0664 16.5 17.8281L19.4199 20.4688ZM18.9121 21.1035L15.9668 18.4629C14.4434 18.5137 13.25 19.7578 13.25 21.2812C13.25 21.3828 13.25 21.4844 13.25 21.5859C13.3008 22.043 12.9961 22.5 12.5391 22.5H12.4375C11.9805 22.5 11.625 22.8809 11.625 23.3125C11.625 23.7695 11.9805 24.125 12.4375 24.125H16.0938C17.6426 24.125 18.9375 22.8555 18.9375 21.2812C18.9375 21.2305 18.9121 21.1543 18.9121 21.1035Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 740 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.4199 20.4688C20.1055 20.3672 20.7402 19.9609 21.1211 19.377L25.2344 13.0293C25.5391 12.5215 25.4629 11.8613 25.0312 11.4551C24.5996 11.0488 23.9395 11.0234 23.4824 11.3789L17.4648 15.8984C16.8555 16.3555 16.5 17.0664 16.5 17.8281L19.4199 20.4688ZM18.9121 21.1035L15.9668 18.4629C14.4434 18.5137 13.25 19.7578 13.25 21.2812C13.25 21.3828 13.25 21.4844 13.25 21.5859C13.3008 22.043 12.9961 22.5 12.5391 22.5H12.4375C11.9805 22.5 11.625 22.8809 11.625 23.3125C11.625 23.7695 11.9805 24.125 12.4375 24.125H16.0938C17.6426 24.125 18.9375 22.8555 18.9375 21.2812C18.9375 21.2305 18.9121 21.1543 18.9121 21.1035Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 740 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.4199 20.4688C20.1055 20.3672 20.7402 19.9609 21.1211 19.377L25.2344 13.0293C25.5391 12.5215 25.4629 11.8613 25.0312 11.4551C24.5996 11.0488 23.9395 11.0234 23.4824 11.3789L17.4648 15.8984C16.8555 16.3555 16.5 17.0664 16.5 17.8281L19.4199 20.4688ZM18.9121 21.1035L15.9668 18.4629C14.4434 18.5137 13.25 19.7578 13.25 21.2812C13.25 21.3828 13.25 21.4844 13.25 21.5859C13.3008 22.043 12.9961 22.5 12.5391 22.5H12.4375C11.9805 22.5 11.625 22.8809 11.625 23.3125C11.625 23.7695 11.9805 24.125 12.4375 24.125H16.0938C17.6426 24.125 18.9375 22.8555 18.9375 21.2812C18.9375 21.2305 18.9121 21.1543 18.9121 21.1035Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 738 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.125 14C13.125 13.3164 13.6719 12.75 14.375 12.75H17.5C18.1836 12.75 18.75 13.3164 18.75 14V17.75H18.9062C19.8438 17.75 20.625 18.5312 20.625 19.4688V20.0938C20.625 20.3672 20.8203 20.5625 21.0938 20.5625C21.3477 20.5625 21.5625 20.3672 21.5625 20.0938V17.0859C21.0156 16.9492 20.625 16.4609 20.625 15.875V14.625L20 14C19.8242 13.8438 19.8242 13.5508 20 13.375C20.1562 13.2188 20.4492 13.2188 20.625 13.375L22.1289 14.8984C22.3633 15.1328 22.5 15.4453 22.5 15.7773V16.0312V16.5V17.125V20.0938C22.5 20.875 21.8555 21.5 21.0938 21.5C20.3125 21.5 19.6875 20.875 19.6875 20.0938V19.4688C19.6875 19.0391 19.3359 18.6875 18.9062 18.6875H18.75V21.5C19.082 21.5 19.375 21.793 19.375 22.125C19.375 22.4766 19.082 22.75 18.75 22.75H13.125C12.7734 22.75 12.5 22.4766 12.5 22.125C12.5 21.793 12.7734 21.5 13.125 21.5V14ZM14.375 14.3125V16.1875C14.375 16.3633 14.5117 16.5 14.6875 16.5H17.1875C17.3438 16.5 17.5 16.3633 17.5 16.1875V14.3125C17.5 14.1562 17.3438 14 17.1875 14H14.6875C14.5117 14 14.375 14.1562 14.375 14.3125Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.125 14C13.125 13.3164 13.6719 12.75 14.375 12.75H17.5C18.1836 12.75 18.75 13.3164 18.75 14V17.75H18.9062C19.8438 17.75 20.625 18.5312 20.625 19.4688V20.0938C20.625 20.3672 20.8203 20.5625 21.0938 20.5625C21.3477 20.5625 21.5625 20.3672 21.5625 20.0938V17.0859C21.0156 16.9492 20.625 16.4609 20.625 15.875V14.625L20 14C19.8242 13.8438 19.8242 13.5508 20 13.375C20.1562 13.2188 20.4492 13.2188 20.625 13.375L22.1289 14.8984C22.3633 15.1328 22.5 15.4453 22.5 15.7773V16.0312V16.5V17.125V20.0938C22.5 20.875 21.8555 21.5 21.0938 21.5C20.3125 21.5 19.6875 20.875 19.6875 20.0938V19.4688C19.6875 19.0391 19.3359 18.6875 18.9062 18.6875H18.75V21.5C19.082 21.5 19.375 21.793 19.375 22.125C19.375 22.4766 19.082 22.75 18.75 22.75H13.125C12.7734 22.75 12.5 22.4766 12.5 22.125C12.5 21.793 12.7734 21.5 13.125 21.5V14ZM14.375 14.3125V16.1875C14.375 16.3633 14.5117 16.5 14.6875 16.5H17.1875C17.3438 16.5 17.5 16.3633 17.5 16.1875V14.3125C17.5 14.1562 17.3438 14 17.1875 14H14.6875C14.5117 14 14.375 14.1562 14.375 14.3125Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.125 14C13.125 13.3164 13.6719 12.75 14.375 12.75H17.5C18.1836 12.75 18.75 13.3164 18.75 14V17.75H18.9062C19.8438 17.75 20.625 18.5312 20.625 19.4688V20.0938C20.625 20.3672 20.8203 20.5625 21.0938 20.5625C21.3477 20.5625 21.5625 20.3672 21.5625 20.0938V17.0859C21.0156 16.9492 20.625 16.4609 20.625 15.875V14.625L20 14C19.8242 13.8438 19.8242 13.5508 20 13.375C20.1562 13.2188 20.4492 13.2188 20.625 13.375L22.1289 14.8984C22.3633 15.1328 22.5 15.4453 22.5 15.7773V16.0312V16.5V17.125V20.0938C22.5 20.875 21.8555 21.5 21.0938 21.5C20.3125 21.5 19.6875 20.875 19.6875 20.0938V19.4688C19.6875 19.0391 19.3359 18.6875 18.9062 18.6875H18.75V21.5C19.082 21.5 19.375 21.793 19.375 22.125C19.375 22.4766 19.082 22.75 18.75 22.75H13.125C12.7734 22.75 12.5 22.4766 12.5 22.125C12.5 21.793 12.7734 21.5 13.125 21.5V14ZM14.375 14.3125V16.1875C14.375 16.3633 14.5117 16.5 14.6875 16.5H17.1875C17.3438 16.5 17.5 16.3633 17.5 16.1875V14.3125C17.5 14.1562 17.3438 14 17.1875 14H14.6875C14.5117 14 14.375 14.1562 14.375 14.3125Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20.6562 13.5312C20.6562 15.0352 18.6328 17.6875 17.7578 18.7812C17.5664 19.0547 17.1562 19.0547 16.9648 18.7812C16.0898 17.6875 14.0938 15.0352 14.0938 13.5312C14.0938 11.7266 15.543 10.25 17.375 10.25C19.1797 10.25 20.6562 11.7266 20.6562 13.5312ZM20.875 15.7461C20.957 15.5547 21.0391 15.3633 21.1211 15.1719C21.1484 15.1445 21.1484 15.1172 21.1758 15.0898L24.3477 13.8047C24.7578 13.6406 25.25 13.9414 25.25 14.4062V21.8164C25.25 22.0898 25.0859 22.3359 24.8125 22.4453L20.875 24.0039V15.7461ZM13.2461 14.0508C13.3281 14.4336 13.4375 14.8164 13.6016 15.1719C13.6836 15.3633 13.7656 15.5547 13.875 15.7461V22.6094L10.375 24.0039C9.96484 24.168 9.5 23.8672 9.5 23.4023V15.9922C9.5 15.7188 9.66406 15.4727 9.91016 15.3906L13.2461 14.0508ZM18.4414 19.3281C18.8242 18.8633 19.4258 18.0977 20 17.2227V24.0586L14.75 22.5547V17.2227C15.2969 18.0977 15.8984 18.8633 16.2812 19.3281C16.8281 20.0391 17.8945 20.0391 18.4414 19.3281ZM17.375 14.4062C17.9766 14.4062 18.4688 13.9414 18.4688 13.3125C18.4688 12.7109 17.9766 12.2188 17.375 12.2188C16.7461 12.2188 16.2812 12.7109 16.2812 13.3125C16.2812 13.9414 16.7461 14.4062 17.375 14.4062Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20.6562 13.5312C20.6562 15.0352 18.6328 17.6875 17.7578 18.7812C17.5664 19.0547 17.1562 19.0547 16.9648 18.7812C16.0898 17.6875 14.0938 15.0352 14.0938 13.5312C14.0938 11.7266 15.543 10.25 17.375 10.25C19.1797 10.25 20.6562 11.7266 20.6562 13.5312ZM20.875 15.7461C20.957 15.5547 21.0391 15.3633 21.1211 15.1719C21.1484 15.1445 21.1484 15.1172 21.1758 15.0898L24.3477 13.8047C24.7578 13.6406 25.25 13.9414 25.25 14.4062V21.8164C25.25 22.0898 25.0859 22.3359 24.8125 22.4453L20.875 24.0039V15.7461ZM13.2461 14.0508C13.3281 14.4336 13.4375 14.8164 13.6016 15.1719C13.6836 15.3633 13.7656 15.5547 13.875 15.7461V22.6094L10.375 24.0039C9.96484 24.168 9.5 23.8672 9.5 23.4023V15.9922C9.5 15.7188 9.66406 15.4727 9.91016 15.3906L13.2461 14.0508ZM18.4414 19.3281C18.8242 18.8633 19.4258 18.0977 20 17.2227V24.0586L14.75 22.5547V17.2227C15.2969 18.0977 15.8984 18.8633 16.2812 19.3281C16.8281 20.0391 17.8945 20.0391 18.4414 19.3281ZM17.375 14.4062C17.9766 14.4062 18.4688 13.9414 18.4688 13.3125C18.4688 12.7109 17.9766 12.2188 17.375 12.2188C16.7461 12.2188 16.2812 12.7109 16.2812 13.3125C16.2812 13.9414 16.7461 14.4062 17.375 14.4062Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20.6562 13.5312C20.6562 15.0352 18.6328 17.6875 17.7578 18.7812C17.5664 19.0547 17.1562 19.0547 16.9648 18.7812C16.0898 17.6875 14.0938 15.0352 14.0938 13.5312C14.0938 11.7266 15.543 10.25 17.375 10.25C19.1797 10.25 20.6562 11.7266 20.6562 13.5312ZM20.875 15.7461C20.957 15.5547 21.0391 15.3633 21.1211 15.1719C21.1484 15.1445 21.1484 15.1172 21.1758 15.0898L24.3477 13.8047C24.7578 13.6406 25.25 13.9414 25.25 14.4062V21.8164C25.25 22.0898 25.0859 22.3359 24.8125 22.4453L20.875 24.0039V15.7461ZM13.2461 14.0508C13.3281 14.4336 13.4375 14.8164 13.6016 15.1719C13.6836 15.3633 13.7656 15.5547 13.875 15.7461V22.6094L10.375 24.0039C9.96484 24.168 9.5 23.8672 9.5 23.4023V15.9922C9.5 15.7188 9.66406 15.4727 9.91016 15.3906L13.2461 14.0508ZM18.4414 19.3281C18.8242 18.8633 19.4258 18.0977 20 17.2227V24.0586L14.75 22.5547V17.2227C15.2969 18.0977 15.8984 18.8633 16.2812 19.3281C16.8281 20.0391 17.8945 20.0391 18.4414 19.3281ZM17.375 14.4062C17.9766 14.4062 18.4688 13.9414 18.4688 13.3125C18.4688 12.7109 17.9766 12.2188 17.375 12.2188C16.7461 12.2188 16.2812 12.7109 16.2812 13.3125C16.2812 13.9414 16.7461 14.4062 17.375 14.4062Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M23.1211 16C24.1172 16 25.875 16.8496 25.875 17.875C25.875 18.9297 24.1172 19.75 23.1211 19.75H19.6934L16.7637 24.9062C16.5879 25.1992 16.2656 25.375 15.9434 25.375H14.3027C13.9805 25.375 13.7461 25.082 13.834 24.7891L15.2695 19.75H12.2812L10.9922 21.4492C10.9043 21.5664 10.7871 21.625 10.6406 21.625H9.41016C9.17578 21.625 9 21.4492 9 21.2148C9 21.1855 9 21.1562 9 21.127L9.9375 17.875L9 14.6523C9 14.623 9 14.5938 9 14.5352C9 14.3301 9.17578 14.125 9.41016 14.125H10.6406C10.7871 14.125 10.9043 14.2129 10.9922 14.3301L12.2812 16H15.2695L13.834 10.9902C13.7461 10.6973 13.9805 10.375 14.3027 10.375H15.9434C16.2656 10.375 16.5879 10.5801 16.7637 10.873L19.6934 16H23.1211Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 806 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M23.1211 16C24.1172 16 25.875 16.8496 25.875 17.875C25.875 18.9297 24.1172 19.75 23.1211 19.75H19.6934L16.7637 24.9062C16.5879 25.1992 16.2656 25.375 15.9434 25.375H14.3027C13.9805 25.375 13.7461 25.082 13.834 24.7891L15.2695 19.75H12.2812L10.9922 21.4492C10.9043 21.5664 10.7871 21.625 10.6406 21.625H9.41016C9.17578 21.625 9 21.4492 9 21.2148C9 21.1855 9 21.1562 9 21.127L9.9375 17.875L9 14.6523C9 14.623 9 14.5938 9 14.5352C9 14.3301 9.17578 14.125 9.41016 14.125H10.6406C10.7871 14.125 10.9043 14.2129 10.9922 14.3301L12.2812 16H15.2695L13.834 10.9902C13.7461 10.6973 13.9805 10.375 14.3027 10.375H15.9434C16.2656 10.375 16.5879 10.5801 16.7637 10.873L19.6934 16H23.1211Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 806 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M23.1211 16C24.1172 16 25.875 16.8496 25.875 17.875C25.875 18.9297 24.1172 19.75 23.1211 19.75H19.6934L16.7637 24.9062C16.5879 25.1992 16.2656 25.375 15.9434 25.375H14.3027C13.9805 25.375 13.7461 25.082 13.834 24.7891L15.2695 19.75H12.2812L10.9922 21.4492C10.9043 21.5664 10.7871 21.625 10.6406 21.625H9.41016C9.17578 21.625 9 21.4492 9 21.2148C9 21.1855 9 21.1562 9 21.127L9.9375 17.875L9 14.6523C9 14.623 9 14.5938 9 14.5352C9 14.3301 9.17578 14.125 9.41016 14.125H10.6406C10.7871 14.125 10.9043 14.2129 10.9922 14.3301L12.2812 16H15.2695L13.834 10.9902C13.7461 10.6973 13.9805 10.375 14.3027 10.375H15.9434C16.2656 10.375 16.5879 10.5801 16.7637 10.873L19.6934 16H23.1211Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 804 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.0234 14.3594C17.2285 14.1543 17.3164 13.8906 17.1992 13.627C17.1406 13.4512 17.0527 13.3047 16.9941 13.1582L16.9062 13.0117C16.8184 12.8652 16.7012 12.7188 16.6133 12.5723C16.4375 12.3672 16.1445 12.2793 15.8809 12.3672L15.0605 12.6309C14.7383 12.3965 14.3867 12.1621 14.0059 12.0449L13.8301 11.1953C13.7715 10.9023 13.5371 10.6973 13.2734 10.668C13.0684 10.6387 12.8633 10.6094 12.6875 10.6094C12.4824 10.6094 12.2773 10.6387 12.0723 10.668C11.8086 10.6973 11.6035 10.9023 11.5449 11.166L11.3691 12.0449C10.959 12.1914 10.6074 12.3965 10.2852 12.6309L9.46484 12.3672C9.20117 12.2793 8.9082 12.3672 8.73242 12.5723C8.64453 12.7188 8.55664 12.8652 8.43945 13.0117L8.35156 13.1582C8.29297 13.3047 8.20508 13.4512 8.14648 13.627C8.0293 13.8906 8.11719 14.1543 8.32227 14.3594L8.9668 14.9453C8.9375 15.1211 8.9375 15.3262 8.9375 15.5312C8.9375 15.7656 8.9375 15.9707 8.9668 16.1465L8.32227 16.7324C8.11719 16.9082 8.0293 17.2012 8.14648 17.4648C8.20508 17.6113 8.29297 17.7871 8.35156 17.9336L8.43945 18.0801C8.52734 18.2266 8.64453 18.373 8.73242 18.5195C8.9082 18.7246 9.20117 18.8125 9.46484 18.7246L10.2852 18.4316C10.6074 18.6953 10.959 18.9004 11.3398 19.0469L11.5449 19.8965C11.5742 20.1895 11.8086 20.3945 12.0723 20.4238C12.2773 20.4531 12.4824 20.4531 12.6582 20.4531C12.8633 20.4531 13.0684 20.4531 13.2734 20.4238C13.5371 20.3945 13.7422 20.1895 13.8008 19.8965L13.9766 19.0469C14.3867 18.9004 14.7383 18.6953 15.0605 18.4316L15.8809 18.7246C16.1445 18.8125 16.4375 18.7246 16.6133 18.5195C16.7012 18.373 16.7891 18.2266 16.877 18.0801L16.9648 17.9336C17.0527 17.7871 17.1406 17.6113 17.1992 17.4648C17.3164 17.2012 17.2285 16.9082 17.0234 16.7324L16.3789 16.1465C16.4082 15.9414 16.4082 15.7363 16.4082 15.5312C16.4082 15.3262 16.4082 15.1211 16.3789 14.916L17.0234 14.3594ZM14.0938 15.5312C14.0938 16.3223 13.4492 16.9375 12.6875 16.9375C11.8965 16.9375 11.2812 16.3223 11.2812 15.5312C11.2812 14.7695 11.8965 14.125 12.6875 14.125C13.4492 14.125 14.0938 14.7695 14.0938 15.5312ZM22.7656 25.0527C22.9707 25.2578 23.2344 25.3457 23.498 25.2285C23.6738 25.1699 23.8203 25.082 23.9668 25.0234L24.1133 24.9062C24.2598 24.8184 24.4062 24.7305 24.5527 24.6426C24.7578 24.4668 24.8457 24.1738 24.7578 23.9102L24.4941 23.0898C24.7285 22.7676 24.9629 22.416 25.0801 22.0352L25.959 21.8301C26.2227 21.8008 26.4277 21.5664 26.457 21.3027C26.4863 21.0977 26.5156 20.8926 26.5156 20.7168C26.5156 20.5117 26.4863 20.3066 26.457 20.1016C26.4277 19.8379 26.2227 19.6328 25.959 19.5742L25.0801 19.3691C24.9336 18.9883 24.7285 18.6367 24.4941 18.3145L24.7578 17.4941C24.8457 17.2305 24.7578 16.9375 24.5527 16.7617C24.4062 16.6738 24.2598 16.5859 24.1133 16.4688L23.9668 16.3809C23.8203 16.3223 23.6738 16.2344 23.498 16.1758C23.2637 16.0586 22.9707 16.1465 22.7656 16.3516L22.1797 16.9961C22.0039 16.9668 21.7988 16.9668 21.5938 16.9668C21.3594 16.9668 21.1543 16.9668 20.9785 16.9961L20.3926 16.3516C20.2168 16.1465 19.9238 16.0586 19.6602 16.1758C19.5137 16.2344 19.3379 16.3223 19.1914 16.3809L19.0449 16.4688C18.8984 16.5566 18.752 16.6738 18.6055 16.7617C18.4004 16.9375 18.3125 17.2305 18.4004 17.4941L18.6934 18.3145C18.4297 18.6367 18.2246 18.9883 18.0781 19.3691L17.2285 19.5449C16.9355 19.6035 16.7305 19.8379 16.7012 20.1016C16.6719 20.3066 16.6719 20.4824 16.6719 20.6875C16.6719 20.8926 16.6719 21.0977 16.7012 21.3027C16.7305 21.5664 16.9355 21.7715 17.2285 21.8301L18.0781 22.0059C18.2246 22.416 18.4297 22.7676 18.6934 23.0898L18.4004 23.9102C18.3125 24.1738 18.4004 24.4668 18.6055 24.6133C18.752 24.7305 18.8984 24.8184 19.0449 24.9062L19.1914 24.9941C19.3379 25.082 19.5137 25.1699 19.6602 25.2285C19.9238 25.3457 20.2168 25.2578 20.3926 25.0527L20.9785 24.4082C21.1836 24.4375 21.3887 24.4375 21.5938 24.4375C21.7988 24.4375 22.0039 24.4375 22.209 24.4082L22.7656 25.0527ZM21.5938 22.0938C20.8027 22.0938 20.1875 21.4785 20.1875 20.6875C20.1875 19.9258 20.8027 19.2812 21.5938 19.2812C22.3555 19.2812 23 19.9258 23 20.6875C23 21.4785 22.3555 22.0938 21.5938 22.0938Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.0234 14.3594C17.2285 14.1543 17.3164 13.8906 17.1992 13.627C17.1406 13.4512 17.0527 13.3047 16.9941 13.1582L16.9062 13.0117C16.8184 12.8652 16.7012 12.7188 16.6133 12.5723C16.4375 12.3672 16.1445 12.2793 15.8809 12.3672L15.0605 12.6309C14.7383 12.3965 14.3867 12.1621 14.0059 12.0449L13.8301 11.1953C13.7715 10.9023 13.5371 10.6973 13.2734 10.668C13.0684 10.6387 12.8633 10.6094 12.6875 10.6094C12.4824 10.6094 12.2773 10.6387 12.0723 10.668C11.8086 10.6973 11.6035 10.9023 11.5449 11.166L11.3691 12.0449C10.959 12.1914 10.6074 12.3965 10.2852 12.6309L9.46484 12.3672C9.20117 12.2793 8.9082 12.3672 8.73242 12.5723C8.64453 12.7188 8.55664 12.8652 8.43945 13.0117L8.35156 13.1582C8.29297 13.3047 8.20508 13.4512 8.14648 13.627C8.0293 13.8906 8.11719 14.1543 8.32227 14.3594L8.9668 14.9453C8.9375 15.1211 8.9375 15.3262 8.9375 15.5312C8.9375 15.7656 8.9375 15.9707 8.9668 16.1465L8.32227 16.7324C8.11719 16.9082 8.0293 17.2012 8.14648 17.4648C8.20508 17.6113 8.29297 17.7871 8.35156 17.9336L8.43945 18.0801C8.52734 18.2266 8.64453 18.373 8.73242 18.5195C8.9082 18.7246 9.20117 18.8125 9.46484 18.7246L10.2852 18.4316C10.6074 18.6953 10.959 18.9004 11.3398 19.0469L11.5449 19.8965C11.5742 20.1895 11.8086 20.3945 12.0723 20.4238C12.2773 20.4531 12.4824 20.4531 12.6582 20.4531C12.8633 20.4531 13.0684 20.4531 13.2734 20.4238C13.5371 20.3945 13.7422 20.1895 13.8008 19.8965L13.9766 19.0469C14.3867 18.9004 14.7383 18.6953 15.0605 18.4316L15.8809 18.7246C16.1445 18.8125 16.4375 18.7246 16.6133 18.5195C16.7012 18.373 16.7891 18.2266 16.877 18.0801L16.9648 17.9336C17.0527 17.7871 17.1406 17.6113 17.1992 17.4648C17.3164 17.2012 17.2285 16.9082 17.0234 16.7324L16.3789 16.1465C16.4082 15.9414 16.4082 15.7363 16.4082 15.5312C16.4082 15.3262 16.4082 15.1211 16.3789 14.916L17.0234 14.3594ZM14.0938 15.5312C14.0938 16.3223 13.4492 16.9375 12.6875 16.9375C11.8965 16.9375 11.2812 16.3223 11.2812 15.5312C11.2812 14.7695 11.8965 14.125 12.6875 14.125C13.4492 14.125 14.0938 14.7695 14.0938 15.5312ZM22.7656 25.0527C22.9707 25.2578 23.2344 25.3457 23.498 25.2285C23.6738 25.1699 23.8203 25.082 23.9668 25.0234L24.1133 24.9062C24.2598 24.8184 24.4062 24.7305 24.5527 24.6426C24.7578 24.4668 24.8457 24.1738 24.7578 23.9102L24.4941 23.0898C24.7285 22.7676 24.9629 22.416 25.0801 22.0352L25.959 21.8301C26.2227 21.8008 26.4277 21.5664 26.457 21.3027C26.4863 21.0977 26.5156 20.8926 26.5156 20.7168C26.5156 20.5117 26.4863 20.3066 26.457 20.1016C26.4277 19.8379 26.2227 19.6328 25.959 19.5742L25.0801 19.3691C24.9336 18.9883 24.7285 18.6367 24.4941 18.3145L24.7578 17.4941C24.8457 17.2305 24.7578 16.9375 24.5527 16.7617C24.4062 16.6738 24.2598 16.5859 24.1133 16.4688L23.9668 16.3809C23.8203 16.3223 23.6738 16.2344 23.498 16.1758C23.2637 16.0586 22.9707 16.1465 22.7656 16.3516L22.1797 16.9961C22.0039 16.9668 21.7988 16.9668 21.5938 16.9668C21.3594 16.9668 21.1543 16.9668 20.9785 16.9961L20.3926 16.3516C20.2168 16.1465 19.9238 16.0586 19.6602 16.1758C19.5137 16.2344 19.3379 16.3223 19.1914 16.3809L19.0449 16.4688C18.8984 16.5566 18.752 16.6738 18.6055 16.7617C18.4004 16.9375 18.3125 17.2305 18.4004 17.4941L18.6934 18.3145C18.4297 18.6367 18.2246 18.9883 18.0781 19.3691L17.2285 19.5449C16.9355 19.6035 16.7305 19.8379 16.7012 20.1016C16.6719 20.3066 16.6719 20.4824 16.6719 20.6875C16.6719 20.8926 16.6719 21.0977 16.7012 21.3027C16.7305 21.5664 16.9355 21.7715 17.2285 21.8301L18.0781 22.0059C18.2246 22.416 18.4297 22.7676 18.6934 23.0898L18.4004 23.9102C18.3125 24.1738 18.4004 24.4668 18.6055 24.6133C18.752 24.7305 18.8984 24.8184 19.0449 24.9062L19.1914 24.9941C19.3379 25.082 19.5137 25.1699 19.6602 25.2285C19.9238 25.3457 20.2168 25.2578 20.3926 25.0527L20.9785 24.4082C21.1836 24.4375 21.3887 24.4375 21.5938 24.4375C21.7988 24.4375 22.0039 24.4375 22.209 24.4082L22.7656 25.0527ZM21.5938 22.0938C20.8027 22.0938 20.1875 21.4785 20.1875 20.6875C20.1875 19.9258 20.8027 19.2812 21.5938 19.2812C22.3555 19.2812 23 19.9258 23 20.6875C23 21.4785 22.3555 22.0938 21.5938 22.0938Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.0234 14.3594C17.2285 14.1543 17.3164 13.8906 17.1992 13.627C17.1406 13.4512 17.0527 13.3047 16.9941 13.1582L16.9062 13.0117C16.8184 12.8652 16.7012 12.7188 16.6133 12.5723C16.4375 12.3672 16.1445 12.2793 15.8809 12.3672L15.0605 12.6309C14.7383 12.3965 14.3867 12.1621 14.0059 12.0449L13.8301 11.1953C13.7715 10.9023 13.5371 10.6973 13.2734 10.668C13.0684 10.6387 12.8633 10.6094 12.6875 10.6094C12.4824 10.6094 12.2773 10.6387 12.0723 10.668C11.8086 10.6973 11.6035 10.9023 11.5449 11.166L11.3691 12.0449C10.959 12.1914 10.6074 12.3965 10.2852 12.6309L9.46484 12.3672C9.20117 12.2793 8.9082 12.3672 8.73242 12.5723C8.64453 12.7188 8.55664 12.8652 8.43945 13.0117L8.35156 13.1582C8.29297 13.3047 8.20508 13.4512 8.14648 13.627C8.0293 13.8906 8.11719 14.1543 8.32227 14.3594L8.9668 14.9453C8.9375 15.1211 8.9375 15.3262 8.9375 15.5312C8.9375 15.7656 8.9375 15.9707 8.9668 16.1465L8.32227 16.7324C8.11719 16.9082 8.0293 17.2012 8.14648 17.4648C8.20508 17.6113 8.29297 17.7871 8.35156 17.9336L8.43945 18.0801C8.52734 18.2266 8.64453 18.373 8.73242 18.5195C8.9082 18.7246 9.20117 18.8125 9.46484 18.7246L10.2852 18.4316C10.6074 18.6953 10.959 18.9004 11.3398 19.0469L11.5449 19.8965C11.5742 20.1895 11.8086 20.3945 12.0723 20.4238C12.2773 20.4531 12.4824 20.4531 12.6582 20.4531C12.8633 20.4531 13.0684 20.4531 13.2734 20.4238C13.5371 20.3945 13.7422 20.1895 13.8008 19.8965L13.9766 19.0469C14.3867 18.9004 14.7383 18.6953 15.0605 18.4316L15.8809 18.7246C16.1445 18.8125 16.4375 18.7246 16.6133 18.5195C16.7012 18.373 16.7891 18.2266 16.877 18.0801L16.9648 17.9336C17.0527 17.7871 17.1406 17.6113 17.1992 17.4648C17.3164 17.2012 17.2285 16.9082 17.0234 16.7324L16.3789 16.1465C16.4082 15.9414 16.4082 15.7363 16.4082 15.5312C16.4082 15.3262 16.4082 15.1211 16.3789 14.916L17.0234 14.3594ZM14.0938 15.5312C14.0938 16.3223 13.4492 16.9375 12.6875 16.9375C11.8965 16.9375 11.2812 16.3223 11.2812 15.5312C11.2812 14.7695 11.8965 14.125 12.6875 14.125C13.4492 14.125 14.0938 14.7695 14.0938 15.5312ZM22.7656 25.0527C22.9707 25.2578 23.2344 25.3457 23.498 25.2285C23.6738 25.1699 23.8203 25.082 23.9668 25.0234L24.1133 24.9062C24.2598 24.8184 24.4062 24.7305 24.5527 24.6426C24.7578 24.4668 24.8457 24.1738 24.7578 23.9102L24.4941 23.0898C24.7285 22.7676 24.9629 22.416 25.0801 22.0352L25.959 21.8301C26.2227 21.8008 26.4277 21.5664 26.457 21.3027C26.4863 21.0977 26.5156 20.8926 26.5156 20.7168C26.5156 20.5117 26.4863 20.3066 26.457 20.1016C26.4277 19.8379 26.2227 19.6328 25.959 19.5742L25.0801 19.3691C24.9336 18.9883 24.7285 18.6367 24.4941 18.3145L24.7578 17.4941C24.8457 17.2305 24.7578 16.9375 24.5527 16.7617C24.4062 16.6738 24.2598 16.5859 24.1133 16.4688L23.9668 16.3809C23.8203 16.3223 23.6738 16.2344 23.498 16.1758C23.2637 16.0586 22.9707 16.1465 22.7656 16.3516L22.1797 16.9961C22.0039 16.9668 21.7988 16.9668 21.5938 16.9668C21.3594 16.9668 21.1543 16.9668 20.9785 16.9961L20.3926 16.3516C20.2168 16.1465 19.9238 16.0586 19.6602 16.1758C19.5137 16.2344 19.3379 16.3223 19.1914 16.3809L19.0449 16.4688C18.8984 16.5566 18.752 16.6738 18.6055 16.7617C18.4004 16.9375 18.3125 17.2305 18.4004 17.4941L18.6934 18.3145C18.4297 18.6367 18.2246 18.9883 18.0781 19.3691L17.2285 19.5449C16.9355 19.6035 16.7305 19.8379 16.7012 20.1016C16.6719 20.3066 16.6719 20.4824 16.6719 20.6875C16.6719 20.8926 16.6719 21.0977 16.7012 21.3027C16.7305 21.5664 16.9355 21.7715 17.2285 21.8301L18.0781 22.0059C18.2246 22.416 18.4297 22.7676 18.6934 23.0898L18.4004 23.9102C18.3125 24.1738 18.4004 24.4668 18.6055 24.6133C18.752 24.7305 18.8984 24.8184 19.0449 24.9062L19.1914 24.9941C19.3379 25.082 19.5137 25.1699 19.6602 25.2285C19.9238 25.3457 20.2168 25.2578 20.3926 25.0527L20.9785 24.4082C21.1836 24.4375 21.3887 24.4375 21.5938 24.4375C21.7988 24.4375 22.0039 24.4375 22.209 24.4082L22.7656 25.0527ZM21.5938 22.0938C20.8027 22.0938 20.1875 21.4785 20.1875 20.6875C20.1875 19.9258 20.8027 19.2812 21.5938 19.2812C22.3555 19.2812 23 19.9258 23 20.6875C23 21.4785 22.3555 22.0938 21.5938 22.0938Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.3125 11.4375C15.2559 11.4375 13.6055 12.377 12.4121 13.4941C11.2188 14.5859 10.4316 15.9062 10.0508 16.8203C9.97461 17.0234 9.97461 17.252 10.0508 17.4551C10.4316 18.3438 11.2188 19.6641 12.4121 20.7812C13.6055 21.8984 15.2559 22.8125 17.3125 22.8125C19.3438 22.8125 20.9941 21.8984 22.1875 20.7812C23.3809 19.6641 24.168 18.3438 24.5488 17.4551C24.625 17.252 24.625 17.0234 24.5488 16.8203C24.168 15.9062 23.3809 14.5859 22.1875 13.4941C20.9941 12.377 19.3438 11.4375 17.3125 11.4375ZM20.9688 17.125C20.9688 19.1562 19.3184 20.7812 17.3125 20.7812C15.2812 20.7812 13.6562 19.1562 13.6562 17.125C13.6562 15.1191 15.2812 13.4688 17.3125 13.4688C19.3184 13.4688 20.9688 15.1191 20.9688 17.125ZM17.3125 15.5C17.3125 16.4141 16.5762 17.125 15.6875 17.125C15.3828 17.125 15.1035 17.0488 14.875 16.9219C14.875 16.998 14.875 17.0742 14.875 17.125C14.875 18.4707 15.9668 19.5625 17.3125 19.5625C18.6582 19.5625 19.75 18.4707 19.75 17.125C19.75 15.7793 18.6582 14.6875 17.3125 14.6875C17.2363 14.6875 17.1602 14.7129 17.084 14.7129C17.2109 14.9414 17.3125 15.2207 17.3125 15.5Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.3125 11.4375C15.2559 11.4375 13.6055 12.377 12.4121 13.4941C11.2188 14.5859 10.4316 15.9062 10.0508 16.8203C9.97461 17.0234 9.97461 17.252 10.0508 17.4551C10.4316 18.3438 11.2188 19.6641 12.4121 20.7812C13.6055 21.8984 15.2559 22.8125 17.3125 22.8125C19.3438 22.8125 20.9941 21.8984 22.1875 20.7812C23.3809 19.6641 24.168 18.3438 24.5488 17.4551C24.625 17.252 24.625 17.0234 24.5488 16.8203C24.168 15.9062 23.3809 14.5859 22.1875 13.4941C20.9941 12.377 19.3438 11.4375 17.3125 11.4375ZM20.9688 17.125C20.9688 19.1562 19.3184 20.7812 17.3125 20.7812C15.2812 20.7812 13.6562 19.1562 13.6562 17.125C13.6562 15.1191 15.2812 13.4688 17.3125 13.4688C19.3184 13.4688 20.9688 15.1191 20.9688 17.125ZM17.3125 15.5C17.3125 16.4141 16.5762 17.125 15.6875 17.125C15.3828 17.125 15.1035 17.0488 14.875 16.9219C14.875 16.998 14.875 17.0742 14.875 17.125C14.875 18.4707 15.9668 19.5625 17.3125 19.5625C18.6582 19.5625 19.75 18.4707 19.75 17.125C19.75 15.7793 18.6582 14.6875 17.3125 14.6875C17.2363 14.6875 17.1602 14.7129 17.084 14.7129C17.2109 14.9414 17.3125 15.2207 17.3125 15.5Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.3125 11.4375C15.2559 11.4375 13.6055 12.377 12.4121 13.4941C11.2188 14.5859 10.4316 15.9062 10.0508 16.8203C9.97461 17.0234 9.97461 17.252 10.0508 17.4551C10.4316 18.3438 11.2188 19.6641 12.4121 20.7812C13.6055 21.8984 15.2559 22.8125 17.3125 22.8125C19.3438 22.8125 20.9941 21.8984 22.1875 20.7812C23.3809 19.6641 24.168 18.3438 24.5488 17.4551C24.625 17.252 24.625 17.0234 24.5488 16.8203C24.168 15.9062 23.3809 14.5859 22.1875 13.4941C20.9941 12.377 19.3438 11.4375 17.3125 11.4375ZM20.9688 17.125C20.9688 19.1562 19.3184 20.7812 17.3125 20.7812C15.2812 20.7812 13.6562 19.1562 13.6562 17.125C13.6562 15.1191 15.2812 13.4688 17.3125 13.4688C19.3184 13.4688 20.9688 15.1191 20.9688 17.125ZM17.3125 15.5C17.3125 16.4141 16.5762 17.125 15.6875 17.125C15.3828 17.125 15.1035 17.0488 14.875 16.9219C14.875 16.998 14.875 17.0742 14.875 17.125C14.875 18.4707 15.9668 19.5625 17.3125 19.5625C18.6582 19.5625 19.75 18.4707 19.75 17.125C19.75 15.7793 18.6582 14.6875 17.3125 14.6875C17.2363 14.6875 17.1602 14.7129 17.084 14.7129C17.2109 14.9414 17.3125 15.2207 17.3125 15.5Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,10 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_536_3452)">
<path d="M18.2465 21.8155C18.2868 21.4033 17.9852 21.0364 17.5729 20.9962C17.4743 20.9866 17.3683 20.9621 17.257 20.9252L22.8034 15.3787C22.8858 15.2964 22.9478 15.196 22.9846 15.0856L24.0453 11.9036C24.2407 11.3173 23.6829 10.7595 23.0966 10.9549L19.9146 12.0156C19.8042 12.0524 19.7038 12.1144 19.6215 12.1968L14.0656 17.7526C14.0323 17.6468 14.0117 17.5467 14.006 17.4545C13.9809 17.041 13.6253 16.7263 13.2119 16.7514C12.7984 16.7766 12.4837 17.1321 12.5088 17.5456C12.5429 18.1052 12.8217 18.753 13.2473 19.3918C13.2522 19.3997 13.2566 19.4078 13.2619 19.4156C13.3201 19.5018 13.3817 19.5879 13.445 19.6736C13.4497 19.68 13.4542 19.6863 13.4589 19.6926C13.4791 19.7198 13.4995 19.7469 13.5202 19.774C13.5383 19.7979 13.5568 19.8217 13.5753 19.8454C13.5987 19.8754 13.6223 19.9054 13.6463 19.9353C13.6679 19.9623 13.6897 19.9892 13.7118 20.016C13.7274 20.035 13.7429 20.0539 13.7587 20.0728C13.7751 20.0923 13.7917 20.1118 13.8082 20.1312L11.6664 22.273C11.3735 21.9802 10.8987 21.9802 10.6058 22.273C10.3129 22.5659 10.3129 23.0407 10.6058 23.3336L11.6665 24.3943C11.9594 24.6872 12.4342 24.6872 12.7271 24.3943C13.02 24.1014 13.02 23.6266 12.7271 23.3337L14.8721 21.1887C15.7157 21.8987 16.6489 22.4131 17.4272 22.4891C17.8395 22.5293 18.2063 22.2278 18.2465 21.8155ZM14.8728 19.0668L20.5569 13.3826L22.1479 12.8523L21.6176 14.4433L15.9381 20.1228C15.7916 20.0043 15.6474 19.878 15.5079 19.746C15.4986 19.7373 15.4895 19.7284 15.4803 19.7196C15.4451 19.6861 15.4103 19.6521 15.3758 19.6179C15.3639 19.6061 15.3521 19.5942 15.3402 19.5823C15.1733 19.4142 15.0169 19.2419 14.8728 19.0668Z" fill="#202831"/>
</g>
<defs>
<clipPath id="clip0_536_3452">
<rect width="10" height="18" fill="white" transform="translate(20.3286 7.60059) rotate(45)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,10 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_536_3453)">
<path d="M18.2465 21.8155C18.2868 21.4033 17.9852 21.0364 17.5729 20.9962C17.4743 20.9866 17.3683 20.9621 17.257 20.9252L22.8034 15.3787C22.8858 15.2964 22.9478 15.196 22.9846 15.0856L24.0453 11.9036C24.2407 11.3173 23.6829 10.7595 23.0966 10.9549L19.9146 12.0156C19.8042 12.0524 19.7038 12.1144 19.6215 12.1968L14.0656 17.7526C14.0323 17.6468 14.0117 17.5467 14.006 17.4545C13.9809 17.041 13.6253 16.7263 13.2119 16.7514C12.7984 16.7766 12.4837 17.1321 12.5088 17.5456C12.5429 18.1052 12.8217 18.753 13.2473 19.3918C13.2522 19.3997 13.2566 19.4078 13.2619 19.4156C13.3201 19.5018 13.3817 19.5879 13.445 19.6736C13.4497 19.68 13.4542 19.6863 13.4589 19.6926C13.4791 19.7198 13.4995 19.7469 13.5202 19.774C13.5383 19.7979 13.5568 19.8217 13.5753 19.8454C13.5987 19.8754 13.6223 19.9054 13.6463 19.9353C13.6679 19.9623 13.6897 19.9892 13.7118 20.016C13.7274 20.035 13.7429 20.0539 13.7587 20.0728C13.7751 20.0923 13.7917 20.1118 13.8082 20.1312L11.6664 22.273C11.3735 21.9802 10.8987 21.9802 10.6058 22.273C10.3129 22.5659 10.3129 23.0407 10.6058 23.3336L11.6665 24.3943C11.9594 24.6872 12.4342 24.6872 12.7271 24.3943C13.02 24.1014 13.02 23.6266 12.7271 23.3337L14.8721 21.1887C15.7157 21.8987 16.6489 22.4131 17.4272 22.4891C17.8395 22.5293 18.2063 22.2278 18.2465 21.8155ZM14.8728 19.0668L20.5569 13.3826L22.1479 12.8523L21.6176 14.4433L15.9381 20.1228C15.7916 20.0043 15.6474 19.878 15.5079 19.746C15.4986 19.7373 15.4895 19.7284 15.4803 19.7196C15.4451 19.6861 15.4103 19.6521 15.3758 19.6179C15.3639 19.6061 15.3521 19.5942 15.3402 19.5823C15.1733 19.4142 15.0169 19.2419 14.8728 19.0668Z" fill="#5CA7FF"/>
</g>
<defs>
<clipPath id="clip0_536_3453">
<rect width="10" height="18" fill="white" transform="translate(20.3286 7.60059) rotate(45)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.5 10.375C17.6172 10.375 17.7637 10.4043 17.8809 10.4629L23.3887 12.8066C24.0332 13.0996 24.5312 13.7148 24.5312 14.4766C24.502 17.4062 23.3008 22.709 18.2617 25.1406C17.7637 25.375 17.207 25.375 16.709 25.1406C11.6699 22.709 10.4688 17.4062 10.4688 14.4766C10.4395 13.7148 10.9375 13.0996 11.582 12.8066L17.0898 10.4629C17.207 10.4043 17.3535 10.375 17.5 10.375ZM17.5 12.3379V23.4121C21.543 21.4492 22.627 17.1426 22.6562 14.5352L17.5 12.3379Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 578 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.5 10.375C17.6172 10.375 17.7637 10.4043 17.8809 10.4629L23.3887 12.8066C24.0332 13.0996 24.5312 13.7148 24.5312 14.4766C24.502 17.4062 23.3008 22.709 18.2617 25.1406C17.7637 25.375 17.207 25.375 16.709 25.1406C11.6699 22.709 10.4688 17.4062 10.4688 14.4766C10.4395 13.7148 10.9375 13.0996 11.582 12.8066L17.0898 10.4629C17.207 10.4043 17.3535 10.375 17.5 10.375ZM17.5 12.3379V23.4121C21.543 21.4492 22.627 17.1426 22.6562 14.5352L17.5 12.3379Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 578 B

View File

@ -1,3 +1,3 @@
<svg width="16" height="19" viewBox="0 0 16 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.4375 3.68799C9.4375 3.18994 8.99805 2.75049 8.5 2.75049C7.97266 2.75049 7.5625 3.18994 7.5625 3.68799V9.78174C7.5625 10.0454 7.32812 10.2505 7.09375 10.2505C6.83008 10.2505 6.625 10.0454 6.625 9.78174V4.62549C6.625 4.12744 6.18555 3.68799 5.6875 3.68799C5.16016 3.68799 4.75 4.12744 4.75 4.62549V12.5942C4.75 12.6528 4.75 12.7114 4.75 12.7407L2.96289 11.0415C2.49414 10.6021 1.76172 10.6313 1.32227 11.1001C0.853516 11.5688 0.882812 12.3013 1.35156 12.7407L4.63281 15.8755C5.89258 17.106 7.5918 17.7505 9.32031 17.7505H9.90625C12.748 17.7505 15.0625 15.4653 15.0625 12.5942V6.50049C15.0625 6.00244 14.623 5.56299 14.125 5.56299C13.5977 5.56299 13.1875 6.00244 13.1875 6.50049V9.78174C13.1875 10.0454 12.9531 10.2505 12.7188 10.2505C12.4551 10.2505 12.25 10.0454 12.25 9.78174V4.62549C12.25 4.12744 11.8105 3.68799 11.3125 3.68799C10.7852 3.68799 10.375 4.12744 10.375 4.62549V9.78174C10.375 10.0454 10.1406 10.2505 9.90625 10.2505C9.64258 10.2505 9.4375 10.0454 9.4375 9.78174V3.68799Z" fill="#202831"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.582 14.7988C21.9629 14.4473 21.9629 13.832 21.582 13.4805C21.2305 13.0996 20.6152 13.0996 20.2637 13.4805L17.1875 16.5566L14.082 13.4805C13.7305 13.0996 13.1152 13.0996 12.7637 13.4805C12.3828 13.832 12.3828 14.4473 12.7637 14.7988L15.8398 17.875L12.7637 20.9805C12.3828 21.332 12.3828 21.9473 12.7637 22.2988C13.1152 22.6797 13.7305 22.6797 14.082 22.2988L17.1875 19.2227L20.2637 22.2988C20.6152 22.6797 21.2305 22.6797 21.582 22.2988C21.9629 21.9473 21.9629 21.332 21.582 20.9805L18.5059 17.875L21.582 14.7988Z" fill="#202831"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 647 B

View File

@ -1,3 +1,3 @@
<svg width="16" height="19" viewBox="0 0 16 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.4375 3.68799C9.4375 3.18994 8.99805 2.75049 8.5 2.75049C7.97266 2.75049 7.5625 3.18994 7.5625 3.68799V9.78174C7.5625 10.0454 7.32812 10.2505 7.09375 10.2505C6.83008 10.2505 6.625 10.0454 6.625 9.78174V4.62549C6.625 4.12744 6.18555 3.68799 5.6875 3.68799C5.16016 3.68799 4.75 4.12744 4.75 4.62549V12.5942C4.75 12.6528 4.75 12.7114 4.75 12.7407L2.96289 11.0415C2.49414 10.6021 1.76172 10.6313 1.32227 11.1001C0.853516 11.5688 0.882812 12.3013 1.35156 12.7407L4.63281 15.8755C5.89258 17.106 7.5918 17.7505 9.32031 17.7505H9.90625C12.748 17.7505 15.0625 15.4653 15.0625 12.5942V6.50049C15.0625 6.00244 14.623 5.56299 14.125 5.56299C13.5977 5.56299 13.1875 6.00244 13.1875 6.50049V9.78174C13.1875 10.0454 12.9531 10.2505 12.7188 10.2505C12.4551 10.2505 12.25 10.0454 12.25 9.78174V4.62549C12.25 4.12744 11.8105 3.68799 11.3125 3.68799C10.7852 3.68799 10.375 4.12744 10.375 4.62549V9.78174C10.375 10.0454 10.1406 10.2505 9.90625 10.2505C9.64258 10.2505 9.4375 10.0454 9.4375 9.78174V3.68799Z" fill="#5CA7FF"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.582 14.7988C21.9629 14.4473 21.9629 13.832 21.582 13.4805C21.2305 13.0996 20.6152 13.0996 20.2637 13.4805L17.1875 16.5566L14.082 13.4805C13.7305 13.0996 13.1152 13.0996 12.7637 13.4805C12.3828 13.832 12.3828 14.4473 12.7637 14.7988L15.8398 17.875L12.7637 20.9805C12.3828 21.332 12.3828 21.9473 12.7637 22.2988C13.1152 22.6797 13.7305 22.6797 14.082 22.2988L17.1875 19.2227L20.2637 22.2988C20.6152 22.6797 21.2305 22.6797 21.582 22.2988C21.9629 21.9473 21.9629 21.332 21.582 20.9805L18.5059 17.875L21.582 14.7988Z" fill="#5CA7FF"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 647 B

View File

@ -1,3 +1,3 @@
<svg width="15" height="19" viewBox="0 0 15 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.5 2.75049C7.99805 2.75049 8.4375 3.18994 8.4375 3.68799V4.01025C11.1621 4.42041 13.3301 6.58838 13.7402 9.31299H14.0625C14.5605 9.31299 15 9.75244 15 10.2505C15 10.7778 14.5605 11.188 14.0625 11.188H13.7402C13.3301 13.9419 11.1621 16.1099 8.4375 16.52V16.813C8.4375 17.3403 7.99805 17.7505 7.5 17.7505C6.97266 17.7505 6.5625 17.3403 6.5625 16.813V16.52C3.80859 16.1099 1.64062 13.9419 1.23047 11.188H0.9375C0.410156 11.188 0 10.7778 0 10.2505C0 9.75244 0.410156 9.31299 0.9375 9.31299H1.23047C1.64062 6.58838 3.80859 4.42041 6.5625 4.01025V3.68799C6.5625 3.18994 6.97266 2.75049 7.5 2.75049ZM3.13477 11.188C3.48633 12.9165 4.83398 14.2642 6.5625 14.6157V14.0005C6.5625 13.5024 6.97266 13.063 7.5 13.063C7.99805 13.063 8.4375 13.5024 8.4375 14.0005V14.6157C10.1367 14.2642 11.4844 12.9165 11.8359 11.188H11.25C10.7227 11.188 10.3125 10.7778 10.3125 10.2505C10.3125 9.75244 10.7227 9.31299 11.25 9.31299H11.8359C11.4844 7.61377 10.1367 6.26611 8.4375 5.91455V6.50049C8.4375 7.02783 7.99805 7.43799 7.5 7.43799C6.97266 7.43799 6.5625 7.02783 6.5625 6.50049V5.91455C4.83398 6.26611 3.48633 7.61377 3.13477 9.31299H3.75C4.24805 9.31299 4.6875 9.75244 4.6875 10.2505C4.6875 10.7778 4.24805 11.188 3.75 11.188H3.13477ZM7.5 11.188C6.97266 11.188 6.5625 10.7778 6.5625 10.2505C6.5625 9.75244 6.97266 9.31299 7.5 9.31299C7.99805 9.31299 8.4375 9.75244 8.4375 10.2505C8.4375 10.7778 7.99805 11.188 7.5 11.188Z" fill="#202831"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.5 10.375C17.998 10.375 18.4375 10.8145 18.4375 11.3125V11.6348C21.1621 12.0449 23.3301 14.2129 23.7402 16.9375H24.0625C24.5605 16.9375 25 17.377 25 17.875C25 18.4023 24.5605 18.8125 24.0625 18.8125H23.7402C23.3301 21.5664 21.1621 23.7344 18.4375 24.1445V24.4375C18.4375 24.9648 17.998 25.375 17.5 25.375C16.9727 25.375 16.5625 24.9648 16.5625 24.4375V24.1445C13.8086 23.7344 11.6406 21.5664 11.2305 18.8125H10.9375C10.4102 18.8125 10 18.4023 10 17.875C10 17.377 10.4102 16.9375 10.9375 16.9375H11.2305C11.6406 14.2129 13.8086 12.0449 16.5625 11.6348V11.3125C16.5625 10.8145 16.9727 10.375 17.5 10.375ZM13.1348 18.8125C13.4863 20.541 14.834 21.8887 16.5625 22.2402V21.625C16.5625 21.127 16.9727 20.6875 17.5 20.6875C17.998 20.6875 18.4375 21.127 18.4375 21.625V22.2402C20.1367 21.8887 21.4844 20.541 21.8359 18.8125H21.25C20.7227 18.8125 20.3125 18.4023 20.3125 17.875C20.3125 17.377 20.7227 16.9375 21.25 16.9375H21.8359C21.4844 15.2383 20.1367 13.8906 18.4375 13.5391V14.125C18.4375 14.6523 17.998 15.0625 17.5 15.0625C16.9727 15.0625 16.5625 14.6523 16.5625 14.125V13.5391C14.834 13.8906 13.4863 15.2383 13.1348 16.9375H13.75C14.248 16.9375 14.6875 17.377 14.6875 17.875C14.6875 18.4023 14.248 18.8125 13.75 18.8125H13.1348ZM17.5 18.8125C16.9727 18.8125 16.5625 18.4023 16.5625 17.875C16.5625 17.377 16.9727 16.9375 17.5 16.9375C17.998 16.9375 18.4375 17.377 18.4375 17.875C18.4375 18.4023 17.998 18.8125 17.5 18.8125Z" fill="#202831"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,3 +1,3 @@
<svg width="15" height="19" viewBox="0 0 15 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.5 2.75049C7.99805 2.75049 8.4375 3.18994 8.4375 3.68799V4.01025C11.1621 4.42041 13.3301 6.58838 13.7402 9.31299H14.0625C14.5605 9.31299 15 9.75244 15 10.2505C15 10.7778 14.5605 11.188 14.0625 11.188H13.7402C13.3301 13.9419 11.1621 16.1099 8.4375 16.52V16.813C8.4375 17.3403 7.99805 17.7505 7.5 17.7505C6.97266 17.7505 6.5625 17.3403 6.5625 16.813V16.52C3.80859 16.1099 1.64062 13.9419 1.23047 11.188H0.9375C0.410156 11.188 0 10.7778 0 10.2505C0 9.75244 0.410156 9.31299 0.9375 9.31299H1.23047C1.64062 6.58838 3.80859 4.42041 6.5625 4.01025V3.68799C6.5625 3.18994 6.97266 2.75049 7.5 2.75049ZM3.13477 11.188C3.48633 12.9165 4.83398 14.2642 6.5625 14.6157V14.0005C6.5625 13.5024 6.97266 13.063 7.5 13.063C7.99805 13.063 8.4375 13.5024 8.4375 14.0005V14.6157C10.1367 14.2642 11.4844 12.9165 11.8359 11.188H11.25C10.7227 11.188 10.3125 10.7778 10.3125 10.2505C10.3125 9.75244 10.7227 9.31299 11.25 9.31299H11.8359C11.4844 7.61377 10.1367 6.26611 8.4375 5.91455V6.50049C8.4375 7.02783 7.99805 7.43799 7.5 7.43799C6.97266 7.43799 6.5625 7.02783 6.5625 6.50049V5.91455C4.83398 6.26611 3.48633 7.61377 3.13477 9.31299H3.75C4.24805 9.31299 4.6875 9.75244 4.6875 10.2505C4.6875 10.7778 4.24805 11.188 3.75 11.188H3.13477ZM7.5 11.188C6.97266 11.188 6.5625 10.7778 6.5625 10.2505C6.5625 9.75244 6.97266 9.31299 7.5 9.31299C7.99805 9.31299 8.4375 9.75244 8.4375 10.2505C8.4375 10.7778 7.99805 11.188 7.5 11.188Z" fill="#5CA7FF"/>
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.5 10.375C17.998 10.375 18.4375 10.8145 18.4375 11.3125V11.6348C21.1621 12.0449 23.3301 14.2129 23.7402 16.9375H24.0625C24.5605 16.9375 25 17.377 25 17.875C25 18.4023 24.5605 18.8125 24.0625 18.8125H23.7402C23.3301 21.5664 21.1621 23.7344 18.4375 24.1445V24.4375C18.4375 24.9648 17.998 25.375 17.5 25.375C16.9727 25.375 16.5625 24.9648 16.5625 24.4375V24.1445C13.8086 23.7344 11.6406 21.5664 11.2305 18.8125H10.9375C10.4102 18.8125 10 18.4023 10 17.875C10 17.377 10.4102 16.9375 10.9375 16.9375H11.2305C11.6406 14.2129 13.8086 12.0449 16.5625 11.6348V11.3125C16.5625 10.8145 16.9727 10.375 17.5 10.375ZM13.1348 18.8125C13.4863 20.541 14.834 21.8887 16.5625 22.2402V21.625C16.5625 21.127 16.9727 20.6875 17.5 20.6875C17.998 20.6875 18.4375 21.127 18.4375 21.625V22.2402C20.1367 21.8887 21.4844 20.541 21.8359 18.8125H21.25C20.7227 18.8125 20.3125 18.4023 20.3125 17.875C20.3125 17.377 20.7227 16.9375 21.25 16.9375H21.8359C21.4844 15.2383 20.1367 13.8906 18.4375 13.5391V14.125C18.4375 14.6523 17.998 15.0625 17.5 15.0625C16.9727 15.0625 16.5625 14.6523 16.5625 14.125V13.5391C14.834 13.8906 13.4863 15.2383 13.1348 16.9375H13.75C14.248 16.9375 14.6875 17.377 14.6875 17.875C14.6875 18.4023 14.248 18.8125 13.75 18.8125H13.1348ZM17.5 18.8125C16.9727 18.8125 16.5625 18.4023 16.5625 17.875C16.5625 17.377 16.9727 16.9375 17.5 16.9375C17.998 16.9375 18.4375 17.377 18.4375 17.875C18.4375 18.4023 17.998 18.8125 17.5 18.8125Z" fill="#5CA7FF"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,8 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.06 17.2178C5.93975 17.2687 5.8623 17.3869 5.8623 17.5174C5.8623 17.6478 5.93975 17.766 6.06 17.817L8.15719 18.7157C8.32023 18.7851 8.49348 18.8217 8.6708 18.8217L10.2401 18.8217L11.9521 21.7566L11.569 21.7566C11.2979 21.7566 11.0798 21.9747 11.0798 22.2457C11.0798 22.5168 11.2979 22.7349 11.569 22.7349L12.7103 22.7349L13.3625 22.7349L13.8516 22.7349C14.1227 22.7349 14.3408 22.5168 14.3408 22.2457C14.3408 21.9747 14.1227 21.7566 13.8516 21.7566L13.6886 21.7566L13.6886 18.8217L14.355 18.8217L15.4006 20.014C15.4617 20.0853 15.5514 20.1261 15.6451 20.1261L15.9712 20.1261C16.1506 20.1261 16.2973 19.9794 16.2973 19.8L16.2973 17.8434L14.9929 17.8434C14.8136 17.8434 14.6669 17.6967 14.6669 17.5174C14.6669 17.338 14.8136 17.1913 14.9929 17.1913L16.2973 17.1913L16.2973 15.2347C16.2973 15.0553 16.1506 14.9086 15.9712 14.9086L15.6451 14.9086C15.5514 14.9086 15.4617 14.9493 15.4006 15.0206L14.355 16.213L13.6886 16.213L13.6886 13.2781L13.8516 13.2781C14.1227 13.2781 14.3408 13.06 14.3408 12.789C14.3408 12.5179 14.1227 12.2998 13.8516 12.2998L13.3625 12.2998L12.7103 12.2998L11.569 12.2998C11.2979 12.2998 11.0798 12.5179 11.0798 12.789C11.0798 13.06 11.2979 13.2781 11.569 13.2781L11.9521 13.2781L10.2401 16.213L8.6708 16.213C8.49348 16.213 8.32023 16.2497 8.15719 16.319L6.06 17.2178Z" fill="#202831"/>
<path d="M18.7021 17.313H29.1372" stroke="#202831" stroke-dasharray="2 2"/>
<path d="M22.2739 19.7632L22.1739 20.6616L23.0845 20.4077L23.1651 21.0229L22.335 21.0815L22.8794 21.8066L22.3252 22.1021L21.9444 21.3379L21.6099 22.0972L21.0337 21.8066L21.5733 21.0815L20.7481 21.0181L20.8433 20.4077L21.7344 20.6616L21.6343 19.7632H22.2739Z" fill="#202831"/>
<path d="M27.2739 21.4214L27.1739 22.3198L28.0845 22.0659L28.1651 22.6812L27.335 22.7397L27.8794 23.4648L27.3252 23.7603L26.9444 22.9961L26.6099 23.7554L26.0337 23.4648L26.5733 22.7397L25.7481 22.6763L25.8433 22.0659L26.7344 22.3198L26.6343 21.4214H27.2739Z" fill="#202831"/>
<path d="M27.2739 10.7632L27.1739 11.6616L28.0845 11.4077L28.1651 12.0229L27.335 12.0815L27.8794 12.8066L27.3252 13.1021L26.9444 12.3379L26.6099 13.0972L26.0337 12.8066L26.5733 12.0815L25.7481 12.0181L25.8433 11.4077L26.7344 11.6616L26.6343 10.7632H27.2739Z" fill="#202831"/>
<path d="M22.2739 12.4214L22.1739 13.3198L23.0845 13.0659L23.1651 13.6812L22.335 13.7397L22.8794 14.4648L22.3252 14.7603L21.9444 13.9961L21.6099 14.7554L21.0337 14.4648L21.5733 13.7397L20.7481 13.6763L20.8433 13.0659L21.7344 13.3198L21.6343 12.4214H22.2739Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,8 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.06 17.2178C5.93975 17.2687 5.8623 17.3869 5.8623 17.5174C5.8623 17.6478 5.93975 17.766 6.06 17.817L8.15719 18.7157C8.32023 18.7851 8.49348 18.8217 8.6708 18.8217L10.2401 18.8217L11.9521 21.7566L11.569 21.7566C11.2979 21.7566 11.0798 21.9747 11.0798 22.2457C11.0798 22.5168 11.2979 22.7349 11.569 22.7349L12.7103 22.7349L13.3625 22.7349L13.8516 22.7349C14.1227 22.7349 14.3408 22.5168 14.3408 22.2457C14.3408 21.9747 14.1227 21.7566 13.8516 21.7566L13.6886 21.7566L13.6886 18.8217L14.355 18.8217L15.4006 20.014C15.4617 20.0853 15.5514 20.1261 15.6451 20.1261L15.9712 20.1261C16.1506 20.1261 16.2973 19.9794 16.2973 19.8L16.2973 17.8434L14.9929 17.8434C14.8136 17.8434 14.6669 17.6967 14.6669 17.5174C14.6669 17.338 14.8136 17.1913 14.9929 17.1913L16.2973 17.1913L16.2973 15.2347C16.2973 15.0553 16.1506 14.9086 15.9712 14.9086L15.6451 14.9086C15.5514 14.9086 15.4617 14.9493 15.4006 15.0206L14.355 16.213L13.6886 16.213L13.6886 13.2781L13.8516 13.2781C14.1227 13.2781 14.3408 13.06 14.3408 12.789C14.3408 12.5179 14.1227 12.2998 13.8516 12.2998L13.3625 12.2998L12.7103 12.2998L11.569 12.2998C11.2979 12.2998 11.0798 12.5179 11.0798 12.789C11.0798 13.06 11.2979 13.2781 11.569 13.2781L11.9521 13.2781L10.2401 16.213L8.6708 16.213C8.49348 16.213 8.32023 16.2497 8.15719 16.319L6.06 17.2178Z" fill="#5CA7FF"/>
<path d="M18.7021 17.313H29.1372" stroke="#5CA7FF" stroke-dasharray="2 2"/>
<path d="M22.2739 19.7632L22.1739 20.6616L23.0845 20.4077L23.1651 21.0229L22.335 21.0815L22.8794 21.8066L22.3252 22.1021L21.9444 21.3379L21.6099 22.0972L21.0337 21.8066L21.5733 21.0815L20.7481 21.0181L20.8433 20.4077L21.7344 20.6616L21.6343 19.7632H22.2739Z" fill="#5CA7FF"/>
<path d="M27.2739 21.4214L27.1739 22.3198L28.0845 22.0659L28.1651 22.6812L27.335 22.7397L27.8794 23.4648L27.3252 23.7603L26.9444 22.9961L26.6099 23.7554L26.0337 23.4648L26.5733 22.7397L25.7481 22.6763L25.8433 22.0659L26.7344 22.3198L26.6343 21.4214H27.2739Z" fill="#5CA7FF"/>
<path d="M27.2739 10.7632L27.1739 11.6616L28.0845 11.4077L28.1651 12.0229L27.335 12.0815L27.8794 12.8066L27.3252 13.1021L26.9444 12.3379L26.6099 13.0972L26.0337 12.8066L26.5733 12.0815L25.7481 12.0181L25.8433 11.4077L26.7344 11.6616L26.6343 10.7632H27.2739Z" fill="#5CA7FF"/>
<path d="M22.2739 12.4214L22.1739 13.3198L23.0845 13.0659L23.1651 13.6812L22.335 13.7397L22.8794 14.4648L22.3252 14.7603L21.9444 13.9961L21.6099 14.7554L21.0337 14.4648L21.5733 13.7397L20.7481 13.6763L20.8433 13.0659L21.7344 13.3198L21.6343 12.4214H22.2739Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,7 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.75589 22.6552C5.71059 22.7671 5.73725 22.895 5.82251 22.9802C5.90777 23.0655 6.03565 23.0921 6.14756 23.0468L8.10587 22.2635C8.25775 22.2022 8.39497 22.113 8.51087 21.9971L9.53665 20.9713L12.574 21.7706L12.3236 22.021C12.1464 22.1982 12.1464 22.4833 12.3236 22.6605C12.5008 22.8377 12.7859 22.8377 12.963 22.6605L13.7091 21.9145L14.1354 21.4882L14.4551 21.1684C14.6323 20.9913 14.6323 20.7062 14.4551 20.529C14.2779 20.3518 13.9928 20.3518 13.8156 20.529L13.7091 20.6356L11.7907 18.7172L12.2263 18.2816L13.6891 18.3775C13.7757 18.3841 13.8609 18.3522 13.9222 18.2909L14.1354 18.0778C14.2526 17.9605 14.2526 17.7687 14.1354 17.6515L12.8565 16.3726L12.0039 17.2252C11.8866 17.3424 11.6948 17.3424 11.5776 17.2252C11.4603 17.1079 11.4603 16.9161 11.5776 16.7989L12.4302 15.9463L11.1513 14.6674C11.034 14.5501 10.8422 14.5501 10.725 14.6674L10.5118 14.8805C10.4505 14.9418 10.4185 15.027 10.4252 15.1136L10.5211 16.5764L10.0855 17.012L8.16716 15.0937L8.27373 14.9871C8.4509 14.8099 8.4509 14.5248 8.27373 14.3476C8.09656 14.1705 7.81145 14.1705 7.63428 14.3476L7.31456 14.6674L6.88826 15.0937L6.14223 15.8397C5.96506 16.0169 5.96506 16.302 6.14223 16.4791C6.3194 16.6563 6.60451 16.6563 6.78168 16.4791L7.03209 16.2287L7.83145 19.2661L6.80567 20.2919C6.68976 20.4078 6.6005 20.545 6.53922 20.6969L5.75589 22.6552Z" fill="#202831"/>
<path d="M14.8257 13.4509C17.3895 11.1202 23.2162 7.01815 26.013 9.25562C29.5091 12.0525 30.2083 18.3452 23.2162 26.0365" stroke="#202831" stroke-linecap="round" stroke-dasharray="2 2"/>
<path d="M20.5171 20.9448L20.417 21.8433L21.3276 21.5894L21.4082 22.2046L20.5781 22.2632L21.1225 22.9883L20.5683 23.2837L20.1875 22.5195L19.853 23.2788L19.2768 22.9883L19.8164 22.2632L18.9912 22.1997L19.0864 21.5894L19.9775 21.8433L19.8774 20.9448H20.5171Z" fill="#202831"/>
<path d="M19.1186 15.3511L19.0185 16.2495L19.9292 15.9956L20.0097 16.6108L19.1797 16.6694L19.7241 17.3945L19.1699 17.6899L18.789 16.9258L18.4546 17.6851L17.8784 17.3945L18.4179 16.6694L17.5927 16.606L17.688 15.9956L18.5791 16.2495L18.479 15.3511H19.1186Z" fill="#202831"/>
<path d="M24.7119 15.3511L24.6118 16.2495L25.5224 15.9956L25.603 16.6108L24.7729 16.6694L25.3174 17.3945L24.7632 17.6899L24.3823 16.9258L24.0478 17.6851L23.4717 17.3945L24.0112 16.6694L23.186 16.606L23.2812 15.9956L24.1723 16.2495L24.0722 15.3511H24.7119Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,7 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.75589 22.6552C5.71059 22.7671 5.73725 22.895 5.82251 22.9802C5.90777 23.0655 6.03565 23.0921 6.14756 23.0468L8.10587 22.2635C8.25775 22.2022 8.39497 22.113 8.51087 21.9971L9.53665 20.9713L12.574 21.7706L12.3236 22.021C12.1464 22.1982 12.1464 22.4833 12.3236 22.6605C12.5008 22.8377 12.7859 22.8377 12.963 22.6605L13.7091 21.9145L14.1354 21.4882L14.4551 21.1684C14.6323 20.9913 14.6323 20.7062 14.4551 20.529C14.2779 20.3518 13.9928 20.3518 13.8156 20.529L13.7091 20.6356L11.7907 18.7172L12.2263 18.2816L13.6891 18.3775C13.7757 18.3841 13.8609 18.3522 13.9222 18.2909L14.1354 18.0778C14.2526 17.9605 14.2526 17.7687 14.1354 17.6515L12.8565 16.3726L12.0039 17.2252C11.8866 17.3424 11.6948 17.3424 11.5776 17.2252C11.4603 17.1079 11.4603 16.9161 11.5776 16.7989L12.4302 15.9463L11.1513 14.6674C11.034 14.5501 10.8422 14.5501 10.725 14.6674L10.5118 14.8805C10.4505 14.9418 10.4185 15.027 10.4252 15.1136L10.5211 16.5764L10.0855 17.012L8.16716 15.0937L8.27373 14.9871C8.4509 14.8099 8.4509 14.5248 8.27373 14.3476C8.09656 14.1705 7.81145 14.1705 7.63428 14.3476L7.31456 14.6674L6.88826 15.0937L6.14223 15.8397C5.96506 16.0169 5.96506 16.302 6.14223 16.4791C6.3194 16.6563 6.60451 16.6563 6.78168 16.4791L7.03209 16.2287L7.83145 19.2661L6.80567 20.2919C6.68976 20.4078 6.6005 20.545 6.53922 20.6969L5.75589 22.6552Z" fill="#5CA7FF"/>
<path d="M14.8257 13.4509C17.3895 11.1202 23.2162 7.01815 26.013 9.25562C29.5091 12.0525 30.2083 18.3452 23.2162 26.0365" stroke="#5CA7FF" stroke-linecap="round" stroke-dasharray="2 2"/>
<path d="M20.5171 20.9448L20.417 21.8433L21.3276 21.5894L21.4082 22.2046L20.5781 22.2632L21.1225 22.9883L20.5683 23.2837L20.1875 22.5195L19.853 23.2788L19.2768 22.9883L19.8164 22.2632L18.9912 22.1997L19.0864 21.5894L19.9775 21.8433L19.8774 20.9448H20.5171Z" fill="#5CA7FF"/>
<path d="M19.1186 15.3511L19.0185 16.2495L19.9292 15.9956L20.0097 16.6108L19.1797 16.6694L19.7241 17.3945L19.1699 17.6899L18.789 16.9258L18.4546 17.6851L17.8784 17.3945L18.4179 16.6694L17.5927 16.606L17.688 15.9956L18.5791 16.2495L18.479 15.3511H19.1186Z" fill="#5CA7FF"/>
<path d="M24.7119 15.3511L24.6118 16.2495L25.5224 15.9956L25.603 16.6108L24.7729 16.6694L25.3174 17.3945L24.7632 17.6899L24.3823 16.9258L24.0478 17.6851L23.4717 17.3945L24.0112 16.6694L23.186 16.606L23.2812 15.9956L24.1723 16.2495L24.0722 15.3511H24.7119Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.582 14.7988C21.9629 14.4473 21.9629 13.832 21.582 13.4805C21.2305 13.0996 20.6152 13.0996 20.2637 13.4805L17.1875 16.5566L14.082 13.4805C13.7305 13.0996 13.1152 13.0996 12.7637 13.4805C12.3828 13.832 12.3828 14.4473 12.7637 14.7988L15.8398 17.875L12.7637 20.9805C12.3828 21.332 12.3828 21.9473 12.7637 22.2988C13.1152 22.6797 13.7305 22.6797 14.082 22.2988L17.1875 19.2227L20.2637 22.2988C20.6152 22.6797 21.2305 22.6797 21.582 22.2988C21.9629 21.9473 21.9629 21.332 21.582 20.9805L18.5059 17.875L21.582 14.7988Z" fill="#202831"/>
</svg>

After

Width:  |  Height:  |  Size: 647 B

View File

@ -0,0 +1,3 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.582 14.7988C21.9629 14.4473 21.9629 13.832 21.582 13.4805C21.2305 13.0996 20.6152 13.0996 20.2637 13.4805L17.1875 16.5566L14.082 13.4805C13.7305 13.0996 13.1152 13.0996 12.7637 13.4805C12.3828 13.832 12.3828 14.4473 12.7637 14.7988L15.8398 17.875L12.7637 20.9805C12.3828 21.332 12.3828 21.9473 12.7637 22.2988C13.1152 22.6797 13.7305 22.6797 14.082 22.2988L17.1875 19.2227L20.2637 22.2988C20.6152 22.6797 21.2305 22.6797 21.582 22.2988C21.9629 21.9473 21.9629 21.332 21.582 20.9805L18.5059 17.875L21.582 14.7988Z" fill="#5CA7FF"/>
</svg>

After

Width:  |  Height:  |  Size: 647 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

@ -19,6 +19,7 @@
--accent-green : #8bff63;
--accent-light-blue : #5ca7ff;
--accent-light-red : #F5B6B6;
--background-grey : #3d4651;
--background-slate-blue : #363c43;
@ -54,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" );
@ -84,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 ***/
@ -198,17 +199,24 @@
/*** 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" );
--unit-bomb-marker-height: 50px;
--unit-bomb-marker-width: 50px;
--unit-bomb-marker-blue-url: url( "/themes/olympus/images/icon_bomb_blue.svg" );
--unit-bomb-marker-neutral-url: url( "/themes/olympus/images/icon_bomb_neutral.svg" );
--unit-bomb-marker-red-url: url( "/themes/olympus/images/icon_bomb_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

@ -1,6 +1,6 @@
import { LatLng } from "leaflet";
import { getActiveCoalition, setActiveCoalition } from "..";
import { spawnAircraft, spawnGroundUnit } from "../server/server";
import { spawnAircraft, spawnGroundUnit, spawnSmoke } from "../server/server";
import { aircraftDatabase } from "../units/aircraftdatabase";
import { groundUnitsDatabase } from "../units/groundunitsdatabase";
import { ContextMenu } from "./contextmenu";
@ -21,7 +21,7 @@ export class MapContextMenu extends ContextMenu {
#aircraftLoadoutDropdown: Dropdown;
#groundUnitRoleDropdown: Dropdown;
#groundUnitTypeDropdown: Dropdown;
#spawnOptions: SpawnOptions = {role: "", type: "", latlng: new LatLng(0, 0), loadout: null, coalition: "blue", airbaseName: null};
#spawnOptions: SpawnOptions = { role: "", type: "", latlng: new LatLng(0, 0), loadout: null, coalition: "blue", airbaseName: null };
constructor(id: string) {
super(id);
@ -35,33 +35,38 @@ export class MapContextMenu extends ContextMenu {
document.addEventListener("contextMenuShow", (e: any) => {
this.showSubMenu(e.detail.type);
})
});
document.addEventListener("contextMenuDeployAircraft", () => {
this.hide();
this.#spawnOptions.coalition = getActiveCoalition();
if (this.#spawnOptions)
spawnAircraft(this.#spawnOptions);
})
});
document.addEventListener("contextMenuDeployGroundUnit", () => {
this.hide();
this.#spawnOptions.coalition = getActiveCoalition();
if (this.#spawnOptions)
spawnGroundUnit(this.#spawnOptions);
})
});
document.addEventListener("contextMenuDeploySmoke", (e: any) => {
this.hide();
spawnSmoke(e.detail.color, this.getLatLng());
});
this.hide();
}
show(x: number, y: number, latlng: LatLng) {
this.#spawnOptions = {role: "", type: "", latlng: new LatLng(0, 0), loadout: null, coalition: "blue", airbaseName: null};
this.#spawnOptions.airbaseName = null;
super.show(x, y, latlng);
this.#spawnOptions.latlng = latlng;
this.showUpperBar();
}
showSubMenu(type: string){
showSubMenu(type: string) {
this.getContainer()?.querySelector("#aircraft-spawn-menu")?.classList.toggle("hide", type !== "aircraft");
this.getContainer()?.querySelector("#aircraft-spawn-button")?.classList.toggle("is-open", type === "aircraft");
this.getContainer()?.querySelector("#ground-unit-spawn-menu")?.classList.toggle("hide", type !== "ground-unit");
@ -84,31 +89,28 @@ export class MapContextMenu extends ContextMenu {
this.getContainer()?.querySelector("#upper-bar")?.classList.toggle("hide", true);
}
setAirbaseName(airbaseName: string)
{
setAirbaseName(airbaseName: string) {
this.#spawnOptions.airbaseName = airbaseName;
}
setLatLng(latlng: LatLng)
{
setLatLng(latlng: LatLng) {
this.#spawnOptions.latlng = latlng;
}
#onSwitch(e: any) {
if (this.getContainer() != null) {
if (e.srcElement.checked)
if (e.srcElement.checked)
setActiveCoalition("red");
else
else
setActiveCoalition("blue");
}
}
/********* Aircraft spawn menu *********/
#setAircraftRole(role: string)
{
#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();
}
@ -122,20 +124,18 @@ export class MapContextMenu extends ContextMenu {
this.clip();
}
#setAircraftType(label: string)
{
#setAircraftType(label: string) {
this.#resetAircraftType();
var type = aircraftDatabase.getNameByLabel(label);
if (type != null)
{
var type = aircraftDatabase.getByLabel(label)?.name || null;
if (type != null) {
this.#spawnOptions.type = type;
this.#aircraftLoadoutDropdown.setOptions(aircraftDatabase.getLoadoutNamesByRole(type, this.#spawnOptions.role));
this.#aircraftLoadoutDropdown.selectValue(0);
var image = (<HTMLImageElement>this.getContainer()?.querySelector("#unit-image"));
image.src = `images/units/${aircraftDatabase.getByLabel(label)?.filename}`;
image.classList.toggle("hide", false);
image.classList.toggle("hide", false);
}
this.clip();
}
@ -147,15 +147,13 @@ export class MapContextMenu extends ContextMenu {
this.clip();
}
#setAircraftLoadout(loadoutName: string)
{
var loadout = aircraftDatabase.getLoadoutsByName(this.#spawnOptions.type, loadoutName);
if (loadout)
{
#setAircraftLoadout(loadoutName: string) {
var loadout = aircraftDatabase.getLoadoutByName(this.#spawnOptions.type, loadoutName);
if (loadout) {
this.#spawnOptions.loadout = loadout.code;
(<HTMLButtonElement>this.getContainer()?.querySelector("#aircraft-spawn-menu")?.querySelector(".deploy-unit-button")).disabled = false;
var items = loadout.items.map((item: any) => {return `${item.quantity}x ${item.name}`;});
items.length == 0? items.push("Empty loadout"): "";
var items = loadout.items.map((item: any) => { return `${item.quantity}x ${item.name}`; });
items.length == 0 ? items.push("Empty loadout") : "";
(<HTMLButtonElement>this.getContainer()?.querySelector("#loadout-list")).replaceChildren(
...items.map((item: any) => {
var div = document.createElement('div');
@ -168,11 +166,10 @@ export class MapContextMenu extends ContextMenu {
}
/********* Ground unit spawn menu *********/
#setGroundUnitRole(role: string)
{
#setGroundUnitRole(role: string) {
this.#spawnOptions.role = role;
this.#resetGroundUnitRole();
this.#groundUnitTypeDropdown.setOptions(groundUnitsDatabase.getLabelsByRole(role));
this.#resetGroundUnitType();
this.#groundUnitTypeDropdown.setOptions(groundUnitsDatabase.getByRole(role).map((blueprint) => { return blueprint.label }));
this.#groundUnitTypeDropdown.selectValue(0);
this.clip();
}
@ -186,12 +183,10 @@ export class MapContextMenu extends ContextMenu {
this.clip();
}
#setGroundUnitType(label: string)
{
#setGroundUnitType(label: string) {
this.#resetGroundUnitType();
var type = groundUnitsDatabase.getNameByLabel(label);
if (type != null)
{
var type = groundUnitsDatabase.getByLabel(label)?.name || null;
if (type != null) {
this.#spawnOptions.type = type;
(<HTMLButtonElement>this.getContainer()?.querySelector("#ground-unit-spawn-menu")?.querySelector(".deploy-unit-button")).disabled = false;
}

View File

@ -75,7 +75,7 @@ export class Slider {
{
this.#value = newValue;
if (this.#slider != null)
this.#slider.value = String((newValue - this.#minValue) / (this.#maxValue - this.#minValue) * 100);
this.#slider.value = String((newValue - this.#minValue) / (this.#maxValue - this.#minValue) * parseFloat(this.#slider.max));
this.#onValue()
}
}
@ -120,7 +120,7 @@ export class Slider {
this.#dragged = false;
if (this.#slider != null)
{
this.#value = this.#minValue + parseFloat(this.#slider.value) / 100 * (this.#maxValue - this.#minValue);
this.#value = this.#minValue + parseFloat(this.#slider.value) / parseFloat(this.#slider.max) * (this.#maxValue - this.#minValue);
this.#callback(this.getValue());
}
}

View File

@ -9,7 +9,7 @@ import { AIC } from "./aic/aic";
import { ATC } from "./atc/atc";
import { FeatureSwitches } from "./featureswitches";
import { LogPanel } from "./panels/logpanel";
import { getAirbases, getBullseye as getBullseyes, getMission, getUnits, toggleDemoEnabled } from "./server/server";
import { getAirbases, getBullseye as getBullseyes, getConfig, getMission, getUnits, setAddress, toggleDemoEnabled } from "./server/server";
import { UnitDataTable } from "./units/unitdatatable";
var map: Map;
@ -69,16 +69,33 @@ function setup() {
/* Setup event handlers */
setupEvents();
/* On the first connection, force request of full data */
getAirbases((data: AirbasesData) => getMissionData()?.update(data));
getBullseyes((data: BullseyesData) => getMissionData()?.update(data));
getMission((data: any) => {getMissionData()?.update(data)});
getUnits((data: UnitsData) => getUnitsManager()?.update(data), true /* Does a full refresh */);
/* Start periodically requesting updates */
startPeriodicUpdate();
getConfig(readConfig)
}
function readConfig(config: any)
{
if (config && config["server"] != undefined && config["server"]["address"] != undefined && config["server"]["port"] != undefined)
{
const address = config["server"]["address"];
const port = config["server"]["port"];
if ((typeof address === 'string' || address instanceof String) && typeof port == 'number')
{
setAddress(window.location.hostname, <number>port);
}
/* On the first connection, force request of full data */
getAirbases((data: AirbasesData) => getMissionData()?.update(data));
getBullseyes((data: BullseyesData) => getMissionData()?.update(data));
getMission((data: any) => {getMissionData()?.update(data)});
getUnits((data: UnitsData) => getUnitsManager()?.update(data), true /* Does a full refresh */);
/* Start periodically requesting updates */
startPeriodicUpdate();
}
else {
throw new Error('Could not read configuration file!');
}
}
function startPeriodicUpdate() {
requestUpdate();
@ -124,13 +141,16 @@ function checkSessionHash(newSessionHash: string) {
function setupEvents() {
/* Generic clicks */
document.addEventListener("click", (ev) => {
if (ev instanceof PointerEvent && ev.target instanceof HTMLElement) {
if (ev instanceof MouseEvent && ev.target instanceof HTMLElement) {
const target = ev.target;
if (target.classList.contains("olympus-dialog-close")) {
target.closest("div.olympus-dialog")?.classList.add("hide");
}
const triggerElement = target.closest("[data-on-click]");
if (triggerElement instanceof HTMLElement) {
const eventName: string = triggerElement.dataset.onClick || "";
let params = JSON.parse(triggerElement.dataset.onClickParams || "{}");
@ -184,15 +204,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())
}
@ -228,6 +240,7 @@ export class Map extends L.Map {
#onMouseDown(e: any)
{
this.hideAllContextMenus();
if ((e.originalEvent.which == 1) && (e.originalEvent.button == 0))
this.dragging.disable();
}

View File

@ -26,6 +26,27 @@ export function ConvertDDToDMS(D: number, lng: boolean) {
}
export function dataPointMap( container:HTMLElement, data:any) {
Object.keys( data ).forEach( ( key ) => {
const val = "" + data[ key ]; // Ensure a string
container.querySelectorAll( `[data-point="${key}"]`).forEach( el => {
// We could probably have options here
if ( el instanceof HTMLInputElement ) {
el.value = val;
} else if ( el instanceof HTMLElement ) {
el.innerText = val;
}
});
});
}
export function deg2rad(deg: number) {
var pi = Math.PI;
return deg * (pi / 180);

View File

@ -1,25 +1,30 @@
import { getUnitsManager } from "..";
import { Slider } from "../controls/slider";
import { dataPointMap } from "../other/utils";
import { aircraftDatabase } from "../units/aircraftdatabase";
import { groundUnitsDatabase } from "../units/groundunitsdatabase";
import { Aircraft, GroundUnit, Unit } from "../units/unit";
import { UnitsManager } from "../units/unitsmanager";
import { UnitDatabase } from "../units/unitdatabase";
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 ROEs: string[] = ["Free", "Designated free", "Designated", "Return", "Hold"]; // Full list
// const reactionsToThreat: string[] = ["None", "Passive", "Evade", "Escape", "Abort"]; // Full list
const ROEs: string[] = [ "Hold", "Return", "Designated", "Free" ];
const reactionsToThreat: string[] = [ "None", "Passive", "Evade" ];
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,51 +33,68 @@ 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) =>
{
var button = document.createElement("button");
button.innerText = unit.getBaseData().unitName;
if (unit instanceof Aircraft)
button.setAttribute( "data-short-label", aircraftDatabase.getShortLabelByName(unit.getBaseData().name));
else if (unit instanceof GroundUnit)
button.setAttribute( "data-short-label", groundUnitsDatabase.getShortLabelByName(unit.getBaseData().name));
else
button.setAttribute( "data-short-label", "");
button.setAttribute( "data-coalition", unit.getMissionData().coalition );
button.classList.add( "pill", "highlight-coalition" )
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);
dataPointMap( this.getElement(), {
"shortLabel" : database?.getByName(unit.getBaseData().name)?.shortLabel,
"unitName": unit.getBaseData().unitName
});
});
}
var button = document.createElement("button");
var callsign = unit.getBaseData().unitName || "";
button.innerText = unit.getBaseData().unitName;
button.setAttribute("data-short-label", database?.getByName(unit.getBaseData().name)?.shortLabel || "");
button.setAttribute("data-callsign", callsign);
button.setAttribute("data-coalition", unit.getMissionData().coalition);
button.classList.add("pill", "highlight-coalition")
button.addEventListener("click", () => getUnitsManager().selectUnit(unit.ID, true));
return (button);
@ -80,25 +102,33 @@ 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[])
{
this.#airspeedSlider.show();
this.#altitudeSlider.show();
if (getUnitsManager().getSelectedUnitsType() !== undefined)
this.#airspeedSlider.show()
else
this.#airspeedSlider.hide();
if (getUnitsManager().getSelectedUnitsType() === "Aircraft" || getUnitsManager().getSelectedUnitsType() === "Helicopter")
this.#altitudeSlider.show()
else
this.#altitudeSlider.hide();
this.getElement().querySelector(`#categories-tooltip`)?.classList.toggle("hide", getUnitsManager().getSelectedUnitsType() !== undefined);
var unitsType = getUnitsManager().getSelectedUnitsType();
var targetAltitude = getUnitsManager().getSelectedUnitsTargetAltitude();
var targetSpeed = getUnitsManager().getSelectedUnitsTargetSpeed();
if (unitsType != undefined)
{
if (unitsType != undefined) {
if (["GroundUnit", "NavyUnit"].includes(unitsType))
this.#altitudeSlider.hide()

View File

@ -1,34 +1,44 @@
import { getUnitsManager } from "..";
import { ConvertDDToDMS, rad2deg } from "../other/utils";
import { aircraftDatabase } from "../units/aircraftdatabase";
import { Unit } from "../units/unit";
import { Panel } from "./panel";
export class UnitInfoPanel extends Panel {
#unitName: HTMLElement;
#groupName: HTMLElement;
#name: HTMLElement;
#heading: HTMLElement;
#altitude: HTMLElement;
#currentTask: HTMLElement;
#fuelBar: HTMLElement;
#fuelPercentage: HTMLElement;
#groundSpeed: HTMLElement;
#fuel: HTMLElement;
#groupName: HTMLElement;
#heading: HTMLElement;
#name: HTMLElement;
#latitude: HTMLElement;
#longitude: HTMLElement;
#currentTask: HTMLElement;
#loadoutContainer: HTMLElement;
#silhouette: HTMLElement;
#unitControl: HTMLElement;
#unitLabel: HTMLElement;
#unitName: HTMLElement;
constructor(ID: string) {
super(ID);
this.#unitName = <HTMLElement>(this.getElement().querySelector("#unit-name"));
this.#groupName= <HTMLElement>(this.getElement().querySelector("#group-name"));
this.#name = <HTMLElement>(this.getElement().querySelector("#name"));
this.#heading = <HTMLElement>(this.getElement().querySelector("#heading"));
this.#altitude = <HTMLElement>(this.getElement().querySelector("#altitude"));
this.#groundSpeed = <HTMLElement>(this.getElement().querySelector("#ground-speed"));
this.#fuel = <HTMLElement>(this.getElement().querySelector("#fuel"));
this.#latitude = <HTMLElement>(this.getElement().querySelector("#latitude"));
this.#longitude = <HTMLElement>(this.getElement().querySelector("#longitude"));
this.#currentTask = <HTMLElement>(this.getElement().querySelector("#current-task"));
this.#altitude = <HTMLElement>(this.getElement().querySelector("#altitude"));
this.#currentTask = <HTMLElement>(this.getElement().querySelector("#current-task"));
this.#groundSpeed = <HTMLElement>(this.getElement().querySelector("#ground-speed"));
this.#fuelBar = <HTMLElement>(this.getElement().querySelector("#fuel-bar"));
this.#fuelPercentage = <HTMLElement>(this.getElement().querySelector("#fuel-percentage"));
this.#groupName = <HTMLElement>(this.getElement().querySelector("#group-name"));
this.#heading = <HTMLElement>(this.getElement().querySelector("#heading"));
this.#name = <HTMLElement>(this.getElement().querySelector("#name"));
this.#latitude = <HTMLElement>(this.getElement().querySelector("#latitude"));
this.#loadoutContainer = <HTMLElement>(this.getElement().querySelector("#loadout-container"));
this.#longitude = <HTMLElement>(this.getElement().querySelector("#longitude"));
this.#silhouette = <HTMLElement>(this.getElement().querySelector("#loadout-silhouette"));
this.#unitControl = <HTMLElement>(this.getElement().querySelector("#unit-control"));
this.#unitLabel = <HTMLElement>(this.getElement().querySelector("#unit-label"));
this.#unitName = <HTMLElement>(this.getElement().querySelector("#unit-name"));
document.addEventListener("unitsSelection", (e: CustomEvent<Unit[]>) => this.#onUnitsSelection(e.detail));
document.addEventListener("unitsDeselection", (e: CustomEvent<Unit[]>) => this.#onUnitsDeselection(e.detail));
@ -40,29 +50,53 @@ export class UnitInfoPanel extends Panel {
#onUnitUpdate(unit: Unit) {
if (this.getElement() != null && this.getVisible() && unit.getSelected()) {
const baseData = unit.getBaseData();
/* Set the unit info */
this.#unitName.innerText = unit.getBaseData().unitName;
this.#groupName.innerText = unit.getBaseData().groupName;
this.#name.innerText = unit.getBaseData().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;
//this.#name.innerText = baseData.name;
//this.#heading.innerText = String(Math.floor(rad2deg(unit.getFlightData().heading)) + " °");
//this.#altitude.innerText = String(Math.floor(unit.getFlightData().altitude / 0.3048) + " ft");
//this.#groundSpeed.innerText = String(Math.floor(unit.getFlightData().speed * 1.94384) + " kts");
//this.#fuel.innerText = String(unit.getMissionData().fuel + "%");
this.#fuelBar.style.width = String(unit.getMissionData().fuel + "%");
this.#fuelPercentage.dataset.percentage = "" + unit.getMissionData().fuel;
//this.#latitude.innerText = ConvertDDToDMS(unit.getFlightData().latitude, false);
//this.#longitude.innerText = ConvertDDToDMS(unit.getFlightData().longitude, true);
this.#currentTask.dataset.currentTask = unit.getTaskData().currentTask !== ""? unit.getTaskData().currentTask: "No task";
this.#currentTask.dataset.coalition = unit.getMissionData().coalition;
this.#silhouette.setAttribute( "style", `--loadout-background-image:url('/images/units/${aircraftDatabase.getByName( baseData.name )?.filename}');` );;
/* Add the loadout elements */
this.#loadoutContainer.replaceChildren(...Object.values(unit.getMissionData().ammo).map(
(ammo: any) => {
var el = document.createElement("div");
el.classList.add("pill", "loadout-item");
el.dataset.loadoutQty = ammo.count;
el.dataset.loadoutItem = ammo.desc.displayName;
return el;
const items = <HTMLElement>this.#loadoutContainer.querySelector( "#loadout-items" );
if ( items ) {
const ammo = Object.values( unit.getMissionData().ammo );
if ( ammo.length > 0 ) {
items.replaceChildren(...Object.values(unit.getMissionData().ammo).map(
(ammo: any) => {
var el = document.createElement("div");
el.dataset.qty = ammo.count;
el.dataset.item = ammo.desc.displayName;
return el;
}
));
} else {
items.innerText = "No loadout";
}
))
}
}
}

View File

@ -2,9 +2,8 @@ import * as L from 'leaflet'
import { setConnected } from '..';
import { SpawnOptions } from '../controls/mapcontextmenu';
/* Edit here to change server address */
const REST_ADDRESS = "http://localhost:30000/olympus";
const DEMO_ADDRESS = "http://localhost:3000/demo";
var REST_ADDRESS = "http://localhost:30000/olympus";
var DEMO_ADDRESS = window.location.href + "demo";
const UNITS_URI = "units";
const LOGS_URI = "logs";
const AIRBASES_URI = "airbases";
@ -24,9 +23,14 @@ export function GET(callback: CallableFunction, uri: string){
xmlHttp.open("GET", `${demoEnabled? DEMO_ADDRESS: REST_ADDRESS}/${uri}`, true);
xmlHttp.onload = function (e) {
var data = JSON.parse(xmlHttp.responseText);
callback(data);
lastUpdateTime = parseInt(data.time);
setConnected(true);
if (parseInt(data.time) > lastUpdateTime)
{
callback(data);
lastUpdateTime = parseInt(data.time);
if (isNaN(lastUpdateTime))
lastUpdateTime = 0;
setConnected(true);
}
};
xmlHttp.onerror = function () {
console.error("An error occurred during the XMLHttpRequest");
@ -45,6 +49,24 @@ export function POST(request: object, callback: CallableFunction){
xhr.send(JSON.stringify(request));
}
export function getConfig(callback: CallableFunction) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", window.location.href + "config", true);
xmlHttp.onload = function (e) {
var data = JSON.parse(xmlHttp.responseText);
callback(data);
};
xmlHttp.onerror = function () {
console.error("An error occurred during the XMLHttpRequest, could not retrieve configuration file");
};
xmlHttp.send(null);
}
export function setAddress(address: string, port: number) {
REST_ADDRESS = `http://${address}:${port}/olympus`
console.log(`Setting REST address to ${REST_ADDRESS}`)
}
export function getAirbases(callback: CallableFunction) {
GET(callback, AIRBASES_URI);
}

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,120 @@ 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>
`);
getMarkerHTML() {
var role = groundUnitsDatabase.getByName(this.getBaseData().name)?.loadouts[0].roles[0];
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">${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

@ -8,6 +8,7 @@ export class UnitsManager {
#units: { [ID: number]: Unit };
#copiedUnits: Unit[];
#selectionEventDisabled: boolean = false;
#pasteDisabled: boolean = false;
constructor() {
this.#units = {};
@ -330,10 +331,15 @@ export class UnitsManager {
pasteUnits()
{
for (let idx in this.#copiedUnits)
if (!this.#pasteDisabled)
{
var unit = this.#copiedUnits[idx];
cloneUnit(unit.ID, getMap().getMouseCoordinates());
for (let idx in this.#copiedUnits)
{
var unit = this.#copiedUnits[idx];
cloneUnit(unit.ID, getMap().getMouseCoordinates());
}
this.#pasteDisabled = true;
setTimeout(() => this.#pasteDisabled = false, 250);
}
}

View File

@ -67,11 +67,11 @@
<button class="deploy-unit-button" title="" data-active-coalition="blue" data-on-click="contextMenuDeployGroundUnit" disabled>Deploy unit</button>
</div>
<div id="smoke-spawn-menu" class="ol-panel hide">
<button class="smoke-button" title="" data-smoke-color="white" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "type": "white" }'>White smoke</button>
<button class="smoke-button" title="" data-smoke-color="blue" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "type": "blue" }'>Blue smoke</button>
<button class="smoke-button" title="" data-smoke-color="red" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "type": "red" }'>Red smoke</button>
<button class="smoke-button" title="" data-smoke-color="green" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "type": "green" }'>Green smoke</button>
<button class="smoke-button" title="" data-smoke-color="orange" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "type": "orange" }'>Orange smoke</button>
<button class="smoke-button" title="" data-smoke-color="white" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "color": "white" }'>White smoke</button>
<button class="smoke-button" title="" data-smoke-color="blue" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "color": "blue" }'>Blue smoke</button>
<button class="smoke-button" title="" data-smoke-color="red" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "color": "red" }'>Red smoke</button>
<button class="smoke-button" title="" data-smoke-color="green" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "color": "green" }'>Green smoke</button>
<button class="smoke-button" title="" data-smoke-color="orange" data-on-click="contextMenuDeploySmoke" data-on-click-params='{ "color": "orange" }'>Orange smoke</button>
</div>
</div>

View File

@ -10,13 +10,13 @@
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;600;700;800&display=swap" rel="stylesheet">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Z4L2TC3YX0"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-Z4L2TC3YX0');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Z4L2TC3YX0"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-Z4L2TC3YX0');
</script>
</head>

View File

@ -7,7 +7,7 @@
<div class="ol-select-options">
<div id="olympus-toolbar-summary">
<h3>Olympus</h3>
<div class="accent-green app-version-number">v0.1.0</div>
<div class="accent-green app-version-number">v0.1.1</div>
</div>
<div>
<a href="https://www.discord.com" target="_blank">Discord</a>
@ -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>
@ -1019,6 +1019,50 @@
</div>
</div>
<div class="content">
<div class="content-header">Airfield menu</div>
<div class="content-body">
<div class="example">
<div id="unit-info-panel" class="ol-panel" style="position:relative;">
<div class="ol-panel-board">
<div id="general" class="panel-section">
<h3 class="unit-name">Olympus 1-1</h3>
<div class="ol-group">
<div class="unit-label">Name</div>
<div class="unit-control">AI Controlled</div>
</div>
<div id="current-task" class="pill highlight-coalition" data-coalition="blue" data-current-task="Awaiting tasking"></div>
</div>
<div id="loadout-container" class="panel-section">
<div id="loadout">
<div id="loadout-silhouette" style="--loadout-background-image:url('/images/units/f-15.png');"></div>
<div id="loadout-items" data-empty-message="Empty loadout">
Empty loadout
</div>
</div>
<div id="fuel-percentage" data-percentage="45"></div>
<div id="fuel-display">
<div id="fuel-bar" class="highlight-coalition" data-coalition="blue" style="width:0%;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section>

View File

@ -3,12 +3,12 @@
<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">18</div>
<div class="unit-short-label" data-point="shortLabel"></div>
</div>
<input id="unit-name" value="Olympus 1-1" readonly disabled />
<input id="unit-name" value="" data-point="unitName" readonly disabled />
<!-- <button id="edit-unit-name" data-on-click="editUnitName"></button> -->
</div>
@ -36,6 +36,7 @@
<input type="range" min="0" max="100" value="0" class="slider">
</div>
<h5 id="categories-tooltip" class="hide">Multiple categories selected</h5>
</div>
</div>

View File

@ -3,25 +3,25 @@
<div class="ol-panel-board">
<div id="general" class="panel-section">
<h3 id="unit-name">Olympus 1-1</h3>
<h3 id="unit-name"></h3>
<div class="ol-group">
<div id="name" class="pill highlight-primary">Name</div>
<div id="group-name" class="pill highlight-primary">Group</div>
<div id="unit-label"></div>
<div id="unit-control"></div>
</div>
<div id="current-task" class="pill highlight-coalition" data-coalition="blue" data-current-task=""></div>
</div>
<div id="loadout-data" class="panel-section">
<div id="loadout-container" class="panel-section">
<div id="loadout">
<div id="loadout-silhouette"></div>
<div id="loadout-items">
</div>
</div>
<h4 id="loadout-label">Loadout</h4>
<dl class="ol-data-grid">
<dt>Fuel</dt>
<dd id="loadout-fuel-level" data-fuel-level="69"></dd>
</dl>
<div id="loadout-container" class="ol-group wrap">
<!-- Here the loadout elements will be shown -->
<div id="fuel-percentage" data-percentage=""></div>
<div id="fuel-display">
<div id="fuel-bar" class="highlight-coalition" data-coalition="blue" style="width:30%;"></div>
</div>
</div>

BIN
img/olympus.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,23 +1,25 @@
#define nwjsFolder "C:\Users\dpass\Documents\nwjs\"
#define version "v0.1.1-alpha"
[Setup]
AppName=DCS Olympus
AppVerName=DCS Olympus Alpha v0.1.0
AppVerName={#version}
DefaultDirName={usersavedgames}\DCS.openbeta
DefaultGroupName=DCSOlympus
OutputBaseFilename=DCSOlympus
OutputBaseFilename=DCSOlympus_{#version}
UninstallFilesDir={app}\Mods\Services\Olympus
;SetupIconFile="..\img\olympus.ico"
[Tasks]
; NOTE: The following entry contains English phrases ("Create a desktop icon" and "Additional icons"). You are free to translate them into another language if required.
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
;Source: "..\scripts\OlympusExport.lua"; DestDir: "{app}\Scripts"; Flags: ignoreversion
;Source: "..\scripts\OlympusPatcher.exe"; DestDir: "{app}\Scripts"; Flags: ignoreversion
Source: "..\scripts\OlympusHook.lua"; DestDir: "{app}\Scripts\Hooks"; Flags: ignoreversion
Source: "..\olympus.json"; DestDir: "{app}\Mods\Services\Olympus"; Flags: onlyifdoesntexist
Source: "..\scripts\OlympusCommand.lua"; DestDir: "{app}\Mods\Services\Olympus\Scripts"; Flags: ignoreversion
Source: "..\scripts\unitPayloads.lua"; DestDir: "{app}\Mods\Services\Olympus\Scripts"; Flags: ignoreversion
;Source: "..\scripts\OlympusMission.lua"; DestDir: "{app}\Mods\Services\Olympus\Scripts"; Flags: ignoreversion
@ -30,6 +32,7 @@ Source: "..\client\public\*"; DestDir: "{app}\Mods\Services\Olympus\client\publi
Source: "..\client\routes\*"; DestDir: "{app}\Mods\Services\Olympus\client\routes"; Flags: ignoreversion recursesubdirs;
Source: "..\client\views\*"; DestDir: "{app}\Mods\Services\Olympus\client\views"; Flags: ignoreversion recursesubdirs;
Source: "..\client\*.*"; DestDir: "{app}\Mods\Services\Olympus\client"; Flags: ignoreversion;
Source: "..\img\olympus.ico"; DestDir: "{app}\Mods\Services\Olympus\img"; Flags: ignoreversion;
Source: "{#nwjsFolder}\*.*"; DestDir: "{app}\Mods\Services\Olympus\client"; Flags: ignoreversion recursesubdirs;
[Code]
@ -58,7 +61,7 @@ Root: HKCU; Subkey: "Environment"; ValueType: expandsz; ValueName: "Path"; Value
ChangesEnvironment=yes
[Icons]
Name: "{userdesktop}\DCS Olympus Client"; Filename: "{app}\Mods\Services\Olympus\client\nw.exe"; Tasks: desktopicon
Name: "{userdesktop}\DCS Olympus Client"; Filename: "{app}\Mods\Services\Olympus\client\nw.exe"; Tasks: desktopicon; IconFilename: "{app}\Mods\Services\Olympus\img\olympus.ico"
;[Run]
;Filename: "{app}\Scripts\OlympusPatcher.exe"; Parameters: "-i"

View File

@ -15,7 +15,7 @@ declare_plugin(self_ID,
shortName = "Olympus",
fileMenuName = "Olympus",
version = "0.1.0-alpha",
version = "0.1.1-alpha",
state = "installed",
developerName= "DCS Refugees 767 squadron",
info = _("DCS Olympus is a mod for DCS World. It allows users to spawn, control, task, group, and remove units from a DCS World server using a real-time map interface, similarly to Real Time Strategy games. The user interface also provides useful informations units, like loadouts, fuel, tasking, and so on. In the future, more features for DCS World GCI and JTAC will be available."),

6
olympus.json Normal file
View File

@ -0,0 +1,6 @@
{
"server": {
"address": "localhost",
"port": 30000
}
}

View File

@ -1,4 +1,4 @@
local version = "v0.1.0-alpha"
local version = "v0.1.1-alpha"
local debug = false
@ -341,8 +341,13 @@ function Olympus.delete(ID, lat, lng)
Olympus.debug("Olympus.delete " .. ID, 2)
local unit = Olympus.getUnitByID(ID)
if unit then
unit:destroy();
Olympus.debug("Olympus.delete completed successfully", 2)
if unit:getPlayerName() then
trigger.action.explosion(unit:getPoint() , 250 ) --consider replacing with forcibly deslotting the player, however this will work for now
Olympus.debug("Olympus.delete completed successfully", 2)
else
unit:destroy(); --works for AI units not players
Olympus.debug("Olympus.delete completed successfully", 2)
end
end
end

View File

@ -1,40 +0,0 @@
local version = 'v0.1.0-alpha'
Olympus = {}
Olympus.OlympusDLL = nil
Olympus.cppRESTDLL = nil
Olympus.DLLsloaded = false
Olympus.OlympusModPath = os.getenv('DCSOLYMPUS_PATH')..'\\bin\\'
log.write('Olympus.EXPORT.LUA', log.INFO, 'Executing OlympusExport.lua')
function Olympus.loadDLLs()
-- Add the .dll paths
package.cpath = package.cpath..';'..Olympus.OlympusModPath..'?.dll;'
local status
log.write('Olympus.HOOKS.LUA', log.INFO, 'Loading olympus.dll from ['..Olympus.OlympusModPath..']')
status, Olympus.OlympusDLL = pcall(require, 'olympus')
if status then
log.write('Olympus.HOOKS.LUA', log.INFO, 'olympus.dll loaded successfully')
return true
else
log.write('Olympus.HOOKS.LUA', log.ERROR, 'Error loading olympus.dll: '..Olympus.OlympusDLL)
return false
end
end
do
if isOlympusModuleInitialized~=true then
local OlympusName = 'Olympus ' .. version .. ' C++ module';
isOlympusModuleInitialized=true;
Olympus.DLLsloaded = Olympus.loadDLLs()
if Olympus.DLLsloaded then
log.write('Olympus.EXPORT.LUA', log.INFO, OlympusName..' successfully loaded.')
else
log.write('Olympus.EXPORT.LUA', log.ERROR, 'Failed to load '..OlympusName)
end
else
log.write('Olympus.EXPORT.LUA', log.INFO, 'olympus.dll already initialized')
end
end

View File

@ -1,4 +1,4 @@
local version = 'v0.1.0-alpha'
local version = 'v0.1.1-alpha'
Olympus = {}
Olympus.OlympusDLL = nil

View File

@ -1,135 +0,0 @@
local version = 'v0.1.0-alpha'
Olympus = {}
Olympus.groupIndex = 0
Olympus.groupStep = 40
function Olympus.notify(message, displayFor)
trigger.action.outText(message, displayFor)
end
function Olympus.setMissionData(arg, time)
local missionData = {}
-- Bullseye data
local bullseyes = {}
for i = 0, 2 do
local bullseyeVec3 = coalition.getMainRefPoint(i)
local bullseyeLatitude, bullseyeLongitude, bullseyeAltitude = coord.LOtoLL(bullseyeVec3)
bullseyes[i] = {}
bullseyes[i]["latitude"] = bullseyeLatitude
bullseyes[i]["longitude"] = bullseyeLongitude
end
-- Units tactical data
local unitsData = {}
local startIndex = Olympus.groupIndex
local endIndex = startIndex + Olympus.groupStep
local index = 0
for groupName, gp in pairs(mist.DBs.groupsByName) do
index = index + 1
if index > startIndex then
if groupName ~= nil then
local group = Group.getByName(groupName)
if group ~= nil then
local controller = group:getController()
for index, unit in pairs(group:getUnits()) do
local table = {}
table["targets"] = {}
table["targets"]["visual"] = controller:getDetectedTargets(1)
table["targets"]["radar"] = controller:getDetectedTargets(4)
table["targets"]["rwr"] = controller:getDetectedTargets(16)
table["targets"]["other"] = controller:getDetectedTargets(2, 8, 32)
table["hasTask"] = controller:hasTask()
table["ammo"] = unit:getAmmo()
table["fuel"] = unit:getFuel()
table["life"] = unit:getLife() / unit:getLife0()
unitsData[unit:getObjectID()] = table
end
end
end
end
if index >= endIndex then
break
end
end
if index ~= endIndex then
Olympus.groupIndex = 0
else
Olympus.groupIndex = endIndex
end
-- Airbases data
local base = world.getAirbases()
local airbases = {}
for i = 1, #base do
local info = {}
local latitude, longitude, altitude = coord.LOtoLL(Airbase.getPoint(base[i]))
info["callsign"] = Airbase.getCallsign(base[i])
local coalitionID = Airbase.getCoalition(base[i])
if coalitionID == 0 then
info["coalition"] = "neutral"
elseif coalitionID == 1 then
info["coalition"] = "red"
else
info["coalition"] = "blue"
end
info["latitude"] = latitude
info["longitude"] = longitude
if Airbase.getUnit(base[i]) then
info["unitId"] = Airbase.getUnit(base[i]):getID()
end
airbases[i] = info
end
local mission = {}
mission.theatre = env.mission.theatre
-- Assemble missionData table
missionData["bullseyes"] = bullseyes
missionData["unitsData"] = unitsData
missionData["airbases"] = airbases
missionData["mission"] = mission
local command = "Olympus.missionData = " .. Olympus.serializeTable(missionData) .. "\n" .. "Olympus.OlympusDLL.setMissionData()"
net.dostring_in("export", command)
return time + 1
end
function Olympus.serializeTable(val, name, skipnewlines, depth)
skipnewlines = skipnewlines or false
depth = depth or 0
local tmp = string.rep(" ", depth)
if name then
if type(name) == "number" then
tmp = tmp .. "[" .. name .. "]" .. " = "
else
tmp = tmp .. name .. " = "
end
end
if type(val) == "table" then
tmp = tmp .. "{" .. (not skipnewlines and "\n" or "")
for k, v in pairs(val) do
tmp = tmp .. Olympus.serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "")
end
tmp = tmp .. string.rep(" ", depth) .. "}"
elseif type(val) == "number" then
tmp = tmp .. tostring(val)
elseif type(val) == "string" then
tmp = tmp .. string.format("%q", val)
elseif type(val) == "boolean" then
tmp = tmp .. (val and "true" or "false")
else
tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\""
end
return tmp
end
timer.scheduleFunction(Olympus.setMissionData, {}, timer.getTime() + 1)
Olympus.notify("OlympusMission " .. version .. " script loaded correctly", 10)

Binary file not shown.

View File

@ -1,42 +0,0 @@
import shutil
import sys
START_STRING = "-- Olympus START\n"
END_STRING = "-- Olympus END\n"
EXPORT_STRING = "local Olympuslfs=require('lfs');dofile(Olympuslfs.writedir()..'Scripts/OlympusExport.lua')\n"
def main(flag):
if flag == "-i":
try:
with open("Export.lua", "r") as f:
shutil.copyfile("Export.lua", "Export.lua.bak")
lines = f.readlines()
if START_STRING in lines:
return
except FileNotFoundError:
print('File does not exist')
with open("Export.lua", "a") as f:
f.writelines(["\n", START_STRING, EXPORT_STRING, END_STRING, "\n"])
elif flag == "-u":
try:
with open("Export.lua", "r") as f:
shutil.copyfile("Export.lua", "Export.lua.bak")
lines = f.readlines()
except FileNotFoundError:
print('File does not exist')
with open("Export.lua", "w") as f:
block = False
for line in lines:
if line == START_STRING:
block = True
if not block:
f.write(line)
if line == END_STRING:
block = False
if __name__ == "__main__":
main(sys.argv[1])

View File

@ -1,44 +0,0 @@
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['OlympusPatcher.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='OlympusPatcher',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

305
scripts/coolEffects.lua Normal file
View File

@ -0,0 +1,305 @@
effects = {}
effects.shooterName = "TestInfantry"
effects.napalmCounter = 1
effects.fireCounter = 1
function effects.notify(message, displayFor)
trigger.action.outText(message, displayFor, false)
end
--------------------------------------------
--------------------------------------------
--------------------------------------------
----NAPALM
function effects.napalmSingle ()
unit = Unit.getByName(effects.shooterName)
local unitPos = unit:getPosition().p
vec3 = mist.utils.makeVec3GL(unitPos)
effects.spawnNapalm (vec3)
end
function effects.spawnNapalm (vec3)
napeName = "napalmStrike" .. effects.napalmCounter
effects.napalmCounter = effects.napalmCounter + 1
mist.dynAddStatic(
{
country = 20,
category = 'Fortifications',
hidden = true,
name = napeName,
type ="Fuel tank",
x = vec3.x,
y = vec3.z,
heading = 0,
} -- end of function
)
timer.scheduleFunction(effects.explode,vec3, timer.getTime() + 0.1)
timer.scheduleFunction(effects.napalam_death,napeName, timer.getTime() + 0.12)
end
function effects.explode(vec3)
trigger.action.explosion(vec3, 10)
end
function effects.napalam_death(staticName) --yes i know bad pun, removes the fuel tank after a set time
StaticObject.getByName(staticName):destroy()
end
--------------------------------------------
--------------------------------------------
--------------------------------------------
----Basic smoke or fire that despawns
function effects.smokeFire ()
unit = Unit.getByName(effects.shooterName)
local unitPos = unit:getPosition().p
vec3 = mist.utils.makeVec3GL(unitPos)
effects.createFire (vec3, 2)
-- 1 = small smoke and fire
-- 2 = medium smoke and fire
-- 3 = large smoke and fire
-- 4 = huge smoke and fire
-- 5 = small smoke
-- 6 = medium smoke
-- 7 = large smoke
-- 8 = huge smoke
end
function effects.createFire (vec3, size)
smokeName = "smokeName" .. effects.fireCounter
effects.fireCounter = effects.fireCounter + 1
trigger.action.effectSmokeBig(vec3 , size , 1, smokeName)
trigger.action.explosion(vec3, 1) -- looks wierd to spawn in on flat land without this
timer.scheduleFunction(effects.removeFire,smokeName, timer.getTime() + 20) --you could set a timer, or if selected give option to despawn later
end
function effects.removeFire (smokeName)
trigger.action.effectSmokeStop(smokeName)
end
--------------------------------------------
--------------------------------------------
--------------------------------------------
----White phosporus secondaries extra effect, like round cooking off
--if you up the number going pop to somewhere in the 200-400 region with a white phosporus impact it would look mental cool
function effects.secondaries ()
unit = Unit.getByName(effects.shooterName)
local unitPos = unit:getPosition().p
vec3 = mist.utils.makeVec3GL(unitPos)
--trigger.action.smoke(vec3 , 2 )
for i = 1,math.random(3,10) do
angle = mist.utils.toRadian((math.random(1,360)))
local randVec = mist.utils.makeVec3GL((mist.getRandPointInCircle(vec3 ,5 , 1 ,0 ,360)))
trigger.action.signalFlare(randVec , 2 , angle )
end
end
--------------------------------------------
--------------------------------------------
--------------------------------------------
----Depth Charges
-- these also make, on land, good dust clouds for a bomb hit in a sandy area?
-- local surface = land.getSurfaceType(mist.utils.makeVec2(unitPos)) -- optional check for water, value 3 or 2
function effects.depthCharge ()
local unit = Unit.getByName(effects.shooterName)
local unitPos = unit:getPosition().p
vec3 = mist.utils.makeVec3GL(unitPos)
vec3.y = vec3.y - 1000
bang = vec3
distance = 20
explosionSize = 2
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
trigger.action.explosion(vec3,explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
trigger.action.explosion(vec3,explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
timer.scheduleFunction(effects.depthChargeMain,vec3, timer.getTime() + 5)
end
function effects.depthChargeMain (vec3)
explosionSize = 250
trigger.action.explosion(vec3,explosionSize)
trigger.action.explosion(vec3,explosionSize)
vec3.x = vec3.x
trigger.action.explosion(vec3,explosionSize)
vec3.x = vec3.x - 10
trigger.action.explosion(vec3,explosionSize)
vec3.z = vec3.z
trigger.action.explosion(vec3,explosionSize)
vec3.z = vec3.z - 10
end
--------------------------------------------
--------------------------------------------
--------------------------------------------
----Normal small explosion
function effects.normalSmallExplosion (vec3)
unit = Unit.getByName(effects.shooterName)
local unitPos = unit:getPosition().p
vec3 = mist.utils.makeVec3GL(unitPos)
trigger.action.explosion(vec3,10)
end
do
longRangeShots = missionCommands.addSubMenu("Effects")
missionCommands.addCommand ("Napalm", longRangeShots, effects.napalmSingle)
missionCommands.addCommand ("Fire or smoke", longRangeShots, effects.smokeFire)
missionCommands.addCommand ("Secondary explosions", longRangeShots, effects.secondaries)
missionCommands.addCommand ("Depth Charge", longRangeShots, effects.depthCharge)
missionCommands.addCommand ("A regular explosion", longRangeShots, effects.normalSmallExplosion)
end
effects.notify("effects.lua ran", 2)

681
scripts/dynamicTanking.lua Normal file
View File

@ -0,0 +1,681 @@
tankers = {}
tankers.tankerName = "TankerClone"
function tankers.notify(message, displayFor)
trigger.action.outText(message, displayFor, false)
end
function tankers.setFrequency(freq)
unit = Unit.getByName(tankers.tankerName)
local controller = unit:getController()
freq = freq or 260 --in MHz, 260 channel 19 is our default tanker thing in refs
SetFrequency = {
id = 'SetFrequency',
params = {
frequency = freq*1000000 , --in Hz
modulation = 0, --AM 0 or FM 1
}
}
controller:setCommand(SetFrequency)
end
function tankers.changeCallsign()
---https://wiki.hoggitworld.com/view/DCS_command_setCallsign
unit = Unit.getByName(tankers.tankerName)
local controller = unit:getController()
SetCallsign = {
id = 'SetCallsign',
params = {
callname = 3, --1 texaco, --2 arco -- 3 shell
number = 1, --1 through 9 valid for tankers only ever 1?
}
}
controller:setCommand(SetCallsign)
end
--remember to only pick valid tacan channel ranges
-- https://wiki.radioreference.com/index.php/Instrument_Landing_System_(ILS)_Frequencies -- what freqs go with which tacans
-- you want the reply channels on the tankers so the fighter tunes the one you want
function tankers.setTacan(channel, xRay)
defaultTac = 40
defaultXray = true
channel = channel or defaultTac -- the channel you want to tell the fighters to enter in, if not provided defaults
xRay = xRay or defaultXray -- X or Y are only options so true or false
unit = Unit.getByName(tankers.tankerName)
local controller = unit:getController()
--tacan maths is easy
--for X ray reply it is, channel + 961, Yankee reply is channel + 1087
if xRay == true then
--to not break everyone elses datalink / tacan 37 and above (X)
if channel > 36 then
freq = channel + 961
ActivateBeacon = {
id = 'ActivateBeacon',
params = {
type = 4,
system = 3,
name = "TKR",
callsign = "ABC", --what shows as a listed word / plays as morese code, 3 max no spaces
frequency = freq*1000000,
}
}
controller:setCommand(ActivateBeacon)
end
elseif xRay == false then
--to not break everyone elses datalink / tacan 30 - 46 (Y) but I don't think the "above" is correct
if channel > 29 then
freq = channel + 1087
ActivateBeacon = {
id = 'ActivateBeacon',
params = {
type = 4,
system = 3,
name = "TKR",
callsign = "ABC", --what shows as a listed word / plays as morese code, 3 max no spaces
frequency = freq*1000000,
}
}
controller:setCommand(ActivateBeacon)
end
end
end
function tankers.dryPlugTanking () -- for whatever reason this ends up being no fuel transfer?
--tankers.setFrequency(260)
--tankers.setTacan(41, true)
--tankers.changeCallsign()
unit = Unit.getByName(tankers.tankerName)
cvn = Unit.getByName("CVN")
local cvnPos = cvn:getPosition().p
local tnkrPos = unit:getPosition().p
local speed = 250
local controller = unit:getController()
--if you want to try making a tanker do something else
--https://www.digitalcombatsimulator.com/en/support/faq/1267/#3307682 maybe? stop conditions etc
--personally i think delete the thing if it doesn't work
--there is a recovery tanker option, but for me it makes planes stall and hit the floor and we can fake it with this already
-- this might all seem very over the top compared to the docs, but if you don't do it the tanker instantly RTBs, though you can tank on final which is hillarious
task1 = {
["number"] = 1,
["auto"] = false,
["id"] = "ControlledTask",
["enabled"] = true,
["params"] =
{
["task"] =
{
["id"] = "Tanker",
["params"] =
{
}, -- end of ["params"]
}, -- end of ["task"]
["stopCondition"] =
{
["duration"] = 600,
["userFlag"] = "1",
}, -- end of ["stopCondition"]
}, -- end of ["params"]
}
task2 = {
["number"] = 2,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "ActivateBeacon",
["params"] =
{
["type"] = 4,
["AA"] = false,
["callsign"] = "TKR",
["modeChannel"] = "Y",
["channel"] = 71,
["system"] = 5,
["unitId"] = 188,
["bearing"] = true,
["frequency"] = 1032000000,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}
task3 =
{
["number"] = 3,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "SetFrequency",
["params"] =
{
["power"] = 10,
["modulation"] = 0,
["frequency"] = 305000000,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}
task4 =
{
["number"] = 4,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "SetInvisible",
["params"] =
{
["value"] = true,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}
point1 = {
['speed_locked'] = false,
['type'] = 'Turning Point',
['action'] = 'Turning Point',
['alt_type'] = 'BARO',
['y'] = cvnPos.z,
['x'] = cvnPos.x,
['speed'] = 128.611,
['task'] = {
['id'] = 'ComboTask',
['params'] = {
['tasks'] = {
[1] = task1, --tanker first
[2] = task2, --whatever second
[3] = task3,
[4] = task4,
}
}
},
['alt'] = tnkrPos.y
}
point2 = {
['speed_locked'] = true,
['type'] = 'Turning Point',
['action'] = 'Turning Point',
['alt_type'] = 'BARO',
['y'] = 30553,
['x'] = 35881,
['speed'] = 128.611,
['task'] = {
['id'] = 'ComboTask',
['params'] = {
['tasks'] = {
}
}
},
['alt'] = 2133.6
}
missionTask =
{
['id'] = 'Mission',
['params'] = {
['route'] = {
['points'] = {
[1] = point1,
--[2] = point2,
}
},
['airborne'] = true
}
}
controller:pushTask(missionTask)
end
function tankers.followInFront ()
unit = Unit.getByName(tankers.tankerName)
local controller = unit:getController()
FollowAheadOfGroup = {
["enabled"] = true,
["auto"] = false,
["id"] = "Follow",
["number"] = 1,
["params"] =
{
["lastWptIndexFlagChangedManually"] = false,
["groupId"] = 74,
["lastWptIndex"] = 2,
["lastWptIndexFlag"] = false,
["pos"] =
{
["y"] = 152.4, --mins for KC 135 to accidentally stern rejoin and overfly
["x"] = 1000.8,
["z"] = 39.9288,
}, -- end of ["pos"]
}, -- end of ["params"]
}
controller:pushTask(FollowAheadOfGroup)
end
function tankers.followInFrontClose ()
unit = Unit.getByName(tankers.tankerName)
local controller = unit:getController()
FollowAheadOfGroup = {
["enabled"] = true,
["auto"] = false,
["id"] = "Follow",
["number"] = 1,
["params"] =
{
["lastWptIndexFlagChangedManually"] = false,
["groupId"] = 74,
["lastWptIndex"] = 2,
["lastWptIndexFlag"] = false,
["pos"] =
{
["y"] = 25, --mins for KC 135 to accidentally stern rejoin and overfly
["x"] = 150,
["z"] = 41.45,
}, -- end of ["pos"]
}, -- end of ["params"]
}
controller:pushTask(FollowAheadOfGroup)
end
function tankers.cloneTanker()
local groupName = 'TankerClone' -- Name of the group in the ME
group = mist.getGroupData(groupName)
group.route = { points = mist.getGroupRoute(groupName, true) }
group.groupName = "Tanker1"
group.groupId = nil
group.units[1].unitId = nil
group.units[1].unitName = newName
group.country = country
group.category = 'AIRPLANE'
mist.dynAdd(group)
end
function tankers.newTanker()
local groupName = 'TankerClone' -- Name of the group in the ME
local cloneGroupPos = Unit.getByName(groupName):getPosition().p
cvn = Unit.getByName("CVN")
local cvnPos = cvn:getPosition().p
group = mist.getGroupData(groupName)
group.route = {
["points"] =
{
[1] =
{
["alt"] = 2133.6,
["action"] = "Turning Point",
["alt_type"] = "BARO",
["speed"] = 179.86111111111,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
[1] =
{
["number"] = 1,
["auto"] = false,
["id"] = "ControlledTask",
["enabled"] = true,
["params"] =
{
["task"] =
{
["id"] = "Tanker",
["params"] =
{
}, -- end of ["params"]
}, -- end of ["task"]
["stopCondition"] =
{
["duration"] = 900,
}, -- end of ["stopCondition"]
}, -- end of ["params"]
}, -- end of [1]
[2] =
{
["number"] = 2,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "ActivateBeacon",
["params"] =
{
["type"] = 4,
["AA"] = false,
["callsign"] = "TKR",
["modeChannel"] = "Y",
["channel"] = 71,
["system"] = 5,
["unitId"] = 188,
["bearing"] = true,
["frequency"] = 1032000000,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}, -- end of [2]
[3] =
{
["number"] = 3,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "SetFrequency",
["params"] =
{
["power"] = 10,
["modulation"] = 0,
["frequency"] = 260000000,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}, -- end of [3]
[4] =
{
["number"] = 4,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "SetInvisible",
["params"] =
{
["value"] = true,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}, -- end of [4]
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["type"] = "Turning Point",
["ETA"] = 96.50677034026,
["ETA_locked"] = false,
["y"] = cvnPos.z,
["x"] = cvnPos.x,
["formation_template"] = "",
["speed_locked"] = true,
}, -- end of [1]
}, -- end of ["points"]
}
--group.units[1].type = "S-3B Tanker"
group.groupName = "Tanker1"
group.groupId = nil
group.units[1].unitId = nil
group.units[1].unitName = newName
group.country = country
group.category = 'AIRPLANE'
group.units[1].x = cloneGroupPos.x
group.units[1].y = cloneGroupPos.z
group.units[1].z = cloneGroupPos.y
group.units[1].speed = 999999
Group.destroy(Group.getByName(groupName))
mist.dynAdd(group)
--timer.scheduleFunction(mist.dynAdd,group, timer.getTime() + 0.00000000001)
end
function tankers.startEnrouteTankingTest (vec3) -- this is the one that works well, clone an existing tanker that is currently mission editor tanking
--tankers.setFrequency(260)
--tankers.setTacan(41, true)
--tankers.changeCallsign()
route = mist.getGroupRoute(tankers.tankerName, true)
unit = Unit.getByName(tankers.tankerName)
cvn = Unit.getByName("CVN")
local cvnPos = cvn:getPosition().p
local vec3 = vec3 or cvnPos
route[1].x = unit:getPosition().p.x
route[1].y = unit:getPosition().p.z
route[2].x = vec3.x
route[2].y = vec3.z
route[2].z = vec3.y + 100
mist.goRoute(tankers.tankerName , route )
end
function tankers.hyperSpace (vec3) -- this is the one that works well, clone an existing tanker that is currently mission editor tanking
local groupName = 'TankerClone' -- Name of the group in the ME
local cloneGroupPos = Unit.getByName(groupName):getPosition().p
cvn = Unit.getByName("CVN")
local cvnPos = cvn:getPosition().p
group = mist.getGroupData(groupName)
group.route = {
["points"] =
{
[1] =
{
["alt"] = 2133.6,
["action"] = "Turning Point",
["alt_type"] = "BARO",
["speed"] = 179.86111111111,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
[1] =
{
["number"] = 1,
["auto"] = false,
["id"] = "ControlledTask",
["enabled"] = true,
["params"] =
{
["task"] =
{
["id"] = "Tanker",
["params"] =
{
}, -- end of ["params"]
}, -- end of ["task"]
["stopCondition"] =
{
["duration"] = 900,
}, -- end of ["stopCondition"]
}, -- end of ["params"]
}, -- end of [1]
[2] =
{
["number"] = 2,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "ActivateBeacon",
["params"] =
{
["type"] = 4,
["AA"] = false,
["callsign"] = "TKR",
["modeChannel"] = "Y",
["channel"] = 71,
["system"] = 5,
["unitId"] = 188,
["bearing"] = true,
["frequency"] = 1032000000,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}, -- end of [2]
[3] =
{
["number"] = 3,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "SetFrequency",
["params"] =
{
["power"] = 10,
["modulation"] = 0,
["frequency"] = 260000000,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}, -- end of [3]
[4] =
{
["number"] = 4,
["auto"] = false,
["id"] = "WrappedAction",
["enabled"] = true,
["params"] =
{
["action"] =
{
["id"] = "SetInvisible",
["params"] =
{
["value"] = true,
}, -- end of ["params"]
}, -- end of ["action"]
}, -- end of ["params"]
}, -- end of [4]
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["type"] = "Turning Point",
["ETA"] = 96.50677034026,
["ETA_locked"] = false,
["y"] = cvnPos.z,
["x"] = cvnPos.x,
["formation_template"] = "",
["speed_locked"] = true,
}, -- end of [1]
}, -- end of ["points"]
}
--group.units[1].type = "S-3B Tanker"
group.groupName = "Tanker1"
group.groupId = nil
group.units[1].unitId = nil
group.units[1].unitName = newName
group.country = country
group.category = 'AIRPLANE'
group.units[1].x = cvnPos.x-100
group.units[1].y = cvnPos.z
group.units[1].z = cloneGroupPos.y
group.units[1].heading = 0.000000000001
group.units[1].speed = 300
--Group.destroy(Group.getByName(groupName))
mist.dynAdd(group)
group.groupName = "Tanker2"
group.units[1].x = cvnPos.x+100
group.units[1].heading = 3.1415926537
group.units[1].y = cvnPos.z
mist.dynAdd(group)
end
handler = {}
local function protectedCall(...)
local status, retval = pcall(...)
if not status then
end
end
function tankers.eventHandler (event)
if (26 == event.id) then --this is when someone types into a mark
local vec3 = mist.utils.makeVec3GL(event.pos)
tankers.startEnrouteTankingTest (vec3)
end
end
function handler:onEvent(event)
protectedCall(tankers.eventHandler, event)
end
do
--world.addEventHandler(handler)
world.addEventHandler(handler)
end
do
longRangeShots = missionCommands.addSubMenu("Dynamic Tanking")
missionCommands.addCommand ("Hyperspace entry", longRangeShots, tankers.hyperSpace)
missionCommands.addCommand ("Start tanking", longRangeShots, tankers.startEnrouteTankingTest)
missionCommands.addCommand ("Frequency change approved", longRangeShots, tankers.setFrequency)
missionCommands.addCommand ("Callsign change approved", longRangeShots, tankers.changeCallsign)
missionCommands.addCommand ("Tacan change approved", longRangeShots, tankers.setTacan)
missionCommands.addCommand ("Start a new tanker", longRangeShots, tankers.newTanker)
missionCommands.addCommand ("Rejoin on a unit", longRangeShots, tankers.followInFront)
missionCommands.addCommand ("Rejoin close", longRangeShots, tankers.followInFrontClose)
end
tankers.notify("tankers.lua loaded",2)

112
scripts/forceBubble.lua Normal file
View File

@ -0,0 +1,112 @@
--Spawn a SAM integrated with IADS
--Spawn a normal SAM
--SAM bubble shields
forceBub = {}
forceBub.handler = {}
forceBub.missileList = {}
forceBub.missilesActive = 0
forceBub.shieldOn = false
function forceBub.notify(message, displayFor)
trigger.action.outText(message, displayFor, true)
end
function forceBub.setShield()
forceBub.notify("Shield on", 2)
end
function forceBub.stopShield()
forceBub.shieldOn = false
end
local function protectedCall(...)
local status, retval = pcall(...)
if not status then
--rf.notify("Caught error " .. retval,2)
end
end
function forceBub.handler:onEvent(event)
protectedCall(forceBub.eventHandler, event)
end
function forceBub.checkMissiles ()
local currentTime = timer.getTime()
if forceBub.missilesActive > 0 then
for index, data in pairs(forceBub.missileList) do
output = mist.utils.tableShow(forceBub.missileList[index])
if forceBub.missileList[index].exists == true then
if Object.isExist(forceBub.missileList[index].weapon) == true then
forceBub.missileList[index].pos = forceBub.missileList[index].weapon:getPosition()
local missilePosition = forceBub.missileList[index].pos.p
unit = Unit.getByName("Test")
local unitPosition = unit:getPosition().p
local distance = mist.utils.get3DDist(unitPosition , missilePosition )
forceBub.notify(distance,1)
if forceBub.shieldOn == true and distance < 100 then --this distance is the sweet spot any less and you probably take damage and die, less than 75 death
trigger.action.explosion(missilePosition , 1) --just blows up the missile
end
else
forceBub.missileList[index] = nil
forceBub.missilesActive = forceBub.missilesActive - 1
end
else
end
end
end
timer.scheduleFunction(forceBub.checkMisProtectCall,{},currentTime + 0.01)
end
function forceBub.eventHandler (event)
--forceBub.notify(mist.utils.tableShow(event),10)
if (event.id == 1) then
--check if weapon is a missile
--rf.notify("Missile fired id " .. event.weapon.id_ ,2)
forceBub.notify(mist.utils.tableShow(Weapon.getDesc(event.weapon)),10)
if Weapon.getDesc(event.weapon).missileCategory == 2 then
local newMis = {}
newMis.id = event.weapon.id_
newMis.pos = event.weapon:getPosition()
newMis.weapon = event.weapon
newMis.exists = Object.isExist(newMis.weapon)
forceBub.missileList[event.weapon.id_] = newMis
forceBub.missilesActive = forceBub.missilesActive + 1
end
end
end
function forceBub.checkMisProtectCall()
protectedCall(forceBub.checkMissiles,{})
end
function forceBub.setShield()
forceBub.shieldOn = true
end
do
forceField = missionCommands.addSubMenu("Force Field")
missionCommands.addCommand ("Forcefield on", forceField, forceBub.setShield)
missionCommands.addCommand ("Stop Field", forceField, forceBub.stopShield)
end
do
world.addEventHandler(forceBub.handler)
end
protectedCall(forceBub.checkMissiles,{})
forceBub.notify("forceBubble.lua loaded", 2)

628
scripts/poleGen.lua Normal file
View File

@ -0,0 +1,628 @@
--max range, altitude and it fails?
--shoot right up
--fix sa10 and sa 11
--different static layouts on a carrier depending on what is going on
--guns on a static ship at sea?
pg = {}
handler = {}
pg.name = "Sam"
pg.cloneName = "Clone"
pg.fakeTargetName = "Player"
pg.samCounter = 1
pg.droneAlt = 20000
pg.delay = 40
pg.missileSpeed = 565
pg.samLoc = {}
pg.samLoc.x = 1
pg.samLoc.y = 1
pg.samLoc.z = 1
pg.missilesActive = 0
pg.droneName = nil
pg.droneSpeed = 300
pg.hidden = false
pg.samDB = {[1] = {["missileDelay"] = 40, ["missileSpeed"] = 770},
[2] = {["missileDelay"] = 40, ["missileSpeed"] = 770},
[3] = {["missileDelay"] = 120, ["missileSpeed"] = 550},
[4] = {["missileDelay"] = 40, ["missileSpeed"] = 770},
[5] = {["missileDelay"] = 65, ["missileSpeed"] = 770},
[6] = {["missileDelay"] = 60, ["missileSpeed"] = 500},
[7] = {["missileDelay"] = 40, ["missileSpeed"] = 770},
[8] = {["missileDelay"] = 40, ["missileSpeed"] = 770},
[9] = {["missileDelay"] = 40, ["missileSpeed"] = 770},
[10] = {["missileDelay"] = 60, ["missileSpeed"] = 1400},
}
function pg.notify(message, displayFor)
trigger.action.outText(message, displayFor, false)
end
function pg.fakeSam(vec3)
playerTarget = Unit.getByName(pg.fakeTargetName)
pointFakeTarget = playerTarget:getPosition().p
vec3 = vec3 or pg.samLoc
vecSub = mist.vec.sub(pointFakeTarget , vec3)
planeHeading = mist.utils.getDir(vecSub)
missileType = 2
pg.spawnDrone (vec3,planeHeading,playerTarget,missileType)
--pg.notify("FakeSam Ran", 10)
targetID = Group.getByName("TargetDrone" .. pg.samCounter):getUnit(1):getID()
samGroup = Group.getByName("poleGenerator" .. pg.samCounter)
vars = {[1] = targetID, [2] = samGroup}
timer.scheduleFunction(pg.attack ,vars, timer.getTime() + 1)
pg.samCounter = pg.samCounter + 1
end
function pg.spawnSamSA2 (vec3,heading)
--where
--name
group = {}
group.groupName = "poleGenerator" .. pg.samCounter
group.units = {
[1] =
{
["skill"] = "High",
["coldAtStart"] = false,
["hidden"] = pg.hidden,
["type"] = "S_75M_Volhov",
--["unitId"] = 35,
["y"] = vec3.z-40,
["x"] = vec3.x-40,
--["name"] = "Ground-1-2",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [1]
[2] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "SNR_75V",
--["unitId"] = 34,
["y"] = vec3.z,
["x"] = vec3.x,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [2]
}
group.hidden = pg.hidden
group.category = "VEHICLE"
group.country = 54
mist.dynAdd(group)
--heading
end
function pg.spawnSamSA3 (vec3,heading)
--where
--name
group = {}
group.groupName = "poleGenerator" .. pg.samCounter
group.units = {
[1] =
{
["skill"] = "High",
["coldAtStart"] = false,
["hidden"] = pg.hidden,
["type"] = "snr s-125 tr",
--["unitId"] = 35,
["y"] = vec3.z-40,
["x"] = vec3.x-40,
--["name"] = "Ground-1-2",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [1]
[2] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "5p73 s-125 ln",
--["unitId"] = 34,
["y"] = vec3.z,
["x"] = vec3.x,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [2]
}
group.hidden = pg.hidden
group.category = "VEHICLE"
group.country = 54
mist.dynAdd(group)
--heading
end
function pg.spawnSamSA5 (vec3,heading)
--where
--name
group = {}
group.groupName = "poleGenerator" .. pg.samCounter
group.units = {
[1] =
{
["skill"] = "High",
["coldAtStart"] = false,
["hidden"] = pg.hidden,
["type"] = "RPC_5N62V",
--["unitId"] = 35,
["y"] = vec3.z-40,
["x"] = vec3.x-40,
--["name"] = "Ground-1-2",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [1]
[2] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "RLS_19J6",
--["unitId"] = 34,
["y"] = vec3.z,
["x"] = vec3.x,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [2]
[3] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "S-200_Launcher",
--["unitId"] = 34,
["y"] = vec3.z-80,
["x"] = vec3.x-80,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [3]
}
group.hidden = pg.hidden
group.category = "VEHICLE"
group.country = 54
mist.dynAdd(group)
--heading
end
function pg.spawnSamSA6 (vec3,heading)
--where
--name
group = {}
group.groupName = "poleGenerator" .. pg.samCounter
group.units = {
[1] =
{
["skill"] = "High",
["coldAtStart"] = false,
["hidden"] = pg.hidden,
["type"] = "Kub 1S91 str",
--["unitId"] = 35,
["y"] = vec3.z-40,
["x"] = vec3.x-40,
--["name"] = "Ground-1-2",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [1]
[2] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "Kub 2P25 ln",
--["unitId"] = 34,
["y"] = vec3.z,
["x"] = vec3.x,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [2]
}
group.hidden = pg.hidden
group.category = "VEHICLE"
group.country = 54
mist.dynAdd(group)
--heading
end
function pg.spawnSamSA10 (vec3,heading)
--where
--name
group = {}
group.groupName = "poleGenerator" .. pg.samCounter
group.units = {
[1] =
{
["skill"] = "High",
["coldAtStart"] = false,
["hidden"] = pg.hidden,
["type"] = "S-300PS 40B6M tr",
--["unitId"] = 35,
["y"] = vec3.z,
["x"] = vec3.x,
--["name"] = "Ground-1-2",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [1]
[2] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "S-300PS 64H6E sr",
--["unitId"] = 34,
["y"] = vec3.z-10,
["x"] = vec3.x-10,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [2]
[3] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "S-300PS 54K6 cp",
--["unitId"] = 34,
["y"] = vec3.z-20,
["x"] = vec3.x-20,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [3]
[4] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "S-300PS 5P85C ln",
--["unitId"] = 34,
["y"] = vec3.z-40,
["x"] = vec3.x-40,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [4]
}
group.hidden = pg.hidden
group.category = "VEHICLE"
group.country = 54
mist.dynAdd(group)
--heading
end
function pg.spawnSamSA11 (vec3,heading)
--where
--name
group = {}
group.groupName = "poleGenerator" .. pg.samCounter
group.units = {
[1] =
{
["skill"] = "High",
["coldAtStart"] = false,
["hidden"] = pg.hidden,
["type"] = "SA-11 Buk SR 9S18M1",
--["unitId"] = 35,
["y"] = vec3.z-40,
["x"] = vec3.x-40,
--["name"] = "Ground-1-2",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [1]
[2] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "SA-11 Buk CC 9S470M1",
--["unitId"] = 34,
["y"] = vec3.z,
["x"] = vec3.x,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [2]
[2] =
{
["skill"] = "High",
["coldAtStart"] = false,
["type"] = "SA-11 Buk LN 9A310M1",
--["unitId"] = 34,
["y"] = vec3.z,
["x"] = vec3.x,
--["name"] = "Ground-1-1",
["heading"] = heading+math.pi,
["playerCanDrive"] = false,
}, -- end of [2]
}
group.hidden = pg.hidden
group.category = "VEHICLE"
group.country = 54
mist.dynAdd(group)
--heading
end
function pg.spawnDrone(vec3,planeHeading,playerTarget,missileType)
-- where is the plane going to be in x seconds
playerTargetPos = playerTarget:getPosition().p
futurePlayerTargetPos = playerTargetPos
playerMotionVec = Object.getVelocity(playerTarget)
--work out what type of SAM we are shooting to work out the delay, missile speed etc
if missileType == 2 then
pg.delay = pg.samDB[2].missileDelay
pg.missileSpeed = pg.samDB[2].missileSpeed
elseif missileType == 3 then
pg.delay = pg.samDB[3].missileDelay
pg.missileSpeed = pg.samDB[3].missileSpeed
elseif missileType == 5 then
pg.delay = pg.samDB[5].missileDelay
pg.missileSpeed = pg.samDB[5].missileSpeed
elseif missileType == 6 then
pg.delay = pg.samDB[6].missileDelay
pg.missileSpeed = pg.samDB[5].missileSpeed
elseif missileType == 10 then
pg.delay = pg.samDB[10].missileDelay
pg.missileSpeed = pg.samDB[10].missileSpeed
elseif missileType == 11 then
pg.delay = pg.samDB[11].missileDelay
pg.missileSpeed = pg.samDB[11].missileSpeed
else --assume SA2
pg.delay = pg.samDB[2].missileDelay
pg.missileSpeed = pg.samDB[2].missileSpeed
end
futurePlayerTargetPos.x = playerTargetPos.x + playerMotionVec.x*pg.delay
futurePlayerTargetPos.y = playerTargetPos.y + playerMotionVec.y*pg.delay
futurePlayerTargetPos.z = playerTargetPos.z + playerMotionVec.z*pg.delay
droneTurnPoint = mist.projectPoint(futurePlayerTargetPos, 10000 ,planeHeading+math.pi)
--this is where the plane will be when the missile is launched
--pythago to get hyp
--x^2 + y^x = hyp^2
x = mist.utils.get2DDist(futurePlayerTargetPos,vec3)
y = playerTargetPos.y
--pg.notify(y,5)
hyp = math.sqrt(x^2 + y^2)
roughFlightTime = hyp /pg.missileSpeed-- distance / speed
futurePlayerTargetPos.x = futurePlayerTargetPos.x + playerMotionVec.x*roughFlightTime
futurePlayerTargetPos.y = futurePlayerTargetPos.y + playerMotionVec.y*roughFlightTime
futurePlayerTargetPos.z = futurePlayerTargetPos.z + playerMotionVec.z*roughFlightTime
--this is where the plane will be when the missile arrives at its altitude
--now we need to work out where the drone is going to go
vecSub = mist.vec.sub(vec3,futurePlayerTargetPos)
heading = mist.utils.getDir(vecSub) --heading between picked location and future pos
extendDistance = x + 10000
alt = (((futurePlayerTargetPos.y) * extendDistance)/x)
droneAtTimePos = mist.projectPoint(vec3, extendDistance ,heading +math.pi)
extendDistance = extendDistance + pg.droneSpeed*roughFlightTime
droneAtStartPos = mist.projectPoint(vec3, extendDistance ,heading +math.pi)
--we want to curve the missile in the players direction
--planeHeading
pg.makeDrone(droneAtStartPos,heading, droneAtTimePos, futurePlayerTargetPos,alt,droneTurnPoint)
if missileType == 2 then
pg.spawnSamSA2 (vec3,heading)
elseif missileType == 3 then
pg.spawnSamSA3 (vec3,heading)
elseif missileType == 5 then
pg.spawnSamSA5 (vec3,heading)
elseif missileType == 6 then
pg.spawnSamSA6 (vec3,heading)
elseif missileType == 10 then
pg.spawnSamSA10 (vec3,heading)
else --assume SA2
pg.spawnSamSA2 (vec3,heading)
end
end
function pg.makeDrone(spawnVec,heading, routeVec, nextRouteVec,alt,droneTurnPoint)
--this spawns in the drone
group = DroneClone
group.groupName = "TargetDrone" .. pg.samCounter
group.groupId = nil
group.units[1].unitId = nil
group.units[1].unitName = nil
group.units[1].y = spawnVec.z
group.units[1].x = spawnVec.x
group.units[1].heading = heading
group.units[1].alt = alt
group.route["points"][2] = group.route["points"][1]
group.route["points"][3] = group.route["points"][1]
group.route["points"][1]["y"] = routeVec.z
group.route["points"][1]["x"] = routeVec.x
group.route["points"][1]["alt"] = alt
group.route["points"][2]["y"] = nextRouteVec.z
group.route["points"][2]["x"] = nextRouteVec.x
group.route["points"][2]["alt"] = alt
group.route["points"][3]["y"] = droneTurnPoint.z
group.route["points"][3]["x"] = droneTurnPoint.x
group.route["points"][3]["alt"] = alt
group.countryId = 56
group.category = 'AIRPLANE'
mist.dynAdd(group)
end
function pg.attack (vars)
targetID = vars[1]
samGroup = vars[2]
AttackUnit = {
id = 'AttackUnit',
params = {
unitId = targetID,
attackQtyLimit = true,
attackQty = 1,
}
}
local controller = samGroup:getController()
controller:pushTask(AttackUnit)
end
function pg.radarOff ()
group = Group.getByName(pg.name)
local controller = group:getController()
controller:setOption(9,1)
end
function pg.radarOn ()
group = Group.getByName(pg.name)
local controller = group:getController()
controller:setOption(9,0)
end
DroneClone=
{
["modulation"] = 0,
["tasks"] =
{
}, -- end of ["tasks"]
["task"] = "Reconnaissance",
["uncontrolled"] = false,
["route"] =
{
["points"] =
{
[1] =
{
["alt"] = 2000,
["action"] = "Turning Point",
["alt_type"] = "BARO",
["speed"] = 82.222222222222,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["type"] = "Turning Point",
["ETA"] = 0,
["ETA_locked"] = true,
["y"] = 0,
["x"] = 0,
["formation_template"] = "",
["speed_locked"] = true,
}, -- end of [1]
[2] =
{
["alt"] = 2000,
["action"] = "Turning Point",
["alt_type"] = "BARO",
["speed"] = 82.222222222222,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["type"] = "Turning Point",
["ETA"] = 157.20107538291,
["ETA_locked"] = false,
["y"] = 0,
["x"] = 0,
["formation_template"] = "",
["speed_locked"] = true,
}, -- end of [2]
}, -- end of ["points"]
}, -- end of ["route"]
--["groupId"] = 1,
["hidden"] = pg.hidden,
["units"] =
{
[1] =
{
["alt"] = 2000,
["alt_type"] = "BARO",
["livery_id"] = "'camo' scheme",
["skill"] = "High",
["speed"] = 82.222222222222,
["type"] = "MQ-9 Reaper",
--["unitId"] = 1,
--["psi"] = -3.129323330636,
["y"] = 0,
["x"] = 0,
["payload"] =
{
["pylons"] =
{
}, -- end of ["pylons"]
["fuel"] = 1300,
["flare"] = 0,
["chaff"] = 0,
["gun"] = 100,
}, -- end of ["payload"]
["heading"] = 0.5,
["callsign"] =
{
[1] = 1,
[2] = 1,
[3] = 1,
["name"] = "Enfield11",
}, -- end of ["callsign"]
["onboard_num"] = "010",
}, -- end of [1]
}, -- end of ["units"]
["y"] = 0,
["x"] = 0,
["communication"] = true,
["start_time"] = 0,
["frequency"] = 124,
}
local function protectedCall(...)
local status, retval = pcall(...)
if not status then
end
end
function handler:onEvent(event)
protectedCall(pg.eventHandler, event)
end
function pg.eventHandler (event)
if (26 == event.id) then --this is when someone types into a mark
local vec3 = mist.utils.makeVec3GL(event.pos)
pg.fakeSam (vec3)
end
end
function handler:onEvent(event)
protectedCall(pg.eventHandler, event)
end
do
longRangeShots = missionCommands.addSubMenu("SAM")
missionCommands.addCommand ("Generate pole", longRangeShots, pg.fakeSam)
world.addEventHandler(handler)
end
pg.notify("poleGen.lua",10)

Some files were not shown because too many files have changed in this diff Show More