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);
MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase;
objectList->addContainerItem(baseObject, itemPtr, count);
objectList->addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount(), count);
objectList->addObject(baseObject);
objectList->sendContainer();
/*
@ -169,17 +169,7 @@ namespace MWGui
mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr);
MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase;
mwmp::ContainerItem containerItem;
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->addContainerItem(baseObject, itemPtr, mDragAndDrop->mDraggedCount, 0);
objectList->addObject(baseObject);
objectList->sendContainer();
}

View file

@ -78,17 +78,34 @@ BaseObject ObjectList::getBaseObject(const MWWorld::Ptr& ptr)
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;
containerItem.refId = itemPtr.getCellRef().getRefId();
containerItem.count = itemPtr.getRefData().getCount();
containerItem.count = itemCount;
containerItem.charge = itemPtr.getCellRef().getCharge();
containerItem.enchantmentCharge = itemPtr.getCellRef().getEnchantmentCharge();
containerItem.soul = itemPtr.getCellRef().getSoul();
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);
}
@ -104,7 +121,7 @@ void ObjectList::addEntireContainer(const MWWorld::Ptr& ptr)
for (const auto itemPtr : containerStore)
{
addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount());
addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount(), itemPtr.getRefData().getCount());
}
addObject(baseObject);

View file

@ -19,7 +19,8 @@ namespace mwmp
void addObject(BaseObject baseObject);
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 editContainers(MWWorld::CellStore* cellStore);

View file

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