diff --git a/apps/openmw/mwgui/mapwindow.cpp b/apps/openmw/mwgui/mapwindow.cpp index 1968181ceb..d93b01ce43 100644 --- a/apps/openmw/mwgui/mapwindow.cpp +++ b/apps/openmw/mwgui/mapwindow.cpp @@ -844,6 +844,15 @@ namespace MWGui } } + void MapWindow::setAlpha(float alpha) + { + NoDrop::setAlpha(alpha); + // can't allow showing map with partial transparency, as the fog of war will also go transparent + // and reveal parts of the map you shouldn't be able to see + for (std::vector::iterator it = mMapWidgets.begin(); it != mMapWidgets.end(); ++it) + (*it)->setVisible(alpha == 1); + } + // ------------------------------------------------------------------- EditNoteDialog::EditNoteDialog() diff --git a/apps/openmw/mwgui/mapwindow.hpp b/apps/openmw/mwgui/mapwindow.hpp index a9edbe0b1e..08a9118a96 100644 --- a/apps/openmw/mwgui/mapwindow.hpp +++ b/apps/openmw/mwgui/mapwindow.hpp @@ -171,6 +171,8 @@ namespace MWGui void setCellName(const std::string& cellName); + virtual void setAlpha(float alpha); + void renderGlobalMap(Loading::Listener* loadingListener); // adds the marker to the global map diff --git a/apps/openmw/mwgui/windowbase.cpp b/apps/openmw/mwgui/windowbase.cpp index 4af0afc1f6..c4bda0baed 100644 --- a/apps/openmw/mwgui/windowbase.cpp +++ b/apps/openmw/mwgui/windowbase.cpp @@ -96,11 +96,16 @@ void NoDrop::onFrame(float dt) if (mTransparent) { mWidget->setNeedMouseFocus(false); // Allow click-through - mWidget->setAlpha(std::max(0.13f, mWidget->getAlpha() - dt*5)); + setAlpha(std::max(0.13f, mWidget->getAlpha() - dt*5)); } else { mWidget->setNeedMouseFocus(true); - mWidget->setAlpha(std::min(1.0f, mWidget->getAlpha() + dt*5)); + setAlpha(std::min(1.0f, mWidget->getAlpha() + dt*5)); } } + +void NoDrop::setAlpha(float alpha) +{ + mWidget->setAlpha(alpha); +} diff --git a/apps/openmw/mwgui/windowbase.hpp b/apps/openmw/mwgui/windowbase.hpp index 53b10b452e..bf74c8bf0f 100644 --- a/apps/openmw/mwgui/windowbase.hpp +++ b/apps/openmw/mwgui/windowbase.hpp @@ -55,6 +55,7 @@ namespace MWGui NoDrop(DragAndDrop* drag, MyGUI::Widget* widget); void onFrame(float dt); + virtual void setAlpha(float alpha); private: MyGUI::Widget* mWidget;