forked from teamnwah/openmw-tes3coop
[Server] Send player packets in a more appropriate order
Previously, the fact that a character class packet got sent after a dynamic stats packet caused the dynamic stats to get overridden on the client by the class change.
This commit is contained in:
parent
ba161ddddd
commit
494b10b97e
1 changed files with 42 additions and 37 deletions
|
@ -112,6 +112,48 @@ void Player::update()
|
|||
{
|
||||
auto plPCtrl = mwmp::Networking::get().getPlayerPacketController();
|
||||
|
||||
if (baseInfoChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_BASEINFO);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
|
||||
// The character class can override values from below on the client, so send it first
|
||||
cClass.update();
|
||||
|
||||
if (statsChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_STATS_DYNAMIC);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
|
||||
if (positionChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_POSITION);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
}
|
||||
|
||||
if (attributesChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_ATTRIBUTE);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
|
||||
if (skillsChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_SKILL);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
|
||||
if (inventory.isEquipmentChanged())
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_EQUIPMENT);
|
||||
|
@ -129,42 +171,6 @@ void Player::update()
|
|||
inventory.resetInventoryFlag();
|
||||
}
|
||||
|
||||
if (attributesChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_ATTRIBUTE);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
if (statsChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_STATS_DYNAMIC);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
if (skillsChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_SKILL);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
if (baseInfoChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_BASEINFO);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
packet->Send(true);
|
||||
}
|
||||
|
||||
if (positionChanged)
|
||||
{
|
||||
auto packet = plPCtrl->GetPacket(ID_PLAYER_POSITION);
|
||||
packet->setPlayer(basePlayer);
|
||||
packet->Send(false);
|
||||
}
|
||||
|
||||
if (changedMap)
|
||||
{
|
||||
auto packet = mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_MAP);
|
||||
|
@ -181,7 +187,6 @@ void Player::update()
|
|||
cellAPI.resetChangedCell();
|
||||
}
|
||||
|
||||
cClass.update();
|
||||
settings.update();
|
||||
books.update();
|
||||
gui.update();
|
||||
|
|
Loading…
Reference in a new issue