From 1251b32f0fc9144da23d6ad12ee1100c27c04a88 Mon Sep 17 00:00:00 2001 From: capostrophic Date: Thu, 9 Jan 2020 13:55:14 +0300 Subject: [PATCH] Slightly reduce code duplication --- apps/openmw/mwscript/miscextensions.cpp | 11 ++--------- apps/openmw/mwworld/player.cpp | 12 ++++++++++++ apps/openmw/mwworld/player.hpp | 2 ++ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 4f84cfe47b..ccf285844c 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -1111,10 +1111,7 @@ namespace MWScript if (ptr == MWMechanics::getPlayer()) { - MWWorld::InventoryStore& store = ptr.getClass().getInventoryStore(ptr); - store.setSelectedEnchantItem(store.end()); - MWBase::Environment::get().getWindowManager()->setSelectedSpell(spellId, int(MWMechanics::getSpellSuccessChance(spellId, ptr))); - MWBase::Environment::get().getWindowManager()->updateSpellWindow(); + MWBase::Environment::get().getWorld()->getPlayer().setSelectedSpell(spellId); return; } @@ -1122,7 +1119,6 @@ namespace MWScript { MWMechanics::AiCast castPackage(targetId, spellId, true); ptr.getClass().getCreatureStats (ptr).getAiSequence().stack(castPackage, ptr); - return; } @@ -1158,10 +1154,7 @@ namespace MWScript if (ptr == MWMechanics::getPlayer()) { - MWWorld::InventoryStore& store = ptr.getClass().getInventoryStore(ptr); - store.setSelectedEnchantItem(store.end()); - MWBase::Environment::get().getWindowManager()->setSelectedSpell(spellId, int(MWMechanics::getSpellSuccessChance(spellId, ptr))); - MWBase::Environment::get().getWindowManager()->updateSpellWindow(); + MWBase::Environment::get().getWorld()->getPlayer().setSelectedSpell(spellId); return; } diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index 8e047677bc..8c5f526551 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -11,6 +11,7 @@ #include #include "../mwworld/esmstore.hpp" +#include "../mwworld/inventorystore.hpp" #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -19,6 +20,7 @@ #include "../mwmechanics/movement.hpp" #include "../mwmechanics/npcstats.hpp" +#include "../mwmechanics/spellcasting.hpp" #include "class.hpp" #include "ptr.hpp" @@ -492,4 +494,14 @@ namespace MWWorld { mPreviousItems.erase(boundItemId); } + + void Player::setSelectedSpell(const std::string& spellId) + { + Ptr player = getPlayer(); + InventoryStore& store = player.getClass().getInventoryStore(player); + store.setSelectedEnchantItem(store.end()); + int castChance = int(MWMechanics::getSpellSuccessChance(spellId, player)); + MWBase::Environment::get().getWindowManager()->setSelectedSpell(spellId, castChance); + MWBase::Environment::get().getWindowManager()->updateSpellWindow(); + } } diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index 96ed20adfc..1e4b0ffdf5 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -135,6 +135,8 @@ namespace MWWorld void setPreviousItem(const std::string& boundItemId, const std::string& previousItemId); std::string getPreviousItem(const std::string& boundItemId); void erasePreviousItem(const std::string& boundItemId); + + void setSelectedSpell(const std::string& spellId); }; } #endif