forked from mirror/openmw-tes3mp
[General] Restructure ID_CONTAINER to allow multiple containers at once
This commit is contained in:
parent
88f891b5bd
commit
3b604a432e
8 changed files with 113 additions and 115 deletions
|
@ -67,9 +67,9 @@ void WorldFunctions::SetBaseEventCell(const char* cellDescription) noexcept
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldFunctions::SetContainerChangesAction(int action) noexcept
|
void WorldFunctions::SetBaseEventAction(int action) noexcept
|
||||||
{
|
{
|
||||||
baseEvent->containerChanges.action = action;
|
baseEvent->action = action;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldFunctions::SetObjectRefId(const char* refId) noexcept
|
void WorldFunctions::SetObjectRefId(const char* refId) noexcept
|
||||||
|
|
|
@ -2,41 +2,41 @@
|
||||||
#define OPENMW_WORLD_HPP
|
#define OPENMW_WORLD_HPP
|
||||||
|
|
||||||
#define WORLDFUNCTIONS \
|
#define WORLDFUNCTIONS \
|
||||||
{"CreateBaseEvent", WorldFunctions::CreateBaseEvent},\
|
{"CreateBaseEvent", WorldFunctions::CreateBaseEvent},\
|
||||||
\
|
\
|
||||||
{"AddWorldObject", WorldFunctions::AddWorldObject},\
|
{"AddWorldObject", WorldFunctions::AddWorldObject},\
|
||||||
{"SetBaseEventCell", WorldFunctions::SetBaseEventCell},\
|
{"SetBaseEventCell", WorldFunctions::SetBaseEventCell},\
|
||||||
{"SetContainerChangesAction", WorldFunctions::SetContainerChangesAction},\
|
{"SetBaseEventAction", WorldFunctions::SetBaseEventAction},\
|
||||||
\
|
\
|
||||||
{"SetObjectRefId", WorldFunctions::SetObjectRefId},\
|
{"SetObjectRefId", WorldFunctions::SetObjectRefId},\
|
||||||
{"SetObjectRefNumIndex", WorldFunctions::SetObjectRefNumIndex},\
|
{"SetObjectRefNumIndex", WorldFunctions::SetObjectRefNumIndex},\
|
||||||
{"SetObjectCharge", WorldFunctions::SetObjectCharge},\
|
{"SetObjectCharge", WorldFunctions::SetObjectCharge},\
|
||||||
{"SetObjectCount", WorldFunctions::SetObjectCount},\
|
{"SetObjectCount", WorldFunctions::SetObjectCount},\
|
||||||
{"SetObjectGoldValue", WorldFunctions::SetObjectGoldValue},\
|
{"SetObjectGoldValue", WorldFunctions::SetObjectGoldValue},\
|
||||||
{"SetObjectScale", WorldFunctions::SetObjectScale},\
|
{"SetObjectScale", WorldFunctions::SetObjectScale},\
|
||||||
{"SetObjectDoorState", WorldFunctions::SetObjectDoorState},\
|
{"SetObjectDoorState", WorldFunctions::SetObjectDoorState},\
|
||||||
{"SetObjectLockLevel", WorldFunctions::SetObjectLockLevel},\
|
{"SetObjectLockLevel", WorldFunctions::SetObjectLockLevel},\
|
||||||
{"SetObjectPosition", WorldFunctions::SetObjectPosition},\
|
{"SetObjectPosition", WorldFunctions::SetObjectPosition},\
|
||||||
{"SetObjectRotation", WorldFunctions::SetObjectRotation},\
|
{"SetObjectRotation", WorldFunctions::SetObjectRotation},\
|
||||||
\
|
\
|
||||||
{"GetObjectChangesSize", WorldFunctions::GetObjectChangesSize},\
|
{"GetObjectChangesSize", WorldFunctions::GetObjectChangesSize},\
|
||||||
\
|
\
|
||||||
{"GetObjectRefId", WorldFunctions::GetObjectRefId},\
|
{"GetObjectRefId", WorldFunctions::GetObjectRefId},\
|
||||||
{"GetObjectRefNumIndex", WorldFunctions::GetObjectRefNumIndex},\
|
{"GetObjectRefNumIndex", WorldFunctions::GetObjectRefNumIndex},\
|
||||||
{"GetObjectCharge", WorldFunctions::GetObjectCharge},\
|
{"GetObjectCharge", WorldFunctions::GetObjectCharge},\
|
||||||
{"GetObjectCount", WorldFunctions::GetObjectCount},\
|
{"GetObjectCount", WorldFunctions::GetObjectCount},\
|
||||||
{"GetObjectGoldValue", WorldFunctions::GetObjectGoldValue},\
|
{"GetObjectGoldValue", WorldFunctions::GetObjectGoldValue},\
|
||||||
{"GetObjectScale", WorldFunctions::GetObjectScale},\
|
{"GetObjectScale", WorldFunctions::GetObjectScale},\
|
||||||
{"GetObjectDoorState", WorldFunctions::GetObjectDoorState},\
|
{"GetObjectDoorState", WorldFunctions::GetObjectDoorState},\
|
||||||
{"GetObjectLockLevel", WorldFunctions::GetObjectLockLevel},\
|
{"GetObjectLockLevel", WorldFunctions::GetObjectLockLevel},\
|
||||||
{"GetObjectPosX", WorldFunctions::GetObjectPosX},\
|
{"GetObjectPosX", WorldFunctions::GetObjectPosX},\
|
||||||
{"GetObjectPosY", WorldFunctions::GetObjectPosY},\
|
{"GetObjectPosY", WorldFunctions::GetObjectPosY},\
|
||||||
{"GetObjectPosZ", WorldFunctions::GetObjectPosZ},\
|
{"GetObjectPosZ", WorldFunctions::GetObjectPosZ},\
|
||||||
{"GetObjectRotX", WorldFunctions::GetObjectRotX},\
|
{"GetObjectRotX", WorldFunctions::GetObjectRotX},\
|
||||||
{"GetObjectRotY", WorldFunctions::GetObjectRotY},\
|
{"GetObjectRotY", WorldFunctions::GetObjectRotY},\
|
||||||
{"GetObjectRotZ", WorldFunctions::GetObjectRotZ},\
|
{"GetObjectRotZ", WorldFunctions::GetObjectRotZ},\
|
||||||
\
|
\
|
||||||
{"SendContainer", WorldFunctions::SendContainer},\
|
{"SendContainer", WorldFunctions::SendContainer},\
|
||||||
\
|
\
|
||||||
{"SendObjectDelete", WorldFunctions::SendObjectDelete},\
|
{"SendObjectDelete", WorldFunctions::SendObjectDelete},\
|
||||||
{"SendObjectPlace", WorldFunctions::SendObjectPlace},\
|
{"SendObjectPlace", WorldFunctions::SendObjectPlace},\
|
||||||
|
@ -57,7 +57,7 @@ public:
|
||||||
|
|
||||||
static void AddWorldObject() noexcept;
|
static void AddWorldObject() noexcept;
|
||||||
static void SetBaseEventCell(const char* cellDescription) noexcept;
|
static void SetBaseEventCell(const char* cellDescription) noexcept;
|
||||||
static void SetContainerChangesAction(int action) noexcept;
|
static void SetBaseEventAction(int action) noexcept;
|
||||||
|
|
||||||
static void SetObjectRefId(const char* refId) noexcept;
|
static void SetObjectRefId(const char* refId) noexcept;
|
||||||
static void SetObjectRefNumIndex(int refNumIndex) noexcept;
|
static void SetObjectRefNumIndex(int refNumIndex) noexcept;
|
||||||
|
|
|
@ -104,11 +104,11 @@ namespace MWGui
|
||||||
// Added by tes3mp
|
// Added by tes3mp
|
||||||
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
||||||
event->cell = *mPtr.getCell()->getCell();
|
event->cell = *mPtr.getCell()->getCell();
|
||||||
|
event->action = mwmp::BaseEvent::REMOVE;
|
||||||
|
|
||||||
mwmp::WorldObject worldObject;
|
mwmp::WorldObject worldObject;
|
||||||
worldObject.refId = mPtr.getCellRef().getRefId();
|
worldObject.refId = mPtr.getCellRef().getRefId();
|
||||||
worldObject.refNumIndex = mPtr.getCellRef().getRefNum().mIndex;
|
worldObject.refNumIndex = mPtr.getCellRef().getRefNum().mIndex;
|
||||||
event->addObject(worldObject);
|
|
||||||
|
|
||||||
MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase;
|
MWWorld::Ptr itemPtr = mModel->getItem(mSelectedItem).mBase;
|
||||||
|
|
||||||
|
@ -119,8 +119,9 @@ namespace MWGui
|
||||||
containerItem.goldValue = itemPtr.getCellRef().getGoldValue();
|
containerItem.goldValue = itemPtr.getCellRef().getGoldValue();
|
||||||
containerItem.owner = itemPtr.getCellRef().getOwner();
|
containerItem.owner = itemPtr.getCellRef().getOwner();
|
||||||
containerItem.actionCount = count;
|
containerItem.actionCount = count;
|
||||||
event->addContainerItem(containerItem);
|
|
||||||
event->containerChanges.action = mwmp::ContainerChanges::REMOVE;
|
worldObject.containerChanges.items.push_back(containerItem);
|
||||||
|
event->addObject(worldObject);
|
||||||
|
|
||||||
mwmp::Main::get().getNetworking()->getWorldPacket(ID_CONTAINER)->Send(event);
|
mwmp::Main::get().getNetworking()->getWorldPacket(ID_CONTAINER)->Send(event);
|
||||||
|
|
||||||
|
@ -163,11 +164,11 @@ namespace MWGui
|
||||||
// Added by tes3mp
|
// Added by tes3mp
|
||||||
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
||||||
event->cell = *mPtr.getCell()->getCell();
|
event->cell = *mPtr.getCell()->getCell();
|
||||||
|
event->action = mwmp::BaseEvent::ADD;
|
||||||
|
|
||||||
mwmp::WorldObject worldObject;
|
mwmp::WorldObject worldObject;
|
||||||
worldObject.refId = mPtr.getCellRef().getRefId();
|
worldObject.refId = mPtr.getCellRef().getRefId();
|
||||||
worldObject.refNumIndex = mPtr.getCellRef().getRefNum().mIndex;
|
worldObject.refNumIndex = mPtr.getCellRef().getRefNum().mIndex;
|
||||||
event->addObject(worldObject);
|
|
||||||
|
|
||||||
MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase;
|
MWWorld::Ptr itemPtr = mDragAndDrop->mItem.mBase;
|
||||||
|
|
||||||
|
@ -180,8 +181,9 @@ namespace MWGui
|
||||||
containerItem.charge = itemPtr.getCellRef().getCharge();
|
containerItem.charge = itemPtr.getCellRef().getCharge();
|
||||||
containerItem.goldValue = itemPtr.getCellRef().getGoldValue();
|
containerItem.goldValue = itemPtr.getCellRef().getGoldValue();
|
||||||
containerItem.owner = itemPtr.getCellRef().getOwner();
|
containerItem.owner = itemPtr.getCellRef().getOwner();
|
||||||
event->addContainerItem(containerItem);
|
|
||||||
event->containerChanges.action = mwmp::ContainerChanges::ADD;
|
worldObject.containerChanges.items.push_back(containerItem);
|
||||||
|
event->addObject(worldObject);
|
||||||
|
|
||||||
mwmp::Main::get().getNetworking()->getWorldPacket(ID_CONTAINER)->Send(event);
|
mwmp::Main::get().getNetworking()->getWorldPacket(ID_CONTAINER)->Send(event);
|
||||||
|
|
||||||
|
@ -317,12 +319,12 @@ namespace MWGui
|
||||||
// Added by tes3mp
|
// Added by tes3mp
|
||||||
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
||||||
event->cell = *mPtr.getCell()->getCell();
|
event->cell = *mPtr.getCell()->getCell();
|
||||||
|
event->action = mwmp::BaseEvent::SET;
|
||||||
|
|
||||||
mwmp::WorldObject worldObject;
|
mwmp::WorldObject worldObject;
|
||||||
worldObject.refId = mPtr.getCellRef().getRefId();
|
worldObject.refId = mPtr.getCellRef().getRefId();
|
||||||
worldObject.refNumIndex = mPtr.getCellRef().getRefNum().mIndex;
|
worldObject.refNumIndex = mPtr.getCellRef().getRefNum().mIndex;
|
||||||
event->addObject(worldObject);
|
event->addObject(worldObject);
|
||||||
event->containerChanges.action = mwmp::ContainerChanges::SET;
|
|
||||||
|
|
||||||
mwmp::Main::get().getNetworking()->getWorldPacket(ID_CONTAINER)->Send(event);
|
mwmp::Main::get().getNetworking()->getWorldPacket(ID_CONTAINER)->Send(event);
|
||||||
|
|
||||||
|
|
|
@ -749,7 +749,7 @@ void Networking::processWorldPacket(RakNet::Packet *packet)
|
||||||
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_CONTAINER");
|
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_CONTAINER");
|
||||||
|
|
||||||
// If we've received a request for information, comply with it
|
// If we've received a request for information, comply with it
|
||||||
if (event->containerChanges.action == mwmp::ContainerChanges::REQUEST)
|
if (event->action == mwmp::BaseEvent::REQUEST)
|
||||||
event->sendContainers(ptrCellStore);
|
event->sendContainers(ptrCellStore);
|
||||||
// Otherwise, edit containers based on the information received
|
// Otherwise, edit containers based on the information received
|
||||||
else
|
else
|
||||||
|
|
|
@ -40,11 +40,6 @@ void WorldEvent::addObject(WorldObject worldObject)
|
||||||
objectChanges.objects.push_back(worldObject);
|
objectChanges.objects.push_back(worldObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldEvent::addContainerItem(ContainerItem containerItem)
|
|
||||||
{
|
|
||||||
containerChanges.items.push_back(containerItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WorldEvent::sendContainers(MWWorld::CellStore* cellStore)
|
void WorldEvent::sendContainers(MWWorld::CellStore* cellStore)
|
||||||
{
|
{
|
||||||
MWWorld::CellRefList<ESM::Container> *containerList = cellStore->getContainers();
|
MWWorld::CellRefList<ESM::Container> *containerList = cellStore->getContainers();
|
||||||
|
@ -86,21 +81,20 @@ void WorldEvent::editContainers(MWWorld::CellStore* cellStore)
|
||||||
ptrFound.getCellRef().getRefNum());
|
ptrFound.getCellRef().getRefNum());
|
||||||
|
|
||||||
MWWorld::ContainerStore& containerStore = ptrFound.getClass().getContainerStore(ptrFound);
|
MWWorld::ContainerStore& containerStore = ptrFound.getClass().getContainerStore(ptrFound);
|
||||||
int action = containerChanges.action;
|
|
||||||
|
|
||||||
// If we are setting the entire contents, clear the current ones
|
// If we are setting the entire contents, clear the current ones
|
||||||
if (action == ContainerChanges::SET)
|
if (action == BaseEvent::SET)
|
||||||
containerStore.clear();
|
containerStore.clear();
|
||||||
|
|
||||||
for (unsigned int i = 0; i < containerChanges.count; i++)
|
for (unsigned int i = 0; i < worldObject.containerChanges.count; i++)
|
||||||
{
|
{
|
||||||
ContainerItem containerItem = containerChanges.items.at(i);
|
ContainerItem containerItem = worldObject.containerChanges.items.at(i);
|
||||||
MWWorld::Ptr ownerPtr = MWBase::Environment::get().getWorld()->searchPtr(containerItem.owner, false);
|
MWWorld::Ptr ownerPtr = MWBase::Environment::get().getWorld()->searchPtr(containerItem.owner, false);
|
||||||
|
|
||||||
if (ownerPtr.isEmpty())
|
if (ownerPtr.isEmpty())
|
||||||
ownerPtr = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
ownerPtr = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
||||||
|
|
||||||
if (action == ContainerChanges::ADD || action == ContainerChanges::SET)
|
if (action == BaseEvent::ADD || action == BaseEvent::SET)
|
||||||
{
|
{
|
||||||
// Create a ManualRef to be able to set item charge
|
// Create a ManualRef to be able to set item charge
|
||||||
MWWorld::ManualRef ref(MWBase::Environment::get().getWorld()->getStore(), containerItem.refId, 1);
|
MWWorld::ManualRef ref(MWBase::Environment::get().getWorld()->getStore(), containerItem.refId, 1);
|
||||||
|
@ -116,7 +110,7 @@ void WorldEvent::editContainers(MWWorld::CellStore* cellStore)
|
||||||
|
|
||||||
containerStore.add(newPtr, containerItem.count, ownerPtr, true);
|
containerStore.add(newPtr, containerItem.count, ownerPtr, true);
|
||||||
}
|
}
|
||||||
else if (action == ContainerChanges::REMOVE)
|
else if (action == BaseEvent::REMOVE)
|
||||||
{
|
{
|
||||||
// We have to find the right item ourselves because ContainerStore has no method
|
// We have to find the right item ourselves because ContainerStore has no method
|
||||||
// accounting for charge
|
// accounting for charge
|
||||||
|
|
|
@ -16,7 +16,6 @@ namespace mwmp
|
||||||
virtual ~WorldEvent();
|
virtual ~WorldEvent();
|
||||||
|
|
||||||
void addObject(WorldObject worldObject);
|
void addObject(WorldObject worldObject);
|
||||||
void addContainerItem(ContainerItem containerItem);
|
|
||||||
|
|
||||||
void sendContainers(MWWorld::CellStore* cellStore);
|
void sendContainers(MWWorld::CellStore* cellStore);
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,28 @@
|
||||||
|
|
||||||
namespace mwmp
|
namespace mwmp
|
||||||
{
|
{
|
||||||
|
struct ContainerItem
|
||||||
|
{
|
||||||
|
std::string refId;
|
||||||
|
int count;
|
||||||
|
int charge;
|
||||||
|
int goldValue;
|
||||||
|
|
||||||
|
std::string owner;
|
||||||
|
int actionCount;
|
||||||
|
|
||||||
|
inline bool operator==(const ContainerItem& rhs)
|
||||||
|
{
|
||||||
|
return refId == rhs.refId && count == rhs.count && charge == rhs.charge && goldValue && rhs.goldValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ContainerChanges
|
||||||
|
{
|
||||||
|
std::vector<ContainerItem> items;
|
||||||
|
unsigned int count;
|
||||||
|
};
|
||||||
|
|
||||||
struct WorldObject
|
struct WorldObject
|
||||||
{
|
{
|
||||||
std::string refId;
|
std::string refId;
|
||||||
|
@ -30,22 +52,8 @@ namespace mwmp
|
||||||
int shortVal;
|
int shortVal;
|
||||||
float floatVal;
|
float floatVal;
|
||||||
std::string varName;
|
std::string varName;
|
||||||
};
|
|
||||||
|
|
||||||
struct ContainerItem
|
ContainerChanges containerChanges;
|
||||||
{
|
|
||||||
std::string refId;
|
|
||||||
int count;
|
|
||||||
int charge;
|
|
||||||
int goldValue;
|
|
||||||
|
|
||||||
std::string owner;
|
|
||||||
int actionCount;
|
|
||||||
|
|
||||||
inline bool operator==(const ContainerItem& rhs)
|
|
||||||
{
|
|
||||||
return refId == rhs.refId && count == rhs.count && charge == rhs.charge && goldValue && rhs.goldValue;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ObjectChanges
|
struct ObjectChanges
|
||||||
|
@ -54,22 +62,6 @@ namespace mwmp
|
||||||
unsigned int count;
|
unsigned int count;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ContainerChanges
|
|
||||||
{
|
|
||||||
std::vector<ContainerItem> items;
|
|
||||||
unsigned int count;
|
|
||||||
|
|
||||||
enum CONTAINER_ACTION
|
|
||||||
{
|
|
||||||
SET = 0,
|
|
||||||
ADD = 1,
|
|
||||||
REMOVE = 2,
|
|
||||||
REQUEST = 3
|
|
||||||
};
|
|
||||||
|
|
||||||
int action; // 0 - Clear and set in entirety, 1 - Add item, 2 - Remove item, 3 - Request items
|
|
||||||
};
|
|
||||||
|
|
||||||
class BaseEvent
|
class BaseEvent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -84,11 +76,20 @@ namespace mwmp
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum WORLD_ACTION
|
||||||
|
{
|
||||||
|
SET = 0,
|
||||||
|
ADD = 1,
|
||||||
|
REMOVE = 2,
|
||||||
|
REQUEST = 3
|
||||||
|
};
|
||||||
|
|
||||||
RakNet::RakNetGUID guid;
|
RakNet::RakNetGUID guid;
|
||||||
ObjectChanges objectChanges;
|
ObjectChanges objectChanges;
|
||||||
ContainerChanges containerChanges;
|
|
||||||
|
|
||||||
ESM::Cell cell;
|
ESM::Cell cell;
|
||||||
|
|
||||||
|
int action; // 0 - Clear and set in entirety, 1 - Add item, 2 - Remove item, 3 - Request items
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,21 +12,18 @@ void PacketContainer::Packet(RakNet::BitStream *bs, BaseEvent *event, bool send)
|
||||||
{
|
{
|
||||||
WorldPacket::Packet(bs, event, send);
|
WorldPacket::Packet(bs, event, send);
|
||||||
|
|
||||||
RW(event->containerChanges.action, send);
|
RW(event->action, send);
|
||||||
|
|
||||||
if (!send)
|
if (send)
|
||||||
{
|
{
|
||||||
event->objectChanges.objects.clear();
|
event->objectChanges.count = (unsigned int)(event->objectChanges.objects.size());
|
||||||
event->containerChanges.items.clear();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
event->objectChanges.count = (unsigned int)(event->objectChanges.objects.size());
|
event->objectChanges.objects.clear();
|
||||||
event->containerChanges.count = (unsigned int)(event->containerChanges.items.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RW(event->objectChanges.count, send);
|
RW(event->objectChanges.count, send);
|
||||||
RW(event->containerChanges.count, send);
|
|
||||||
|
|
||||||
RW(event->cell.mData.mFlags, send);
|
RW(event->cell.mData.mFlags, send);
|
||||||
RW(event->cell.mData.mX, send);
|
RW(event->cell.mData.mX, send);
|
||||||
|
@ -40,37 +37,42 @@ void PacketContainer::Packet(RakNet::BitStream *bs, BaseEvent *event, bool send)
|
||||||
if (send)
|
if (send)
|
||||||
{
|
{
|
||||||
worldObject = event->objectChanges.objects.at(i);
|
worldObject = event->objectChanges.objects.at(i);
|
||||||
|
worldObject.containerChanges.count = (unsigned int)(worldObject.containerChanges.items.size());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
worldObject.containerChanges.items.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
RW(worldObject.refId, send);
|
RW(worldObject.refId, send);
|
||||||
RW(worldObject.refNumIndex, send);
|
RW(worldObject.refNumIndex, send);
|
||||||
|
RW(worldObject.containerChanges.count, send);
|
||||||
|
|
||||||
|
ContainerItem containerItem;
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < worldObject.containerChanges.count; i++)
|
||||||
|
{
|
||||||
|
if (send)
|
||||||
|
{
|
||||||
|
containerItem = worldObject.containerChanges.items.at(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
RW(containerItem.refId, send);
|
||||||
|
RW(containerItem.count, send);
|
||||||
|
RW(containerItem.charge, send);
|
||||||
|
RW(containerItem.goldValue, send);
|
||||||
|
RW(containerItem.owner, send);
|
||||||
|
RW(containerItem.actionCount, send);
|
||||||
|
|
||||||
|
if (!send)
|
||||||
|
{
|
||||||
|
worldObject.containerChanges.items.push_back(containerItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!send)
|
if (!send)
|
||||||
{
|
{
|
||||||
event->objectChanges.objects.push_back(worldObject);
|
event->objectChanges.objects.push_back(worldObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ContainerItem containerItem;
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < event->containerChanges.count; i++)
|
|
||||||
{
|
|
||||||
if (send)
|
|
||||||
{
|
|
||||||
containerItem = event->containerChanges.items.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
RW(containerItem.refId, send);
|
|
||||||
RW(containerItem.count, send);
|
|
||||||
RW(containerItem.charge, send);
|
|
||||||
RW(containerItem.goldValue, send);
|
|
||||||
RW(containerItem.owner, send);
|
|
||||||
RW(containerItem.actionCount, send);
|
|
||||||
|
|
||||||
if (!send)
|
|
||||||
{
|
|
||||||
event->containerChanges.items.push_back(containerItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue