[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->action = mwmp::BaseObjectList::REMOVE;
objectList->containerSubAction = mwmp::BaseObjectList::DRAG; objectList->containerSubAction = mwmp::BaseObjectList::DRAG;
mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr); mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(mPtr);
MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase; MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase;
objectList->addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount(), count); objectList->addContainerItem(baseObject, itemPtr, itemPtr.getRefData().getCount(), count);
objectList->addObject(baseObject); objectList->addObject(baseObject);
@ -167,7 +167,7 @@ namespace MWGui
objectList->action = mwmp::BaseObjectList::ADD; objectList->action = mwmp::BaseObjectList::ADD;
objectList->containerSubAction = mwmp::BaseObjectList::DROP; objectList->containerSubAction = mwmp::BaseObjectList::DROP;
mwmp::BaseObject baseObject = objectList->getBaseObject(mPtr); mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(mPtr);
MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase; MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase;
objectList->addContainerItem(baseObject, itemPtr, mDragAndDrop->mDraggedCount, 0); objectList->addContainerItem(baseObject, itemPtr, mDragAndDrop->mDraggedCount, 0);
objectList->addObject(baseObject); 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->cell = *source.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(source); mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(source);
objectList->addContainerItem(baseObject, item.mBase, count, 0); objectList->addContainerItem(baseObject, item.mBase, count, 0);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();
@ -173,7 +173,7 @@ void ContainerItemModel::removeItem (const ItemStack& item, size_t count)
objectList->cell = *source.getCell()->getCell(); objectList->cell = *source.getCell()->getCell();
objectList->action = mwmp::BaseObjectList::REMOVE; objectList->action = mwmp::BaseObjectList::REMOVE;
objectList->containerSubAction = mwmp::BaseObjectList::NONE; 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->addContainerItem(baseObject, *it, it->getRefData().getCount(), toRemove);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();

View File

@ -69,12 +69,28 @@ void ObjectList::addObject(BaseObject baseObject)
baseObjects.push_back(baseObject); baseObjects.push_back(baseObject);
} }
BaseObject ObjectList::getBaseObject(const MWWorld::Ptr& ptr) mwmp::BaseObject ObjectList::getBaseObjectFromPtr(const MWWorld::Ptr& ptr)
{ {
mwmp::BaseObject baseObject; 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.refId = ptr.getCellRef().getRefId();
baseObject.refNum = ptr.getCellRef().getRefNum().mIndex; baseObject.refNum = ptr.getCellRef().getRefNum().mIndex;
baseObject.mpNum = ptr.getCellRef().getMpNum(); baseObject.mpNum = ptr.getCellRef().getMpNum();
}
return baseObject; return baseObject;
} }
@ -117,7 +133,7 @@ void ObjectList::addEntireContainer(const MWWorld::Ptr& ptr)
MWWorld::ContainerStore& containerStore = ptr.getClass().getContainerStore(ptr); MWWorld::ContainerStore& containerStore = ptr.getClass().getContainerStore(ptr);
mwmp::BaseObject baseObject = getBaseObject(ptr); mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
for (const auto itemPtr : containerStore) for (const auto itemPtr : containerStore)
{ {
@ -692,7 +708,7 @@ void ObjectList::restockObjects(MWWorld::CellStore* cellStore)
cell = *ptrFound.getCell()->getCell(); cell = *ptrFound.getCell()->getCell();
action = mwmp::BaseObjectList::SET; action = mwmp::BaseObjectList::SET;
containerSubAction = mwmp::BaseObjectList::RESTOCK_RESULT; containerSubAction = mwmp::BaseObjectList::RESTOCK_RESULT;
mwmp::BaseObject baseObject = getBaseObject(ptrFound); mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptrFound);
addEntireContainer(ptrFound); addEntireContainer(ptrFound);
sendContainer(); 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) void ObjectList::addAllContainers(MWWorld::CellStore* cellStore)
{ {
for (auto &ref : cellStore->getContainers()->mList) for (auto &ref : cellStore->getContainers()->mList)
@ -1000,7 +991,7 @@ void ObjectList::addObjectGeneric(const MWWorld::Ptr& ptr)
{ {
cell = *ptr.getCell()->getCell(); cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr); mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
addObject(baseObject); addObject(baseObject);
} }
@ -1008,7 +999,7 @@ void ObjectList::addObjectActivate(const MWWorld::Ptr& ptr, const MWWorld::Ptr&
{ {
cell = *ptr.getCell()->getCell(); cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr); mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
baseObject.activatingActor = MechanicsHelper::getTarget(activatingActor); baseObject.activatingActor = MechanicsHelper::getTarget(activatingActor);
addObject(baseObject); addObject(baseObject);
@ -1018,7 +1009,7 @@ void ObjectList::addObjectHit(const MWWorld::Ptr& ptr, const MWWorld::Ptr& hitti
{ {
cell = *ptr.getCell()->getCell(); cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr); mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
baseObject.hittingActor = MechanicsHelper::getTarget(hittingActor); baseObject.hittingActor = MechanicsHelper::getTarget(hittingActor);
baseObject.hitAttack.success = false; baseObject.hitAttack.success = false;
@ -1029,7 +1020,7 @@ void ObjectList::addObjectHit(const MWWorld::Ptr& ptr, const MWWorld::Ptr& hitti
{ {
cell = *ptr.getCell()->getCell(); cell = *ptr.getCell()->getCell();
mwmp::BaseObject baseObject = getObjectFromPtr(ptr); mwmp::BaseObject baseObject = getBaseObjectFromPtr(ptr);
baseObject.hittingActor = MechanicsHelper::getTarget(hittingActor); baseObject.hittingActor = MechanicsHelper::getTarget(hittingActor);
baseObject.hitAttack = hitAttack; baseObject.hitAttack = hitAttack;

View File

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

View File

@ -143,7 +143,7 @@ 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->getBaseObjectFromPtr(ptr);
objectList->addContainerItem(baseObject, item, count, 0); objectList->addContainerItem(baseObject, item, count, 0);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();
@ -271,7 +271,7 @@ namespace MWScript
objectList->action = mwmp::BaseObjectList::REMOVE; objectList->action = mwmp::BaseObjectList::REMOVE;
objectList->containerSubAction = mwmp::BaseObjectList::NONE; objectList->containerSubAction = mwmp::BaseObjectList::NONE;
mwmp::BaseObject baseObject = objectList->getBaseObject(ptr); mwmp::BaseObject baseObject = objectList->getBaseObjectFromPtr(ptr);
objectList->addContainerItem(baseObject, item, 0, count); objectList->addContainerItem(baseObject, item, 0, count);
objectList->addObject(baseObject); objectList->addObject(baseObject);
objectList->sendContainer(); objectList->sendContainer();