1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-05 18:49:40 +00:00

[Client] Simplify container sending with new addContainerItem() methods

This commit is contained in:
David Cernat 2020-01-16 14:00:30 +02:00
parent 51f0acbaf5
commit d2ba4a12d9
4 changed files with 27 additions and 35 deletions

View file

@ -125,7 +125,7 @@ namespace MWGui
mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr); mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr);
MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase; MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase;
objectList->addContainerItem(baseObject, itemPtr, count); objectList->addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount(), count);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();
/* /*
@ -169,17 +169,7 @@ namespace MWGui
mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr); mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr);
MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase; MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase;
mwmp::ContainerItem containerItem; objectList->addContainerItem(baseObject, itemPtr, mDragAndDrop->mDraggedCount, 0);
containerItem.refId = itemPtr.getCellRef().getRefId();
// Make sure we get the drag and drop count, not the count of the original item
containerItem.count = mDragAndDrop->mDraggedCount;
containerItem.charge = itemPtr.getCellRef().getCharge();
containerItem.enchantmentCharge = itemPtr.getCellRef().getEnchantmentCharge();
containerItem.soul = itemPtr.getCellRef().getSoul();
baseObject.containerItems.push_back(containerItem);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();
} }

View file

@ -78,17 +78,34 @@ BaseObject ObjectList::getBaseObject(const MWWorld::Ptr& ptr)
return baseObject; return baseObject;
} }
void ObjectList::addContainerItem(mwmp::BaseObject& baseObject, const MWWorld::Ptr& itemPtr, int actionCount) void ObjectList::addContainerItem(mwmp::BaseObject& baseObject, const MWWorld::Ptr& itemPtr, int itemCount, int actionCount)
{ {
mwmp::ContainerItem containerItem; mwmp::ContainerItem containerItem;
containerItem.refId = itemPtr.getCellRef().getRefId(); containerItem.refId = itemPtr.getCellRef().getRefId();
containerItem.count = itemPtr.getRefData().getCount(); containerItem.count = itemCount;
containerItem.charge = itemPtr.getCellRef().getCharge(); containerItem.charge = itemPtr.getCellRef().getCharge();
containerItem.enchantmentCharge = itemPtr.getCellRef().getEnchantmentCharge(); containerItem.enchantmentCharge = itemPtr.getCellRef().getEnchantmentCharge();
containerItem.soul = itemPtr.getCellRef().getSoul(); containerItem.soul = itemPtr.getCellRef().getSoul();
containerItem.actionCount = actionCount; containerItem.actionCount = actionCount;
LOG_APPEND(TimedLog::LOG_VERBOSE, "--- Adding container item %s", containerItem.refId.c_str()); LOG_APPEND(TimedLog::LOG_VERBOSE, "--- Adding container item %s to packet with count %i and actionCount %i",
containerItem.refId.c_str(), itemCount, actionCount);
baseObject.containerItems.push_back(containerItem);
}
void ObjectList::addContainerItem(mwmp::BaseObject& baseObject, const std::string itemId, int itemCount, int actionCount)
{
mwmp::ContainerItem containerItem;
containerItem.refId = itemId;
containerItem.count = itemCount;
containerItem.charge = -1;
containerItem.enchantmentCharge = -1;
containerItem.soul = "";
containerItem.actionCount = actionCount;
LOG_APPEND(TimedLog::LOG_VERBOSE, "--- Adding container item %s to packet with count %i and actionCount %i",
containerItem.refId.c_str(), itemCount, actionCount);
baseObject.containerItems.push_back(containerItem); baseObject.containerItems.push_back(containerItem);
} }
@ -104,7 +121,7 @@ void ObjectList::addEntireContainer(const MWWorld::Ptr& ptr)
for (const auto itemPtr : containerStore) for (const auto itemPtr : containerStore)
{ {
addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount()); addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount(), itemPtr.getRefData().getCount());
} }
addObject(baseObject); addObject(baseObject);

View file

@ -19,7 +19,8 @@ namespace mwmp
void addObject(BaseObject baseObject); void addObject(BaseObject baseObject);
BaseObject getBaseObject(const MWWorld::Ptr& ptr); BaseObject getBaseObject(const MWWorld::Ptr& ptr);
void addContainerItem(mwmp::BaseObject& baseObject, const MWWorld::Ptr& itemPtr, int actionCount); void addContainerItem(mwmp::BaseObject& baseObject, const MWWorld::Ptr& itemPtr, int itemCount, int actionCount);
void addContainerItem(mwmp::BaseObject& baseObject, const std::string itemId, int itemCount, int actionCount);
void addEntireContainer(const MWWorld::Ptr& ptr); void addEntireContainer(const MWWorld::Ptr& ptr);
void editContainers(MWWorld::CellStore* cellStore); void editContainers(MWWorld::CellStore* cellStore);

View file

@ -143,16 +143,8 @@ namespace MWScript
objectList->cell = *ptr.getCell()->getCell(); objectList->cell = *ptr.getCell()->getCell();
objectList->action = mwmp::BaseObjectList::ADD; objectList->action = mwmp::BaseObjectList::ADD;
objectList->containerSubAction = mwmp::BaseObjectList::NONE; objectList->containerSubAction = mwmp::BaseObjectList::NONE;
mwmp::BaseObject baseObject = objectList->getBaseObject(ptr); mwmp::BaseObject baseObject = objectList->getBaseObject(ptr);
mwmp::ContainerItem containerItem; objectList->addContainerItem(baseObject, item, count, 0);
containerItem.refId = item;
containerItem.count = count;
containerItem.charge = -1;
containerItem.enchantmentCharge = -1;
containerItem.soul = "";
baseObject.containerItems.push_back(containerItem);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();
} }
@ -280,15 +272,7 @@ namespace MWScript
objectList->containerSubAction = mwmp::BaseObjectList::NONE; objectList->containerSubAction = mwmp::BaseObjectList::NONE;
mwmp::BaseObject baseObject = objectList->getBaseObject(ptr); mwmp::BaseObject baseObject = objectList->getBaseObject(ptr);
mwmp::ContainerItem containerItem; objectList->addContainerItem(baseObject, item, 0, count);
containerItem.refId = item;
containerItem.count = 0;
containerItem.actionCount = count;
containerItem.charge = -1;
containerItem.enchantmentCharge = -1;
containerItem.soul = "";
baseObject.containerItems.push_back(containerItem);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();
} }