diff --git a/apps/openmw/mwgui/container.cpp b/apps/openmw/mwgui/container.cpp index 00df18e1d..1e7d9f0bc 100644 --- a/apps/openmw/mwgui/container.cpp +++ b/apps/openmw/mwgui/container.cpp @@ -2,6 +2,8 @@ #include #include +#include "../mwmp/Main.hpp" +#include "../mwmp/WorldController.hpp" #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -132,6 +134,8 @@ namespace MWGui void ContainerWindow::openContainer(const MWWorld::Ptr& container, bool loot) { + mwmp::Main::get().getWorldController()->openContainer(container, loot); + mPickpocketDetected = false; mPtr = container; @@ -175,6 +179,7 @@ namespace MWGui void ContainerWindow::close() { + mwmp::Main::get().getWorldController()->closeContainer(mPtr); WindowBase::close(); if (dynamic_cast(mModel) diff --git a/apps/openmw/mwmp/WorldController.cpp b/apps/openmw/mwmp/WorldController.cpp index 32d2d4dfc..bed2de862 100644 --- a/apps/openmw/mwmp/WorldController.cpp +++ b/apps/openmw/mwmp/WorldController.cpp @@ -2,7 +2,9 @@ #include "../mwworld/worldimp.hpp" #include #include - +#include "../mwworld/containerstore.hpp" +#include "../mwworld/class.hpp" +#include #include "WorldController.hpp" #include "Main.hpp" @@ -38,3 +40,39 @@ MWWorld::CellStore *mwmp::WorldController::getCell(const ESM::Cell& cell) return cellStore; } + + +void mwmp::WorldController::openContainer(const MWWorld::Ptr &container, bool loot) +{ + LOG_MESSAGE_SIMPLE(Log::LOG_VERBOSE, "Container \"%s\" (%d) is openned. Loot: %s", + container.getCellRef().getRefId().c_str(), + container.getCellRef().getRefNum().mIndex, + loot ? "true" : "false"); + + MWWorld::ContainerStore &cont = container.getClass().getContainerStore(container); + for(MWWorld::ContainerStoreIterator iter = cont.begin(); iter != cont.end(); iter++) + { + int count = iter->getRefData().getCount(); + const std::string &name = iter->getCellRef().getRefId(); + + LOG_APPEND(Log::LOG_VERBOSE, " - Item. Refid: \"%s\" Count: %d", name.c_str(), count); + + /*if(::Misc::StringUtils::ciEqual(name, "gold_001")) + cont.remove("gold_001", count, container);*/ + } + +} + +void mwmp::WorldController::closeContainer(const MWWorld::Ptr &container) +{ + LOG_MESSAGE_SIMPLE(Log::LOG_VERBOSE, "Container \"%s\" (%d) is closed.", + container.getCellRef().getRefId().c_str(), + container.getCellRef().getRefNum().mIndex); + + MWWorld::ContainerStore &cont = container.getClass().getContainerStore(container); + for(MWWorld::ContainerStoreIterator iter = cont.begin(); iter != cont.end(); iter++) + { + LOG_APPEND(Log::LOG_VERBOSE, " - Item. Refid: \"%s\" Count: %d", + iter->getCellRef().getRefId().c_str(), iter->getRefData().getCount()); + } +} diff --git a/apps/openmw/mwmp/WorldController.hpp b/apps/openmw/mwmp/WorldController.hpp index 2f35cd949..3b05b55e9 100644 --- a/apps/openmw/mwmp/WorldController.hpp +++ b/apps/openmw/mwmp/WorldController.hpp @@ -1,6 +1,8 @@ #ifndef OPENMW_WORLDCONTROLLER_HPP #define OPENMW_WORLDCONTROLLER_HPP +#include "../mwworld/cellstore.hpp" + namespace mwmp { class WorldController @@ -10,6 +12,9 @@ namespace mwmp WorldController(); ~WorldController(); + void openContainer(const MWWorld::Ptr& container, bool loot); + void closeContainer(const MWWorld::Ptr& container); + virtual MWWorld::CellStore *getCell(const ESM::Cell& cell); }; }