diff --git a/src/Maps/MapData.cpp b/src/Maps/MapData.cpp index 7534971e6..af4a8a2e9 100644 --- a/src/Maps/MapData.cpp +++ b/src/Maps/MapData.cpp @@ -156,7 +156,6 @@ void Maps::MapData::ImportProvinces(const std::string& path) if (auto province = province_definitions_.getProvinceFromColor(center_color); province) { - points_to_provinces_.emplace(position, *province); if (auto specific_province_points = the_province_points_.find(*province); specific_province_points != the_province_points_.end()) { @@ -357,12 +356,14 @@ std::optional Maps::MapData::GetAnyBorderCenter(const int province) std::optional Maps::MapData::GetProvinceNumber(const Point& point) const { - const auto i = points_to_provinces_.find(point); - if (i == points_to_provinces_.end()) + const auto i = std::find_if(the_province_points_.begin(), the_province_points_.end(), [point](const auto& province) { + return province.second.hasPoint(point); + }); + if (i == the_province_points_.end()) { return std::nullopt; } - return i->second; + return i->first; } diff --git a/src/Maps/MapData.h b/src/Maps/MapData.h index 4e40df4a0..ff8295c65 100644 --- a/src/Maps/MapData.h +++ b/src/Maps/MapData.h @@ -51,7 +51,6 @@ class MapData std::map the_province_points_; ProvinceDefinitions province_definitions_; - std::map points_to_provinces_; }; } // namespace Maps diff --git a/src/Maps/ProvincePoints.h b/src/Maps/ProvincePoints.h index d22ed0abc..240ec5aab 100644 --- a/src/Maps/ProvincePoints.h +++ b/src/Maps/ProvincePoints.h @@ -19,6 +19,7 @@ class ProvincePoints void addPoint(const Point& thePoint); [[nodiscard]] Point getCentermostPoint() const; + [[nodiscard]] bool hasPoint(const Point& thePoint) const { return thePoints.contains(thePoint); } private: std::set thePoints;