From 5237dc688a92c982b9c8e9ad9ed602d1c2148350 Mon Sep 17 00:00:00 2001 From: MarcoJayUsai Date: Mon, 28 Apr 2025 16:14:07 +0200 Subject: [PATCH] refactor: adding back country, group id and original unit id to the unit data for future uses --- backend/core/include/datatypes.h | 2 ++ backend/core/include/unit.h | 6 +++++ backend/core/src/unit.cpp | 11 ++++++-- frontend/react/src/constants/constants.ts | 2 ++ frontend/react/src/interfaces.ts | 2 ++ frontend/react/src/unit/unit.ts | 31 ++++++++++++++--------- scripts/lua/backend/OlympusCommand.lua | 7 +++-- 7 files changed, 45 insertions(+), 16 deletions(-) diff --git a/backend/core/include/datatypes.h b/backend/core/include/datatypes.h index cda41727..d4a9a3b0 100644 --- a/backend/core/include/datatypes.h +++ b/backend/core/include/datatypes.h @@ -16,6 +16,8 @@ namespace DataIndex { name, unitName, callsign, + unitID, + groupID, groupName, state, task, diff --git a/backend/core/include/unit.h b/backend/core/include/unit.h index 280def0e..4f8a74ac 100644 --- a/backend/core/include/unit.h +++ b/backend/core/include/unit.h @@ -75,6 +75,8 @@ public: virtual void setName(string newValue) { updateValue(name, newValue, DataIndex::name); } virtual void setUnitName(string newValue) { updateValue(unitName, newValue, DataIndex::unitName); } virtual void setCallsign(string newValue) { updateValue(callsign, newValue, DataIndex::callsign); } + virtual void setUnitID(unsigned char newValue) { updateValue(unitID, newValue, DataIndex::unitID); } + virtual void setGroupID(unsigned char newValue) { updateValue(groupID, newValue, DataIndex::groupID); } virtual void setGroupName(string newValue) { updateValue(groupName, newValue, DataIndex::groupName); } virtual void setState(unsigned char newValue) { updateValue(state, newValue, DataIndex::state); }; virtual void setTask(string newValue) { updateValue(task, newValue, DataIndex::task); } @@ -141,6 +143,8 @@ public: virtual string getCallsign() { return callsign; } virtual string getUnitName() { return unitName; } virtual string getGroupName() { return groupName; } + virtual unsigned char getUnitID() { return unitID; } + virtual unsigned char getGroupID() { return groupID; } virtual unsigned char getState() { return state; } virtual string getTask() { return task; } virtual bool getHasTask() { return hasTask; } @@ -206,6 +210,8 @@ protected: string name = ""; string unitName = ""; string callsign = ""; + unsigned char unitID = NULL; + unsigned char groupID = NULL; string groupName = ""; unsigned char state = State::NONE; unsigned char alarmState = AlarmState::AUTO; diff --git a/backend/core/src/unit.cpp b/backend/core/src/unit.cpp index ef4e9e51..18dcc1a7 100644 --- a/backend/core/src/unit.cpp +++ b/backend/core/src/unit.cpp @@ -41,6 +41,11 @@ void Unit::update(json::value json, double dt) if (json.has_string_field(L"unitName")) setUnitName(to_string(json[L"unitName"])); + if (json.has_number_field(L"groupID")) + setGroupID(json[L"groupID"].as_number().to_int32()); + if (json.has_number_field(L"unitID")) + setUnitID(json[L"unitID"].as_number().to_int32()); + if (json.has_string_field(L"groupName")) setGroupName(to_string(json[L"groupName"])); @@ -49,8 +54,8 @@ void Unit::update(json::value json, double dt) if (json.has_number_field(L"coalitionID")) setCoalition(json[L"coalitionID"].as_number().to_int32()); - //if (json.has_number_field(L"Country")) - // setCountry(json[L"Country"].as_number().to_int32()); + if (json.has_number_field(L"country")) + setCountry(json[L"country"].as_number().to_int32()); /* All units which contain the name "Olympus" are automatically under AI control */ if (getUnitName().find("Olympus") != string::npos) @@ -267,6 +272,8 @@ void Unit::getData(stringstream& ss, unsigned long long time) case DataIndex::name: appendString(ss, datumIndex, name); break; case DataIndex::unitName: appendString(ss, datumIndex, unitName); break; case DataIndex::callsign: appendString(ss, datumIndex, callsign); break; + case DataIndex::unitID: appendNumeric(ss, datumIndex, unitID); break; + case DataIndex::groupID: appendNumeric(ss, datumIndex, groupID); break; case DataIndex::groupName: appendString(ss, datumIndex, groupName); break; case DataIndex::state: appendNumeric(ss, datumIndex, state); break; case DataIndex::task: appendString(ss, datumIndex, task); break; diff --git a/frontend/react/src/constants/constants.ts b/frontend/react/src/constants/constants.ts index 0582aafc..cfda3ea7 100644 --- a/frontend/react/src/constants/constants.ts +++ b/frontend/react/src/constants/constants.ts @@ -462,6 +462,8 @@ export enum DataIndexes { name, unitName, callsign, + unitID, + groupID, groupName, state, task, diff --git a/frontend/react/src/interfaces.ts b/frontend/react/src/interfaces.ts index f29af8f1..281ea04d 100644 --- a/frontend/react/src/interfaces.ts +++ b/frontend/react/src/interfaces.ts @@ -232,6 +232,8 @@ export interface UnitData { name: string; unitName: string; callsign: string; + unitID: number; + groupID: number; groupName: string; state: string; task: string; diff --git a/frontend/react/src/unit/unit.ts b/frontend/react/src/unit/unit.ts index dbd588a7..02708259 100644 --- a/frontend/react/src/unit/unit.ts +++ b/frontend/react/src/unit/unit.ts @@ -97,6 +97,8 @@ export abstract class Unit extends CustomMarker { #name: string = ""; #unitName: string = ""; #callsign: string = ""; + #unitID: number = 0; + #groupID: number = 0; #groupName: string = ""; #state: string = states[0]; #task: string = ""; @@ -236,6 +238,12 @@ export abstract class Unit extends CustomMarker { getCallsign() { return this.#callsign; } + getUnitID() { + return this.#unitID; + } + getGroupID() { + return this.#groupID; + } getGroupName() { return this.#groupName; } @@ -611,6 +619,14 @@ export abstract class Unit extends CustomMarker { case DataIndexes.callsign: this.#callsign = dataExtractor.extractString(); break; + case DataIndexes.unitID: + this.#unitID = dataExtractor.extractUInt8(); + updateMarker = true; + break; + case DataIndexes.groupID: + this.#groupID = dataExtractor.extractUInt8(); + updateMarker = true; + break; case DataIndexes.groupName: this.#groupName = dataExtractor.extractString(); updateMarker = true; @@ -851,6 +867,8 @@ export abstract class Unit extends CustomMarker { name: this.#name, unitName: this.#unitName, callsign: this.#callsign, + unitID: this.#unitID, + groupID: this.#groupID, groupName: this.#groupName, state: this.#state, task: this.#task, @@ -1624,9 +1642,6 @@ export abstract class Unit extends CustomMarker { /** Show temporary engagement ring when unit is selected */ showTemporaryEngagementRing() { - console.log(`Show temporary engagement ring for ${this.getUnitName()}, engagement range: ${this.#engagementRange}`); - - if (!getApp().getMap().getOptions().showUnitsEngagementRings && !getApp().getMap().getOptions().showUnitsAcquisitionRings && this.#engagementRange > 0) { @@ -1717,8 +1732,6 @@ export abstract class Unit extends CustomMarker { if (this.#debounceTimeout) window.clearTimeout(this.#debounceTimeout); this.#debounceTimeout = window.setTimeout(() => { - console.log(`Left short click on ${this.getUnitName()}`); - if (getApp().getState() === OlympusState.UNIT_CONTROL && getApp().getMap().getContextAction()) { if (getApp().getMap().getContextAction()?.getTarget() === ContextActionTarget.UNIT) getApp().getMap().executeContextAction(this, null, e.originalEvent); else getApp().getMap().executeContextAction(null, this.getPosition(), e.originalEvent); @@ -1730,8 +1743,6 @@ export abstract class Unit extends CustomMarker { } #onLeftLongClick(e: any) { - console.log(`Left long click on ${this.getUnitName()}`); - if (getApp().getState() === OlympusState.IDLE) { this.setSelected(!this.getSelected()); @@ -1756,8 +1767,6 @@ export abstract class Unit extends CustomMarker { } #onRightShortClick(e: any) { - console.log(`Right short click on ${this.getUnitName()}`); - window.clearTimeout(this.#rightMouseDownTimeout); if ( getApp().getState() === OlympusState.UNIT_CONTROL && @@ -1768,7 +1777,7 @@ export abstract class Unit extends CustomMarker { } #onRightLongClick(e: any) { - console.log(`Right long click on ${this.getUnitName()}`); + // console.log(`Right long click on ${this.getUnitName()}`); } #onDoubleClick(e: any) { @@ -1776,8 +1785,6 @@ export abstract class Unit extends CustomMarker { DomEvent.preventDefault(e); e.originalEvent.stopImmediatePropagation(); - console.log(`Double click on ${this.getUnitName()}`); - if (this.#debounceTimeout) window.clearTimeout(this.#debounceTimeout); /* Select all matching units in the viewport */ diff --git a/scripts/lua/backend/OlympusCommand.lua b/scripts/lua/backend/OlympusCommand.lua index aeed0959..4161a48c 100644 --- a/scripts/lua/backend/OlympusCommand.lua +++ b/scripts/lua/backend/OlympusCommand.lua @@ -1249,6 +1249,7 @@ function Olympus.setUnitsData(arg, time) local airborne = unit:inAir() -- Fill the data table + table["unitID"] = unit:getID() table["name"] = unit:getTypeName() table["coalitionID"] = unit:getCoalition() table["position"] = {} @@ -1276,13 +1277,14 @@ function Olympus.setUnitsData(arg, time) table["isAlive"] = unit:isExist() and unit:isActive() and unit:getLife() >= 1 - if unit:isActive() and unit:hasSensors(Unit.SensorType.RADAR) then + --[[ COMMENTING OUT BECAUSE OF CRASHES -- TO BE INVESTIGATED LATER ON ]]-- + --[[ if unit:isActive() and unit:hasSensors(Unit.SensorType.RADAR) then if unit:getRadar() then table["radarState"] = true else table["radarState"] = false end - end + end ]] local group = unit:getGroup() if group ~= nil then @@ -1322,6 +1324,7 @@ function Olympus.setUnitsData(arg, time) end -- In case of AI units the callSign and the unitName will be the same table["callsign"] = unit:getName() + table["groupID"] = group:getID() table["groupName"] = group:getName() table["isHuman"] = (unit:getPlayerName() ~= nil) table["hasTask"] = controller:hasTask()