mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-05 15:55:45 +00:00
1e4a854433
It was just adding a level of indirection to Ptr.getClass(). All the call were replaced by that instead. The number of lines changed is important, but the change itself is trivial, so everything should be fine. :)
70 lines
2.3 KiB
C++
70 lines
2.3 KiB
C++
#include "actionread.hpp"
|
|
|
|
#include "../mwbase/environment.hpp"
|
|
#include "../mwbase/windowmanager.hpp"
|
|
#include "../mwbase/world.hpp"
|
|
|
|
#include "../mwworld/player.hpp"
|
|
|
|
#include "../mwmechanics/npcstats.hpp"
|
|
|
|
#include "../mwgui/bookwindow.hpp"
|
|
#include "../mwgui/scrollwindow.hpp"
|
|
|
|
#include "player.hpp"
|
|
#include "class.hpp"
|
|
#include "esmstore.hpp"
|
|
|
|
namespace MWWorld
|
|
{
|
|
ActionRead::ActionRead (const MWWorld::Ptr& object) : Action (false, object)
|
|
{
|
|
}
|
|
|
|
void ActionRead::executeImp (const MWWorld::Ptr& actor) {
|
|
|
|
//Ensure we're not in combat
|
|
if(MWBase::Environment::get().getWorld()->getPlayer().isInCombat()
|
|
// Reading in combat is still allowed if the scroll/book is not in the player inventory yet
|
|
// (since otherwise, there would be no way to pick it up)
|
|
&& getTarget().getContainerStore() == &actor.getClass().getContainerStore(actor)
|
|
) {
|
|
MWBase::Environment::get().getWindowManager()->messageBox("#{sInventoryMessage4}");
|
|
return;
|
|
}
|
|
|
|
LiveCellRef<ESM::Book> *ref = getTarget().get<ESM::Book>();
|
|
|
|
if (ref->mBase->mData.mIsScroll)
|
|
{
|
|
MWBase::Environment::get().getWindowManager()->pushGuiMode(MWGui::GM_Scroll);
|
|
MWBase::Environment::get().getWindowManager()->getScrollWindow()->open(getTarget());
|
|
}
|
|
else
|
|
{
|
|
MWBase::Environment::get().getWindowManager()->pushGuiMode(MWGui::GM_Book);
|
|
MWBase::Environment::get().getWindowManager()->getBookWindow()->open(getTarget());
|
|
}
|
|
|
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld ()->getPlayerPtr();
|
|
MWMechanics::NpcStats& npcStats = player.getClass().getNpcStats (player);
|
|
|
|
// Skill gain from books
|
|
if (ref->mBase->mData.mSkillID >= 0 && ref->mBase->mData.mSkillID < ESM::Skill::Length
|
|
&& !npcStats.hasBeenUsed (ref->mBase->mId))
|
|
{
|
|
MWWorld::LiveCellRef<ESM::NPC> *playerRef = player.get<ESM::NPC>();
|
|
|
|
const ESM::Class *class_ =
|
|
MWBase::Environment::get().getWorld()->getStore().get<ESM::Class>().find (
|
|
playerRef->mBase->mClass
|
|
);
|
|
|
|
npcStats.increaseSkill (ref->mBase->mData.mSkillID, *class_, true);
|
|
|
|
npcStats.flagAsUsed (ref->mBase->mId);
|
|
}
|
|
|
|
}
|
|
}
|