diff --git a/apps/openmw/mwclass/container.cpp b/apps/openmw/mwclass/container.cpp index 1ad9e845e..ae1d085ef 100644 --- a/apps/openmw/mwclass/container.cpp +++ b/apps/openmw/mwclass/container.cpp @@ -6,11 +6,15 @@ #include #include "../mwworld/ptr.hpp" +#include "../mwworld/nullaction.hpp" #include "../mwworld/containerstore.hpp" #include "../mwworld/customdata.hpp" +#include "../mwworld/environment.hpp" #include "../mwrender/objects.hpp" +#include "../mwsound/soundmanager.hpp" + namespace { struct CustomData : public MWWorld::CustomData @@ -71,6 +75,37 @@ namespace MWClass } + boost::shared_ptr Container::activate (const MWWorld::Ptr& ptr, + const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const + { + const std::string lockedSound = "LockedChest"; + const std::string trapActivationSound = "Disarm Trap Fail"; + + if (ptr.getCellRef().lockLevel>0) + { + // TODO check for key + std::cout << "Locked container" << std::endl; + environment.mSoundManager->playSound(lockedSound, 1.0, 1.0); + return boost::shared_ptr (new MWWorld::NullAction); + } + else + { + std::cout << "Unlocked container" << std::endl; + if(ptr.getCellRef().trap.empty()) + { + // Not trapped, Inventory GUI goes here + return boost::shared_ptr (new MWWorld::NullAction); + } + else + { + // Trap activation goes here + std::cout << "Trapped with: " << ptr.getCellRef().trap << std::endl; + environment.mSoundManager->playSound(trapActivationSound, 1.0, 1.0); + return boost::shared_ptr (new MWWorld::NullAction); + } + } + } + std::string Container::getName (const MWWorld::Ptr& ptr) const { ESMS::LiveCellRef *ref = diff --git a/apps/openmw/mwclass/container.hpp b/apps/openmw/mwclass/container.hpp index 66a47a956..387714176 100644 --- a/apps/openmw/mwclass/container.hpp +++ b/apps/openmw/mwclass/container.hpp @@ -20,6 +20,10 @@ namespace MWClass ///< \return name (the one that is to be presented to the user; not the internal one); /// can return an empty string. + virtual boost::shared_ptr activate (const MWWorld::Ptr& ptr, + const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const; + ///< Generate action for activation + virtual MWWorld::ContainerStore& getContainerStore (const MWWorld::Ptr& ptr) const; ///< Return container store