Browse Source

Fix blinking when position desyncs during E/W movement

pull/3976/head
staphen 4 years ago committed by Anders Jenbo
parent
commit
dcb376d284
  1. 13
      Source/multi.cpp

13
Source/multi.cpp

@ -606,7 +606,8 @@ void multi_process_network_packets()
if (pkt->wLen != dwMsgSize)
continue;
auto &player = Players[dwID];
player.position.last = { pkt->px, pkt->py };
Point syncPosition = { pkt->px, pkt->py };
player.position.last = syncPosition;
if (dwID != MyPlayerId) {
assert(gbBufferMsgs != 2);
player._pHitPoints = pkt->php;
@ -623,8 +624,10 @@ void multi_process_network_packets()
FixPlrWalkTags(dwID);
player.position.old = player.position.tile;
FixPlrWalkTags(dwID);
player.position.tile = { pkt->px, pkt->py };
player.position.future = { pkt->px, pkt->py };
player.position.tile = syncPosition;
player.position.future = syncPosition;
if (player.IsWalking())
player.position.temp = syncPosition;
dPlayer[player.position.tile.x][player.position.tile.y] = dwID + 1;
}
dx = abs(player.position.future.x - player.position.tile.x);
@ -634,8 +637,8 @@ void multi_process_network_packets()
}
MakePlrPath(player, { pkt->targx, pkt->targy }, true);
} else {
player.position.tile = { pkt->px, pkt->py };
player.position.future = { pkt->px, pkt->py };
player.position.tile = syncPosition;
player.position.future = syncPosition;
}
}
}

Loading…
Cancel
Save