1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-07-21 05:14:10 +00:00

[General] Minor improvements for player packets

Add compression, remove useless loop iterations
This commit is contained in:
Koncord 2017-06-03 02:23:23 +08:00
parent ad873e16b8
commit 556bf18535
15 changed files with 31 additions and 55 deletions

View file

@ -31,9 +31,7 @@ void PacketActorCellChange::Packet(RakNet::BitStream *bs, bool send)
for (unsigned int i = 0; i < actorList->count; i++) for (unsigned int i = 0; i < actorList->count; i++)
{ {
if (send) if (send)
{
actor = actorList->baseActors.at(i); actor = actorList->baseActors.at(i);
}
RW(actor.refNumIndex, send); RW(actor.refNumIndex, send);
RW(actor.mpNum, send); RW(actor.mpNum, send);
@ -45,8 +43,6 @@ void PacketActorCellChange::Packet(RakNet::BitStream *bs, bool send)
RW(actor.direction, send, 1); RW(actor.direction, send, 1);
if (!send) if (!send)
{
actorList->baseActors.push_back(actor); actorList->baseActors.push_back(actor);
} }
} }
}

View file

@ -16,15 +16,15 @@ void PacketPlayerAttack::Packet(RakNet::BitStream *bs, bool send)
{ {
PlayerPacket::Packet(bs, send); PlayerPacket::Packet(bs, send);
RW(player->attack.target.refId, send); RW(player->attack.target.refId, send, 1);
RW(player->attack.target.refNumIndex, send); RW(player->attack.target.refNumIndex, send);
RW(player->attack.target.mpNum, send); RW(player->attack.target.mpNum, send);
RW(player->attack.target.guid, send); RW(player->attack.target.guid, send);
RW(player->attack.spellId, send); RW(player->attack.spellId, send, 1);
RW(player->attack.type, send); RW(player->attack.type, send);
RW(player->attack.success, send); RW(player->attack.success, send);
RW(player->attack.damage, send); RW(player->attack.damage, send, 0); // never compress damage
RW(player->attack.pressed, send); RW(player->attack.pressed, send);
RW(player->attack.knockdown, send); RW(player->attack.knockdown, send);

View file

@ -16,6 +16,5 @@ void PacketPlayerAttribute::Packet(RakNet::BitStream *bs, bool send)
{ {
PlayerPacket::Packet(bs, send); PlayerPacket::Packet(bs, send);
for (int i = 0; i < AttributeCount; ++i) RW(player->creatureStats.mAttributes, send);
RW(player->creatureStats.mAttributes[i], send);
} }

View file

@ -16,16 +16,16 @@ void PacketPlayerBaseInfo::Packet(RakNet::BitStream *bs, bool send)
{ {
PlayerPacket::Packet(bs, send); PlayerPacket::Packet(bs, send);
RW(player->npc.mName, send); RW(player->npc.mName, send, 1);
RW(player->npc.mModel, send); RW(player->npc.mModel, send, 1);
RW(player->npc.mRace, send); RW(player->npc.mRace, send, 1);
RW(player->npc.mHair, send); RW(player->npc.mHair, send), 1;
RW(player->npc.mHead, send); RW(player->npc.mHead, send), 1;
RW(player->npc.mFlags, send); RW(player->npc.mFlags, send);
RW(player->birthsign, send); RW(player->birthsign, send, 1);
RW(player->creatureModel, send); RW(player->creatureModel, send, 1);
RW(player->useCreatureName, send); RW(player->useCreatureName, send);
} }

View file

@ -17,8 +17,6 @@ void mwmp::PacketPlayerCellChange::Packet(RakNet::BitStream *bs, bool send)
{ {
PlayerPacket::Packet(bs, send); PlayerPacket::Packet(bs, send);
RW(player->cell.mData.mFlags, send); RW(player->cell.mData, send, 1);
RW(player->cell.mData.mX, send); RW(player->cell.mName, send, 1);
RW(player->cell.mData.mY, send);
RW(player->cell.mName, send);
} }

View file

@ -25,19 +25,13 @@ void mwmp::PacketPlayerCellState::Packet(RakNet::BitStream *bs, bool send)
CellState cellState; CellState cellState;
if (send) if (send)
{
cellState = player->cellStateChanges.cellStates.at(i); cellState = player->cellStateChanges.cellStates.at(i);
}
RW(cellState.type, send); RW(cellState.type, send);
RW(cellState.cell.mData.mFlags, send); RW(cellState.cell.mData, send, 1);
RW(cellState.cell.mData.mX, send); RW(cellState.cell.mName, send, 1);
RW(cellState.cell.mData.mY, send);
RW(cellState.cell.mName, send);
if (!send) if (!send)
{
player->cellStateChanges.cellStates.push_back(cellState); player->cellStateChanges.cellStates.push_back(cellState);
} }
} }
}

View file

