diff --git a/backend/core/include/datatypes.h b/backend/core/include/datatypes.h index 6ed216c8..cda41727 100644 --- a/backend/core/include/datatypes.h +++ b/backend/core/include/datatypes.h @@ -67,6 +67,7 @@ namespace DataIndex { targetingRange, aimMethodRange, acquisitionRange, + airborne, lastIndex, endOfData = 255 }; diff --git a/backend/core/include/unit.h b/backend/core/include/unit.h index b9476fdc..280def0e 100644 --- a/backend/core/include/unit.h +++ b/backend/core/include/unit.h @@ -127,6 +127,7 @@ public: virtual void setAimMethodRange(double newValue) { updateValue(aimMethodRange, newValue, DataIndex::aimMethodRange); } virtual void setAcquisitionRange(double newValue) { updateValue(acquisitionRange, newValue, DataIndex::acquisitionRange); } virtual void setRadarState(bool newValue) { updateValue(radarState, newValue, DataIndex::radarState); } + virtual void setAirborne(bool newValue) { updateValue(airborne, newValue, DataIndex::airborne); } /********** Getters **********/ virtual string getCategory() { return category; }; @@ -191,6 +192,7 @@ public: virtual double getAimMethodRange() { return aimMethodRange; } virtual double getAcquisitionRange() { return acquisitionRange; } virtual bool getRadarState() { return radarState; } + virtual bool getAirborne() { return airborne; } protected: unsigned int ID; @@ -258,6 +260,7 @@ protected: double targetingRange = 0; double aimMethodRange = 0; double acquisitionRange = 0; + bool airborne = false; /********** Other **********/ unsigned int taskCheckCounter = 0; diff --git a/backend/core/src/groundunit.cpp b/backend/core/src/groundunit.cpp index f7c9e9f7..4cb8b6bf 100644 --- a/backend/core/src/groundunit.cpp +++ b/backend/core/src/groundunit.cpp @@ -373,7 +373,7 @@ void GroundUnit::AIloop() lat = position.lat + RANDOM_MINUS_ONE_TO_ONE * (1 + (ShotsScatter::LOW - shotsScatter)) * 0.01; lng = position.lng + RANDOM_MINUS_ONE_TO_ONE * (1 + (ShotsScatter::LOW - shotsScatter)) * 0.01; barrelElevation = target->getPosition().alt + RANDOM_MINUS_ONE_TO_ONE * (ShotsScatter::LOW - shotsScatter) * 1000; - taskString += "Flak box mode."; + taskString += "Flak box mode"; } else { taskString += "Scenic AAA. Bearing: " + to_string((int)round(randomBearing)) + "deg"; diff --git a/backend/core/src/unit.cpp b/backend/core/src/unit.cpp index 25aa9d76..ef4e9e51 100644 --- a/backend/core/src/unit.cpp +++ b/backend/core/src/unit.cpp @@ -148,6 +148,9 @@ void Unit::update(json::value json, double dt) if (json.has_number_field(L"health")) setHealth(static_cast(json[L"health"].as_number().to_uint32())); + if (json.has_boolean_field(L"airborne")) + setAirborne(json[L"airborne"].as_bool()); + runAILoop(); } @@ -304,7 +307,7 @@ void Unit::getData(stringstream& ss, unsigned long long time) case DataIndex::racetrackLength: appendNumeric(ss, datumIndex, racetrackLength); break; case DataIndex::racetrackAnchor: appendNumeric(ss, datumIndex, racetrackAnchor); break; case DataIndex::racetrackBearing: appendNumeric(ss, datumIndex, racetrackBearing); break; - case DataIndex::timeToNextTasking: appendNumeric(ss, datumIndex, timeToNextTasking); break; + //case DataIndex::timeToNextTasking: appendNumeric(ss, datumIndex, timeToNextTasking); break; Useful for debugging, but useless in production and very data hungry case DataIndex::barrelHeight: appendNumeric(ss, datumIndex, barrelHeight); break; case DataIndex::muzzleVelocity: appendNumeric(ss, datumIndex, muzzleVelocity); break; case DataIndex::aimTime: appendNumeric(ss, datumIndex, aimTime); break; @@ -315,6 +318,7 @@ void Unit::getData(stringstream& ss, unsigned long long time) case DataIndex::targetingRange: appendNumeric(ss, datumIndex, targetingRange); break; case DataIndex::aimMethodRange: appendNumeric(ss, datumIndex, aimMethodRange); break; case DataIndex::acquisitionRange: appendNumeric(ss, datumIndex, acquisitionRange); break; + case DataIndex::airborne: appendNumeric(ss, datumIndex, airborne); break; } } } diff --git a/frontend/react/src/constants/constants.ts b/frontend/react/src/constants/constants.ts index 58970552..0582aafc 100644 --- a/frontend/react/src/constants/constants.ts +++ b/frontend/react/src/constants/constants.ts @@ -513,6 +513,7 @@ export enum DataIndexes { targetingRange, aimMethodRange, acquisitionRange, + airborne, endOfData = 255, } diff --git a/frontend/react/src/interfaces.ts b/frontend/react/src/interfaces.ts index 36c470f2..f29af8f1 100644 --- a/frontend/react/src/interfaces.ts +++ b/frontend/react/src/interfaces.ts @@ -283,6 +283,7 @@ export interface UnitData { targetingRange: number; aimMethodRange: number; acquisitionRange: number; + airborne: boolean; } export interface LoadoutItemBlueprint { diff --git a/frontend/react/src/ui/panels/unitcontrolmenu.tsx b/frontend/react/src/ui/panels/unitcontrolmenu.tsx index ab311884..53aa13e8 100644 --- a/frontend/react/src/ui/panels/unitcontrolmenu.tsx +++ b/frontend/react/src/ui/panels/unitcontrolmenu.tsx @@ -2269,11 +2269,13 @@ export function UnitControlMenu(props: { open: boolean; onClose: () => void }) {
{selectedUnits[0].getTask()}
- {([UnitState.SIMULATE_FIRE_FIGHT, UnitState.MISS_ON_PURPOSE, UnitState.SCENIC_AAA] as string[]).includes(selectedUnits[0].getState()) && ( + {/* Useful for debugging but very data hungry + + ([UnitState.SIMULATE_FIRE_FIGHT, UnitState.MISS_ON_PURPOSE, UnitState.SCENIC_AAA] as string[]).includes(selectedUnits[0].getState()) && (
Time to next tasking: {zeroAppend(selectedUnits[0].getTimeToNextTasking(), 0, true, 2)}s
- )} + )*/}
1) then