forked from mirror/openmw-tes3mp
Fixed inventory crash and skipmenu launch
This commit is contained in:
parent
72a16dc78b
commit
c3d49d5ca5
5 changed files with 28 additions and 9 deletions
|
@ -104,6 +104,7 @@ namespace MWBase
|
|||
* new dialogs.
|
||||
*/
|
||||
virtual void update() = 0;
|
||||
virtual void updateVisible() = 0;
|
||||
|
||||
/// @note This method will block until the video finishes playing
|
||||
/// (and will continually update the window while doing so)
|
||||
|
|
|
@ -780,7 +780,7 @@ namespace MWGui
|
|||
void MapWindow::setVisible(bool visible)
|
||||
{
|
||||
WindowBase::setVisible(visible);
|
||||
mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->isGuiMode());
|
||||
mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_None);
|
||||
}
|
||||
|
||||
void MapWindow::renderGlobalMap()
|
||||
|
|
|
@ -368,6 +368,8 @@ namespace MWGui
|
|||
mPlayerSkillValues.insert(std::make_pair(ESM::Skill::sSkillIds[i], MWMechanics::SkillValue()));
|
||||
}
|
||||
|
||||
updatePinnedWindows();
|
||||
|
||||
// Set up visibility
|
||||
updateVisible();
|
||||
|
||||
|
@ -400,11 +402,6 @@ namespace MWGui
|
|||
allow(GW_ALL);
|
||||
|
||||
mRestAllowed = !newgame;
|
||||
|
||||
mStatsWindow->setPinned(Settings::Manager::getBool("stats pin", "Windows"));
|
||||
mMap->setPinned(Settings::Manager::getBool("map pin", "Windows"));
|
||||
mSpellWindow->setPinned(Settings::Manager::getBool("spells pin", "Windows"));
|
||||
mInventoryWindow->setPinned(Settings::Manager::getBool("inventory pin", "Windows"));
|
||||
}
|
||||
|
||||
WindowManager::~WindowManager()
|
||||
|
@ -492,7 +489,6 @@ namespace MWGui
|
|||
void WindowManager::update()
|
||||
{
|
||||
cleanupGarbage();
|
||||
|
||||
mHud->update();
|
||||
}
|
||||
|
||||
|
@ -560,6 +556,12 @@ namespace MWGui
|
|||
{
|
||||
mInventoryWindow->setGuiMode(GM_None);
|
||||
|
||||
// If game is not running, we can't be sure that widgets are initialized properly
|
||||
MWBase::StateManager::State state = MWBase::Environment::get().getStateManager()->getState();
|
||||
|
||||
if (state != MWBase::StateManager::State_Running)
|
||||
return;
|
||||
|
||||
mMap->setVisible(mMap->pinned() && !(mForceHidden & GW_Map) && (mAllowed & GW_Map));
|
||||
mStatsWindow->setVisible(mStatsWindow->pinned() && !(mForceHidden & GW_Stats) && (mAllowed & GW_Stats));
|
||||
mInventoryWindow->setVisible(mInventoryWindow->pinned() && !(mForceHidden & GW_Inventory) && (mAllowed & GW_Inventory));
|
||||
|
@ -1709,6 +1711,8 @@ namespace MWGui
|
|||
mCompanionWindow->resetReference();
|
||||
mConsole->resetReference();
|
||||
|
||||
mInventoryWindow->rebuildAvatar();
|
||||
|
||||
mSelectedSpell.clear();
|
||||
|
||||
mCustomMarkers.clear();
|
||||
|
@ -1868,6 +1872,17 @@ namespace MWGui
|
|||
mVideoWidget->stop();
|
||||
}
|
||||
|
||||
void WindowManager::updatePinnedWindows()
|
||||
{
|
||||
mInventoryWindow->setPinned(Settings::Manager::getBool("inventory pin", "Windows"));
|
||||
|
||||
mMap->setPinned(Settings::Manager::getBool("map pin", "Windows"));
|
||||
|
||||
mSpellWindow->setPinned(Settings::Manager::getBool("spells pin", "Windows"));
|
||||
|
||||
mStatsWindow->setPinned(Settings::Manager::getBool("stats pin", "Windows"));
|
||||
}
|
||||
|
||||
void WindowManager::pinWindow(GuiWindow window)
|
||||
{
|
||||
switch (window)
|
||||
|
|
|
@ -362,6 +362,8 @@ namespace MWGui
|
|||
|
||||
virtual void pinWindow (MWGui::GuiWindow window);
|
||||
|
||||
virtual void updatePinnedWindows ();
|
||||
|
||||
/// Fade the screen in, over \a time seconds
|
||||
virtual void fadeScreenIn(const float time, bool clearQueue);
|
||||
/// Fade the screen out to black, over \a time seconds
|
||||
|
|
|
@ -139,8 +139,7 @@ void MWState::StateManager::newGame (bool bypass)
|
|||
{
|
||||
cleanup();
|
||||
|
||||
if (!bypass)
|
||||
MWBase::Environment::get().getWindowManager()->setNewGame (true);
|
||||
MWBase::Environment::get().getWindowManager()->setNewGame (!bypass);
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -149,6 +148,8 @@ void MWState::StateManager::newGame (bool bypass)
|
|||
MWBase::Environment::get().getWorld()->startNewGame (bypass);
|
||||
|
||||
mState = State_Running;
|
||||
|
||||
MWBase::Environment::get().getWindowManager()->updateVisible();
|
||||
}
|
||||
catch (std::exception& e)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue