diff --git a/vSMR/SMRPlugin.cpp b/vSMR/SMRPlugin.cpp index 061efb0cc..6fc9c10f5 100644 --- a/vSMR/SMRPlugin.cpp +++ b/vSMR/SMRPlugin.cpp @@ -648,7 +648,7 @@ CRadarScreen * CSMRPlugin::OnRadarScreenCreated(const char * sDisplayName, bool { Logger::info(string(__FUNCSIG__)); if (!strcmp(sDisplayName, MY_PLUGIN_VIEW_AVISO)) { - CSMRRadar* rd = new CSMRRadar(); + CSMRRadar* rd = new CSMRRadar(this); RadarScreensOpened.push_back(rd); return rd; } diff --git a/vSMR/SMRRadar.cpp b/vSMR/SMRRadar.cpp index a7d22775f..b87a24092 100644 --- a/vSMR/SMRRadar.cpp +++ b/vSMR/SMRRadar.cpp @@ -41,7 +41,7 @@ bool mouseWithin(CRect rect) { // ReSharper disable CppMsExtAddressOfClassRValue -CSMRRadar::CSMRRadar() +CSMRRadar::CSMRRadar(CPlugIn *plugin) { Logger::info("CSMRRadar::CSMRRadar()"); @@ -120,7 +120,8 @@ CSMRRadar::CSMRRadar() Logger::info("Loading WIP areas"); string raw; - string url = "https://raw.githubusercontent.com/VATSIM-UK/uk-controller-pack/refs/heads/main/.data/vSMR_WIP_areas.txt"; + const char *altUrl = plugin->GetDataFromSettings("smr_areas_url"); + string url = altUrl ? altUrl : "https://ukcp.vatsim.uk/api/smr-areas"; HttpHelper* httpHelper = new HttpHelper(); raw.assign(httpHelper->downloadStringFromURL(url)); @@ -130,8 +131,11 @@ CSMRRadar::CSMRRadar() while (getline(ss, line, '\n')) { if (startsWith("COORD:", line.c_str())) { CPosition pos; - pos.LoadFromStrings(line.substr(21, 14).c_str(), line.substr(6, 14).c_str()); - wipArea.push_back(pos); + if ( + line.size() >= 21 && + pos.LoadFromStrings(line.substr(21, 14).c_str(), line.substr(6, 14).c_str()) + ) + wipArea.push_back(pos); } else { if (wipArea.size() > 0) { diff --git a/vSMR/SMRRadar.hpp b/vSMR/SMRRadar.hpp index 06b59e60b..809cd4ecc 100644 --- a/vSMR/SMRRadar.hpp +++ b/vSMR/SMRRadar.hpp @@ -46,7 +46,7 @@ class CSMRRadar : public EuroScopePlugIn::CRadarScreen { public: - CSMRRadar(); + CSMRRadar(CPlugIn *plugin); virtual ~CSMRRadar(); static map vStripsStands;