1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-25 06:35:30 +00:00
OpenMW/apps/openmw/mwworld/actionsoulgem.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

52 lines
1.3 KiB
C++
Raw Normal View History

#include "actionsoulgem.hpp"
#include <components/debug/debuglog.hpp>
#include "../mwbase/windowmanager.hpp"
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
2019-02-19 01:10:55 +03:00
2015-09-10 18:48:34 +12:00
#include "../mwmechanics/actorutil.hpp"
#include "../mwworld/esmstore.hpp"
namespace MWWorld
{
ActionSoulgem::ActionSoulgem(const Ptr &object)
: Action(false, object)
{
}
void ActionSoulgem::executeImp(const Ptr &actor)
{
2015-09-10 18:48:34 +12:00
if (actor != MWMechanics::getPlayer())
return;
2015-09-10 18:48:34 +12:00
if(MWMechanics::isPlayerInCombat()) { //Ensure we're not in combat
MWBase::Environment::get().getWindowManager()->messageBox("#{sInventoryMessage5}");
return;
}
const auto& target = getTarget();
2022-08-28 15:06:31 +02:00
const std::string& targetSoul = target.getCellRef().getSoul();
if (targetSoul.empty())
{
MWBase::Environment::get().getWindowManager()->messageBox("#{sNotifyMessage32}");
return;
}
if (!MWBase::Environment::get().getWorld()->getStore().get<ESM::Creature>().search(targetSoul))
{
Log(Debug::Warning) << "Soul '" << targetSoul << "' not found (item: '" << target.getCellRef().getRefId() << "')";
return;
}
MWBase::Environment::get().getWindowManager()->showSoulgemDialog(target);
}
}