From 75a04776b0eddfd12c9b9fa1b9ca3fa24dc16ff3 Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Mon, 8 Sep 2025 19:35:37 +0200 Subject: [PATCH] Remove the need to cast door marker widgets --- apps/openmw/mwgui/mapwindow.cpp | 19 +++++++++---------- apps/openmw/mwgui/mapwindow.hpp | 13 +++++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/openmw/mwgui/mapwindow.cpp b/apps/openmw/mwgui/mapwindow.cpp index 57806fa6d3..12bda65d1e 100644 --- a/apps/openmw/mwgui/mapwindow.cpp +++ b/apps/openmw/mwgui/mapwindow.cpp @@ -38,7 +38,7 @@ namespace { - const int cellSize = Constants::CellSizeInUnits; + constexpr int cellSize = Constants::CellSizeInUnits; constexpr float speed = 1.08f; // the zoom speed, it should be greater than 1 enum LocalMapWidgetDepth @@ -57,7 +57,10 @@ namespace Global_ExploreOverlayLayer = 2, Global_MapLayer = 3 }; +} +namespace MWGui +{ /// @brief A widget that changes its color when hovered. class MarkerWidget final : public MyGUI::Widget { @@ -108,10 +111,6 @@ namespace { scrollView->setCanvasSize(widgetSize * (grid.width() + 1), widgetSize * (grid.height() + 1)); } -} - -namespace MWGui -{ void CustomMarkerCollection::addMarker(const ESM::CustomMarker& marker, bool triggerEvent) { @@ -293,7 +292,7 @@ namespace MWGui return MyGUI::IntCoord(position.left - halfMarkerSize, position.top - halfMarkerSize, markerSize, markerSize); } - MyGUI::Widget* LocalMapBase::createDoorMarker(const std::string& name, float x, float y) const + MarkerWidget* LocalMapBase::createDoorMarker(const std::string& name, float x, float y) const { MarkerUserData data(mLocalMapRender); data.caption = name; @@ -327,7 +326,7 @@ namespace MWGui return MyGUI::IntCoord(position.left - markerSize / 2, position.top - markerSize / 2, markerSize, markerSize); } - std::vector& LocalMapBase::currentDoorMarkersWidgets() + std::vector& LocalMapBase::currentDoorMarkersWidgets() { return mActiveCell->isExterior() ? mExteriorDoorMarkerWidgets : mInteriorDoorMarkerWidgets; } @@ -628,7 +627,7 @@ namespace MWGui if (!mActiveCell->isExterior()) { - for (MyGUI::Widget* widget : mExteriorDoorMarkerWidgets) + for (MarkerWidget* widget : mExteriorDoorMarkerWidgets) widget->setVisible(false); MWWorld::CellStore& cell = worldModel->getInterior(mActiveCell->getNameId()); @@ -656,7 +655,7 @@ namespace MWGui ++iter) destNotes.push_back(iter->second.mNote); - MyGUI::Widget* markerWidget = nullptr; + MarkerWidget* markerWidget = nullptr; MarkerUserData* data; if (mDoorMarkersToRecycle.empty()) { @@ -667,7 +666,7 @@ namespace MWGui } else { - markerWidget = (MarkerWidget*)mDoorMarkersToRecycle.back(); + markerWidget = mDoorMarkersToRecycle.back(); mDoorMarkersToRecycle.pop_back(); data = markerWidget->getUserData(); diff --git a/apps/openmw/mwgui/mapwindow.hpp b/apps/openmw/mwgui/mapwindow.hpp index ee49d915dc..36cff714dc 100644 --- a/apps/openmw/mwgui/mapwindow.hpp +++ b/apps/openmw/mwgui/mapwindow.hpp @@ -43,6 +43,7 @@ namespace SceneUtil namespace MWGui { + class MarkerWidget; class CustomMarkerCollection { @@ -146,14 +147,14 @@ namespace MWGui std::vector mMaps; // Keep track of created marker widgets, just to easily remove them later. - std::vector mExteriorDoorMarkerWidgets; - std::map, std::vector> mExteriorDoorsByCell; - std::vector mInteriorDoorMarkerWidgets; + std::vector mExteriorDoorMarkerWidgets; + std::map, std::vector> mExteriorDoorsByCell; + std::vector mInteriorDoorMarkerWidgets; std::vector mMagicMarkerWidgets; std::vector mCustomMarkerWidgets; - std::vector mDoorMarkersToRecycle; + std::vector mDoorMarkersToRecycle; - std::vector& currentDoorMarkersWidgets(); + std::vector& currentDoorMarkersWidgets(); virtual void updateCustomMarkers(); @@ -163,7 +164,7 @@ namespace MWGui MyGUI::IntPoint getMarkerPosition(float worldX, float worldY, MarkerUserData& markerPos) const; MyGUI::IntCoord getMarkerCoordinates( float worldX, float worldY, MarkerUserData& markerPos, size_t markerSize) const; - MyGUI::Widget* createDoorMarker(const std::string& name, float x, float y) const; + MarkerWidget* createDoorMarker(const std::string& name, float x, float y) const; MyGUI::IntCoord getMarkerCoordinates(MyGUI::Widget* widget, size_t markerSize) const; virtual void notifyPlayerUpdate() {}