From 5b3fabdb9d9ee6c4fb248ea30bbb5473b3d1c835 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Thu, 16 Feb 2017 13:34:32 +0200 Subject: [PATCH] [Client] Send ID_CONTAINER with all containers in cell when requested --- apps/openmw/mwmp/WorldEvent.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/apps/openmw/mwmp/WorldEvent.cpp b/apps/openmw/mwmp/WorldEvent.cpp index b44eda4ab..6125c5bf3 100644 --- a/apps/openmw/mwmp/WorldEvent.cpp +++ b/apps/openmw/mwmp/WorldEvent.cpp @@ -42,6 +42,10 @@ void WorldEvent::addObject(WorldObject worldObject) void WorldEvent::sendContainers(MWWorld::CellStore* cellStore) { + mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent(); + event->cell = *cellStore->getCell(); + event->action = BaseEvent::SET; + MWWorld::CellRefList *containerList = cellStore->getContainers(); for (typename MWWorld::CellRefList::List::iterator listIter(containerList->mList.begin()); @@ -49,14 +53,30 @@ void WorldEvent::sendContainers(MWWorld::CellStore* cellStore) { MWWorld::Ptr container(&*listIter, 0); + mwmp::WorldObject worldObject; + worldObject.refId = container.getCellRef().getRefId(); + worldObject.refNumIndex = container.getCellRef().getRefNum().mIndex; + MWWorld::ContainerStore& containerStore = container.getClass().getContainerStore(container); for (MWWorld::ContainerStoreIterator storeIter = containerStore.begin(); storeIter != containerStore.end(); ++storeIter) { MWWorld::Ptr itemPtr = *storeIter; + + mwmp::ContainerItem containerItem; + containerItem.refId = itemPtr.getCellRef().getRefId(); + containerItem.count = itemPtr.getRefData().getCount(); + containerItem.charge = itemPtr.getCellRef().getCharge(); + containerItem.goldValue = itemPtr.getCellRef().getGoldValue(); + containerItem.owner = itemPtr.getCellRef().getOwner(); + + worldObject.containerChanges.items.push_back(containerItem); } + + event->addObject(worldObject); } + mwmp::Main::get().getNetworking()->getWorldPacket(ID_CONTAINER)->Send(event); } void WorldEvent::editContainers(MWWorld::CellStore* cellStore)