diff --git a/backend/core/src/unit.cpp b/backend/core/src/unit.cpp index 324fc819..0828ec42 100644 --- a/backend/core/src/unit.cpp +++ b/backend/core/src/unit.cpp @@ -257,7 +257,7 @@ void Unit::getData(stringstream& ss, unsigned long long time) switch (datumIndex) { case DataIndex::category: appendString(ss, datumIndex, category); break; case DataIndex::alive: appendNumeric(ss, datumIndex, alive); break; - case DataIndex::radarState: appendNumeric(ss, datumIndex, radarState); break; + case DataIndex::radarState: appendString(ss, datumIndex, radarState); break; case DataIndex::human: appendNumeric(ss, datumIndex, human); break; case DataIndex::controlled: appendNumeric(ss, datumIndex, controlled); break; case DataIndex::coalition: appendNumeric(ss, datumIndex, coalition); break; diff --git a/frontend/react/src/map/markers/stylesheets/units.css b/frontend/react/src/map/markers/stylesheets/units.css index a2326448..da063531 100644 --- a/frontend/react/src/map/markers/stylesheets/units.css +++ b/frontend/react/src/map/markers/stylesheets/units.css @@ -620,6 +620,27 @@ display: inline; } +/* Unit Radar State */ +.unit-radar-state { + height: 10px; + width: 10px; + position: absolute; + border-radius: 50%; + border: none; + background: transparent; + left: 35px; + bottom: 8px; +} +.unit[data-radar-state="GREEN"] .unit-radar-state { + border: 1px solid white; + background: rgb(0, 226, 0); +} + +.unit[data-radar-state="RED"] .unit-radar-state { + border: 1px solid white; + background: red; +} + [todo-data-awacs-mode] [data-object|="unit"] .unit-selected-spotlight, [todo-data-awacs-mode] [data-object|="unit"] .unit-short-label, [todo-data-awacs-mode] [data-object|="unit"] .unit-state, diff --git a/frontend/react/src/unit/unit.ts b/frontend/react/src/unit/unit.ts index 82fc61d3..3e809105 100644 --- a/frontend/react/src/unit/unit.ts +++ b/frontend/react/src/unit/unit.ts @@ -1052,6 +1052,13 @@ export abstract class Unit extends CustomMarker { el.append(healthIndicator); } + /* Radar state indicator */ + if (this.#radarState !== '') { + var radarStateIcon = document.createElement("div"); + radarStateIcon.classList.add("unit-radar-state"); + el.append(radarStateIcon); + } + /* Ammo indicator */ if (iconOptions.showAmmo) { var ammoIndicator = document.createElement("div"); diff --git a/scripts/lua/backend/OlympusCommand.lua b/scripts/lua/backend/OlympusCommand.lua index f27cc3ea..cc029dc3 100644 --- a/scripts/lua/backend/OlympusCommand.lua +++ b/scripts/lua/backend/OlympusCommand.lua @@ -1278,9 +1278,11 @@ function Olympus.setUnitsData(arg, time) table["isAlive"] = unit:isExist() and unit:isActive() and unit:getLife() >= 1 - table["radarState"] = "AUTO" + if unit:isActive() and unit:hasSensors(Unit.SensorType.RADAR) then + -- Olympus.log:info("Unit Has Sensor Radar " .. tostring(unit:hasSensors(Unit.SensorType.RADAR))); - if unit:isActive() then + table["radarState"] = "AUTO" + if unit:getRadar() then -- Olympus.log:info("radarState: unit active and getRadar is true, setting RED.") table["radarState"] = "RED"