Skip to content

Commit

Permalink
Add force feet option
Browse files Browse the repository at this point in the history
  • Loading branch information
KingfuChan committed Oct 8, 2023
1 parent 33900d2 commit 70bc9bf
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 6 deletions.
23 changes: 23 additions & 0 deletions MTEPlugIn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ const char* SETTING_CUSTOM_NUMBER_MAP = "CustomNumber0-9";
const char* SETTING_TRANS_LVL_CSV = "TransLevelCSV";
const char* SETTING_TRANS_MALT_TXT = "MetricAltitudeTXT";
const char* SETTING_AMEND_CFL = "AmendQFEinCFL";
const char* SETTING_FORCE_FEET = "ForceFeet";

// WINAPI RELATED
WNDPROC prevWndFunc = nullptr;
Expand Down Expand Up @@ -117,6 +118,8 @@ CMTEPlugIn::CMTEPlugIn(void)
m_TrackedRecorder = new TrackedRecorder(this);
const char* setar = GetDataFromSettings(SETTING_AUTO_RETRACK);
m_AutoRetrack = setar == nullptr ? 0 : stoi(setar);
const char* setff = GetDataFromSettings(SETTING_FORCE_FEET);
m_TrackedRecorder->ResetAltitudeUnit(setff == nullptr ? 0 : stoi(setff) != 0);

m_TransitionLevel = new TransitionLevel(this);
const char* settl = GetDataFromSettings(SETTING_TRANS_LVL_CSV);
Expand Down Expand Up @@ -1049,6 +1052,24 @@ bool CMTEPlugIn::OnCompileCommand(const char* sCommandLine)
return true;
}

// set force feet
regex rxff("^.MTEP TR (F|M)$", regex_constants::icase);
if (regex_match(cmd, match, rxff)) {
string res = MakeUpper(match[1].str());
const char* descr = "force feet";
if (res == "F") {
m_TrackedRecorder->ResetAltitudeUnit(true);
SaveDataToSettings(SETTING_FORCE_FEET, descr, "1");
DisplayUserMessage("MESSAGE", "MTEPlugin", "Altitude unit is set to feet", 1, 0, 0, 0, 0);
}
else if (res == "M") {
m_TrackedRecorder->ResetAltitudeUnit(false);
SaveDataToSettings(SETTING_FORCE_FEET, descr, "0");
DisplayUserMessage("MESSAGE", "MTEPlugin", "Altitude unit is set to meter", 1, 0, 0, 0, 0);
}
return true;
}

// load transition level
regex rxtl("^.MTEP TL (.+\\.CSV)$", regex_constants::icase);
if (regex_match(cmd, match, rxtl)) {
Expand Down Expand Up @@ -1211,6 +1232,8 @@ void CMTEPlugIn::ResetTrackedRecorder(void)
if (m_TrackedRecorder != nullptr)
delete m_TrackedRecorder;
m_TrackedRecorder = new TrackedRecorder(this);
const char* setff = GetDataFromSettings(SETTING_FORCE_FEET);
m_TrackedRecorder->ResetAltitudeUnit(setff == nullptr ? 0 : stoi(setff) != 0);
DisplayUserMessage("MESSAGE", "MTEPlugin", "Tracked recorder is reset!", 1, 0, 0, 0, 0);
}

Expand Down
15 changes: 12 additions & 3 deletions TrackedRecorder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
TrackedRecorder::TrackedRecorder(EuroScopePlugIn::CPlugIn* plugin)
{
m_PluginPtr = plugin;
m_DefaultFeet = false;
}

TrackedRecorder::~TrackedRecorder(void)
Expand Down Expand Up @@ -38,7 +39,7 @@ void TrackedRecorder::UpdateFlight(EuroScopePlugIn::CFlightPlan FlightPlan, bool
}
else if (FlightPlan.GetTrackingControllerIsMe()) {
// not recorded but tracking. add
TrackedData trd{ FlightPlan.GetCorrelatedRadarTarget().GetSystemID(), AssignedData(FlightPlan) };
TrackedData trd{ FlightPlan.GetCorrelatedRadarTarget().GetSystemID(), AssignedData(FlightPlan), m_DefaultFeet };
m_TrackedMap.insert({ FlightPlan.GetCallsign(), trd });
RefreshSimilarCallsign();
}
Expand All @@ -64,7 +65,7 @@ void TrackedRecorder::UpdateFlight(EuroScopePlugIn::CRadarTarget RadarTarget)
}
else if (FlightPlan.GetTrackingControllerIsMe()) {
// not recorded, tracking. add
TrackedData trd{ RadarTarget.GetSystemID(), AssignedData(FlightPlan) };
TrackedData trd{ RadarTarget.GetSystemID(), AssignedData(FlightPlan), m_DefaultFeet };
m_TrackedMap.insert({ FlightPlan.GetCallsign(), trd });
RefreshSimilarCallsign();
}
Expand Down Expand Up @@ -108,7 +109,7 @@ bool TrackedRecorder::IsForceFeet(string callsign)
if (r != m_TrackedMap.end())
return r->second.m_ForceFeet;
else
return false;
return m_DefaultFeet;
}

void TrackedRecorder::SetAltitudeUnit(string callsign, bool feet)
Expand All @@ -118,6 +119,14 @@ void TrackedRecorder::SetAltitudeUnit(string callsign, bool feet)
r->second.m_ForceFeet = feet;
}

void TrackedRecorder::ResetAltitudeUnit(bool feet)
{
m_DefaultFeet = feet;
for (auto& r : m_TrackedMap) {
r.second.m_ForceFeet = feet;
}
}

bool TrackedRecorder::IsSquawkDUPE(string callsign)
{
auto r1 = m_TrackedMap.find(callsign);
Expand Down
8 changes: 6 additions & 2 deletions TrackedRecorder.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class TrackedRecorder
void SetCFLConfirmed(string callsign, bool confirmed = true);
bool IsForceFeet(string callsign);
void SetAltitudeUnit(string callsign, bool feet);
void ResetAltitudeUnit(bool feet);
bool IsSquawkDUPE(string callsign);
bool IsActive(EuroScopePlugIn::CFlightPlan FlightPlan);
bool IsActive(EuroScopePlugIn::CRadarTarget RadarTarget);
Expand All @@ -35,6 +36,8 @@ class TrackedRecorder
bool SetTrackedData(EuroScopePlugIn::CRadarTarget RadarTarget);

private:
bool m_DefaultFeet;

typedef struct _AsD {
// in the order of SDK
string m_Squawk;
Expand Down Expand Up @@ -69,9 +72,10 @@ class TrackedRecorder
bool m_ForceFeet;
AssignedData m_AssignedData;

_TkD(string _sID, AssignedData _asd) :
_TkD(string _sID, AssignedData _asd, bool _fft) :
m_SystemID(_sID),
m_Offline(false), m_CommEstbed(false), m_CFLConfirmed(true), m_ForceFeet(false),
m_Offline(false), m_CommEstbed(false), m_CFLConfirmed(true),
m_ForceFeet(_fft),
m_AssignedData(_asd)
{};
}TrackedData;
Expand Down
2 changes: 1 addition & 1 deletion Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define VERSION_MAJOR 3
#define VERSION_MINOR 2
#define VERSION_REVISION 3
#define VERSION_BUILD 345
#define VERSION_BUILD 346

#define VERSION_FILE VERSION_MAJOR,VERSION_MINOR,VERSION_REVISION
#define VERSION_FILE_STR \
Expand Down

0 comments on commit 70bc9bf

Please sign in to comment.