From 70d35da1160090cd9dd3e338dbf498f49deca356 Mon Sep 17 00:00:00 2001 From: Emanuel Guevel Date: Tue, 11 Feb 2014 16:34:23 +0100 Subject: [PATCH 1/2] Unset selected spell when removed --- apps/openmw/mwscript/statsextensions.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index 7a59e96893..c4f672dc76 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -17,6 +17,7 @@ #include "../mwbase/environment.hpp" #include "../mwbase/dialoguemanager.hpp" #include "../mwbase/mechanicsmanager.hpp" +#include "../mwbase/windowmanager.hpp" #include "../mwworld/class.hpp" @@ -451,6 +452,14 @@ namespace MWScript runtime.pop(); MWWorld::Class::get (ptr).getCreatureStats (ptr).getSpells().remove (id); + + MWBase::WindowManager *wm = MWBase::Environment::get().getWindowManager(); + + if (ptr == MWBase::Environment::get().getWorld()->getPlayerPtr() && + id == wm->getSelectedSpell()) + { + wm->unsetSelectedSpell(); + } } }; From a3eea4f6b61932caf20e1ab856fa683be2253e5f Mon Sep 17 00:00:00 2001 From: Emanuel Guevel Date: Tue, 11 Feb 2014 16:34:51 +0100 Subject: [PATCH 2/2] Do not allow spellcasting stance without spell selected --- apps/openmw/mwgui/windowmanagerimp.cpp | 5 +++++ apps/openmw/mwinput/inputmanagerimp.cpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index bd17cb3176..878c2b95cd 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -1035,6 +1035,11 @@ namespace MWGui { mSelectedSpell = ""; mHud->unsetSelectedSpell(); + + MWWorld::Player* player = &MWBase::Environment::get().getWorld()->getPlayer(); + if (player->getDrawState() == MWMechanics::DrawState_Spell) + player->setDrawState(MWMechanics::DrawState_Nothing); + mSpellWindow->setTitle("#{sNone}"); } diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index c4b8d0a897..7ed3007ffd 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -646,6 +646,10 @@ namespace MWInput if (!mControlSwitch["playermagic"]) return; + // Not allowed if no spell selected + if (MWBase::Environment::get().getWindowManager()->getSelectedSpell().empty()) + return; + MWMechanics::DrawState_ state = mPlayer->getDrawState(); if (state == MWMechanics::DrawState_Weapon || state == MWMechanics::DrawState_Nothing) mPlayer->setDrawState(MWMechanics::DrawState_Spell);