From bcacdc49afc039c4fcbdbc9d12cb2cfb508e682d Mon Sep 17 00:00:00 2001 From: Rohit Nirmal Date: Wed, 26 Mar 2014 21:08:31 -0500 Subject: [PATCH 1/2] Update weapon icon in HUD when save is loaded. --- apps/openmw/mwstate/statemanagerimp.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/openmw/mwstate/statemanagerimp.cpp b/apps/openmw/mwstate/statemanagerimp.cpp index c0860b784..c807c5e23 100644 --- a/apps/openmw/mwstate/statemanagerimp.cpp +++ b/apps/openmw/mwstate/statemanagerimp.cpp @@ -25,6 +25,7 @@ #include "../mwworld/player.hpp" #include "../mwworld/class.hpp" #include "../mwworld/cellstore.hpp" +#include "../mwworld/inventorystore.hpp" #include "../mwmechanics/npcstats.hpp" @@ -303,6 +304,10 @@ void MWState::StateManager::loadGame (const Character *character, const Slot *sl MWBase::Environment::get().getMechanicsManager()->playerLoaded(); MWWorld::Ptr ptr = MWBase::Environment::get().getWorld()->getPlayerPtr(); + + //Update the weapon icon in the hud with whatever the player is currently holding. + MWWorld::InventoryStore& invStore = ptr.getClass().getInventoryStore(ptr); + MWBase::Environment::get().getWindowManager()->setSelectedWeapon(*invStore.getSlot(MWWorld::InventoryStore::Slot_CarriedRight)); ESM::CellId cellId = ptr.getCell()->getCell()->getCellId(); From e695890e014e0d2778e7c16720ed70ed11f354f9 Mon Sep 17 00:00:00 2001 From: Rohit Nirmal Date: Wed, 26 Mar 2014 21:53:35 -0500 Subject: [PATCH 2/2] Only update the icon if player is NOT unarmed, to avoid bad dereference. --- apps/openmw/mwstate/statemanagerimp.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwstate/statemanagerimp.cpp b/apps/openmw/mwstate/statemanagerimp.cpp index c807c5e23..5430caae5 100644 --- a/apps/openmw/mwstate/statemanagerimp.cpp +++ b/apps/openmw/mwstate/statemanagerimp.cpp @@ -307,7 +307,10 @@ void MWState::StateManager::loadGame (const Character *character, const Slot *sl //Update the weapon icon in the hud with whatever the player is currently holding. MWWorld::InventoryStore& invStore = ptr.getClass().getInventoryStore(ptr); - MWBase::Environment::get().getWindowManager()->setSelectedWeapon(*invStore.getSlot(MWWorld::InventoryStore::Slot_CarriedRight)); + MWWorld::ContainerStoreIterator item = invStore.getSlot(MWWorld::InventoryStore::Slot_CarriedRight); + + if (item != invStore.end()) + MWBase::Environment::get().getWindowManager()->setSelectedWeapon(*item); ESM::CellId cellId = ptr.getCell()->getCell()->getCellId();