[Client] Combine ObjectList's getBaseObject() and getObjectFromPtr()

This commit is contained in:
David Cernat 2020-01-23 16:18:49 +02:00
parent 975797c09b
commit 296c04af71
5 changed files with 33 additions and 44 deletions

View File

@ -123,7 +123,7 @@ namespace MWGui
objectList->action = mwmp::BaseObjectList::REMOVE;
objectList->containerSubAction = mwmp::BaseObjectList::DRAG;
mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr);
mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(mPtr);
MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase;
objectList->addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount(), count);
objectList->addObject(baseObject);
@ -167,7 +167,7 @@ namespace MWGui
objectList->action = mwmp::BaseObjectList::ADD;
objectList->containerSubAction = mwmp::BaseObjectList::DROP;
mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr);
mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(mPtr);
MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase;
objectList->addContainerItem(baseObject, itemPtr, mDragAndDrop->mDraggedCount, 0);
objectList->addObject(baseObject);

View File

@ -121,7 +121,7 @@ MWWorld::Ptr ContainerItemModel::copyItem (const ItemStack& item, size_t count,
objectList->cell = *source.getCell()->getCell();
objectList->action = mwmp::BaseObjectList::ADD;
objectList->containerSubAction = mwmp::BaseObjectList::NONE;
mwmp::BaseObject baseObject = objectList->getBaseObject(source);
mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(source);
objectList->addContainerItem(baseObject, item.mBase, count, 0);
objectList->addObject(baseObject);
objectList->sendContainer();
@ -173,7 +173,7 @@ void ContainerItemModel::removeItem (const ItemStack& item, size_t count)
objectList->cell = *source.getCell()->getCell();
objectList->action = mwmp::BaseObjectList::REMOVE;
objectList->containerSubAction = mwmp::BaseObjectList::NONE;
mwmp::BaseObject baseObject = objectList->getBaseObject(source);
mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(source);
objectList->addContainerItem(baseObject, *it, it->getRefData().getCount(), toRemove);
objectList->addObject(baseObject);
objectList->sendContainer();

View File

@ -69,12 +69,28 @@ void ObjectList::addObject(BaseObject baseObject)
baseObjects.push_back(baseObject);
}
BaseObject ObjectList::getBaseObject(const MWWorld::Ptr& ptr)
mwmp::BaseObject ObjectList::getBaseObjectFromPtr(const MWWorld::Ptr& ptr)
{
mwmp::BaseObject baseObject;
if (ptr == MWBase::Environment::get().getWorld()->getPlayerPtr())
{
baseObject.isPlayer = true;
baseObject.guid = mwmp::Main::get().getLocalPlayer()->guid;
}
else if (mwmp::PlayerList::isDedicatedPlayer(ptr))
{
baseObject.isPlayer = true;
baseObject.guid = mwmp::PlayerList::getPlayer(ptr)->guid;
}
else
{
baseObject.isPlayer = false;
baseObject.refId = ptr.getCellRef().getRefId();
baseObject.refNum = ptr.getCellRef().getRefNum().mIndex;
baseObject.mpNum = ptr.getCellRef().getMpNum();
}
return baseObject;
}
@ -117,7 +133,7 @@ void ObjectList::addEntireContainer(const MWWorld::Ptr& ptr)
MWWorld::ContainerStore& containerStore = ptr.getClass().getContainerStore(ptr);
mwmp::BaseObject baseObject = getBaseObject(ptr);
mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
for (const auto itemPtr : containerStore)
{
@ -692,7 +708,7 @@ void ObjectList::restockObjects(MWWorld::CellStore* cellStore)
cell = *ptrFound.getCell()->getCell();
action = mwmp::BaseObjectList::SET;
containerSubAction = mwmp::BaseObjectList::RESTOCK_RESULT;
mwmp::BaseObject baseObject = getBaseObject(ptrFound);
mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptrFound);
addEntireContainer(ptrFound);
sendContainer();
}
@ -931,31 +947,6 @@ void ObjectList::playVideo()
}
}
mwmp::BaseObject ObjectList::getObjectFromPtr(const MWWorld::Ptr& ptr)
{
mwmp::BaseObject baseObject;
if (ptr == MWBase::Environment::get().getWorld()->getPlayerPtr())
{
baseObject.isPlayer = true;
baseObject.guid = mwmp::Main::get().getLocalPlayer()->guid;
}
else if (mwmp::PlayerList::isDedicatedPlayer(ptr))
{
baseObject.isPlayer = true;
baseObject.guid = mwmp::PlayerList::getPlayer(ptr)->guid;
}
else
{
baseObject.isPlayer = false;
baseObject.refId = ptr.getCellRef().getRefId();
baseObject.refNum = ptr.getCellRef().getRefNum().mIndex;
baseObject.mpNum = ptr.getCellRef().getMpNum();
}
return baseObject;
}
void ObjectList::addAllContainers(MWWorld::CellStore* cellStore)
{
for (auto &ref : cellStore->getContainers()->mList)
@ -1000,7 +991,7 @@ void ObjectList::addObjectGeneric(const MWWorld::Ptr& ptr)
{
cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr);
mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
addObject(baseObject);
}
@ -1008,7 +999,7 @@ void ObjectList::addObjectActivate(const MWWorld::Ptr& ptr, const MWWorld::Ptr&
{
cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr);
mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
baseObject.activatingActor = MechanicsHelper::getTarget(activatingActor);
addObject(baseObject);
@ -1018,7 +1009,7 @@ void ObjectList::addObjectHit(const MWWorld::Ptr& ptr, const MWWorld::Ptr& hitti
{
cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr);
mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
baseObject.hittingActor = MechanicsHelper::getTarget(hittingActor);
baseObject.hitAttack.success = false;
@ -1029,7 +1020,7 @@ void ObjectList::addObjectHit(const MWWorld::Ptr& ptr, const MWWorld::Ptr& hitti
{
cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr);
mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
baseObject.hittingActor = MechanicsHelper::getTarget(hittingActor);
baseObject.hitAttack = hitAttack;

View File

@ -18,7 +18,7 @@ namespace mwmp
void reset();
void addObject(BaseObject baseObject);
BaseObject getBaseObject(const MWWorld::Ptr& ptr);
mwmp::BaseObject getBaseObjectFromPtr(const MWWorld::Ptr& ptr);
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);
@ -48,8 +48,6 @@ namespace mwmp
void playMusic();
void playVideo();
mwmp::BaseObject getObjectFromPtr(const MWWorld::Ptr& ptr);
void addAllContainers(MWWorld::CellStore* cellStore);
void addRequestedContainers(MWWorld::CellStore* cellStore, const std::vector<BaseObject>& requestObjects);

View File

@ -143,7 +143,7 @@ namespace MWScript
objectList->cell = *ptr.getCell()->getCell();
objectList->action = mwmp::BaseObjectList::ADD;
objectList->containerSubAction = mwmp::BaseObjectList::NONE;
mwmp::BaseObject baseObject = objectList->getBaseObject(ptr);
mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(ptr);
objectList->addContainerItem(baseObject, item, count, 0);
objectList->addObject(baseObject);
objectList->sendContainer();
@ -271,7 +271,7 @@ namespace MWScript
objectList->action = mwmp::BaseObjectList::REMOVE;
objectList->containerSubAction = mwmp::BaseObjectList::NONE;
mwmp::BaseObject baseObject = objectList->getBaseObject(ptr);
mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(ptr);
objectList->addContainerItem(baseObject, item, 0, count);
objectList->addObject(baseObject);
objectList->sendContainer();