@ -17,8 +17,8 @@ void mwmp::PacketPlayerClass::Packet(RakNet::BitStream *bs, bool send)
RW(player->charClass.mId, send); RW(player->charClass.mId, send);
if (player->charClass.mId.empty()) // custom class if (player->charClass.mId.empty()) // custom class
{ {
RW(player->charClass.mName, send); RW(player->charClass.mName, send, 1);
RW(player->charClass.mDescription, send); RW(player->charClass.mDescription, send, 1);
RW(player->charClass.mData, send); RW(player->charClass.mData, send, 1);
} }
} }

View file

@ -23,7 +23,7 @@ namespace mwmp
PlayerPacket::Packet(bs, send); PlayerPacket::Packet(bs, send);
RW(player->creatureStats.mDead, send); RW(player->creatureStats.mDead, send);
RW(player->deathReason, send); RW(player->deathReason, send, 1);
} }
}; };
} }

View file

@ -18,7 +18,7 @@ void PacketPlayerEquipment::Packet(RakNet::BitStream *bs, bool send)
for (int i = 0; i < 19; i++) for (int i = 0; i < 19; i++)
{ {
RW(player->equipedItems[i].refId, send); RW(player->equipedItems[i].refId, send, 1);
RW(player->equipedItems[i].count, send); RW(player->equipedItems[i].count, send);
RW(player->equipedItems[i].charge, send); RW(player->equipedItems[i].charge, send);
} }

View file

@ -27,7 +27,7 @@ void PacketPlayerFaction::Packet(RakNet::BitStream *bs, bool send)
if (send) if (send)
faction = player->factionChanges.factions.at(i); faction = player->factionChanges.factions.at(i);
RW(faction.factionId, send); RW(faction.factionId, send, 1);
RW(faction.rank, send); RW(faction.rank, send);
RW(faction.isExpelled, send); RW(faction.isExpelled, send);

View file

@ -31,17 +31,13 @@ void PacketPlayerInventory::Packet(RakNet::BitStream *bs, bool send)
Item item; Item item;
if (send) if (send)
{
item = player->inventoryChanges.items.at(i); item = player->inventoryChanges.items.at(i);
}
RW(item.refId, send); RW(item.refId, send, 1);
RW(item.count, send); RW(item.count, send);
RW(item.charge, send); RW(item.charge, send);
if (!send) if (!send)
{
player->inventoryChanges.items.push_back(item); player->inventoryChanges.items.push_back(item);
} }
} }
}

View file

@ -28,18 +28,16 @@ void PacketPlayerJournal::Packet(RakNet::BitStream *bs, bool send)
journalItem = player->journalChanges.journalItems.at(i); journalItem = player->journalChanges.journalItems.at(i);
RW(journalItem.type, send); RW(journalItem.type, send);
RW(journalItem.quest, send); RW(journalItem.quest, send, 1);
RW(journalItem.index, send); RW(journalItem.index, send);
if (journalItem.type == JournalItem::ENTRY) if (journalItem.type == JournalItem::ENTRY)
{ {
RW(journalItem.actorRefId, send); RW(journalItem.actorRefId, send, 1);
RW(journalItem.actorRefNumIndex, send); RW(journalItem.actorRefNumIndex, send);
RW(journalItem.actorMpNum, send); RW(journalItem.actorMpNum, send);
RW(journalItem.actorCell.mData.mFlags, send); RW(journalItem.actorCell.mData, send, 1);
RW(journalItem.actorCell.mData.mX, send); RW(journalItem.actorCell.mName, send, 1);
RW(journalItem.actorCell.mData.mY, send);
RW(journalItem.actorCell.mName, send);
} }
if (!send) if (!send)

View file

@ -18,11 +18,10 @@ void PacketPlayerSkill::Packet(RakNet::BitStream *bs, bool send)
{ {
PlayerPacket::Packet(bs, send); PlayerPacket::Packet(bs, send);
for (int i = 0; i < SkillCount; ++i) RW(player->npcStats.mSkills, send);
RW(player->npcStats.mSkills[i], send);
for (int i = 0; i < AttributeCount; ++i)
RW(player->npcStats.mSkillIncrease[i], send); RW(player->npcStats.mSkillIncrease, send);
RW(player->npcStats.mLevelProgress, send); RW(player->npcStats.mLevelProgress, send);
} }

View file

@ -27,16 +27,12 @@ void PacketPlayerSpellbook::Packet(RakNet::BitStream *bs, bool send)
ESM::Spell spell; ESM::Spell spell;
if (send) if (send)
{
spell = player->spellbookChanges.spells.at(i); spell = player->spellbookChanges.spells.at(i);
}
RW(spell.mId, send); RW(spell.mId, send, 1);
if (!send) if (!send)
{
player->spellbookChanges.spells.push_back(spell); player->spellbookChanges.spells.push_back(spell);
} }
}
} }

View file

@ -27,7 +27,7 @@ void PacketPlayerTopic::Packet(RakNet::BitStream *bs, bool send)
if (send) if (send)
topic = player->topicChanges.topics.at(i); topic = player->topicChanges.topics.at(i);
RW(topic.topicId, send); RW(topic.topicId, send, 1);
if (!send) if (!send)
player->topicChanges.topics.push_back(topic); player->topicChanges.topics.push_back(topic);