InGame update messages include a timestamp which is passed to the ClientRead methods
Now only used in character position syncing, but some other entities may also have an use for it (e.g. discarding outdated data)
This commit is contained in:
@@ -58,7 +58,7 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public void ClientRead(Lidgren.Network.NetIncomingMessage message)
|
||||
public void ClientRead(Lidgren.Network.NetIncomingMessage message, float sendingTime)
|
||||
{
|
||||
if (GameMain.Server != null) return;
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public void ClientRead(Lidgren.Network.NetIncomingMessage message)
|
||||
public void ClientRead(Lidgren.Network.NetIncomingMessage message, float sendingTime)
|
||||
{
|
||||
if (GameMain.Server != null) return;
|
||||
|
||||
|
||||
@@ -696,6 +696,8 @@ namespace Barotrauma.Networking
|
||||
|
||||
private void ReadIngameUpdate(NetIncomingMessage inc)
|
||||
{
|
||||
float sendingTime = inc.ReadFloat() - inc.SenderConnection.RemoteTimeOffset;
|
||||
|
||||
ServerNetObject objHeader;
|
||||
while ((objHeader = (ServerNetObject)inc.ReadByte()) != ServerNetObject.END_OF_MESSAGE)
|
||||
{
|
||||
@@ -705,24 +707,18 @@ namespace Barotrauma.Networking
|
||||
lastSentChatMsgID = inc.ReadUInt32();
|
||||
break;
|
||||
case ServerNetObject.CHARACTER_POSITION:
|
||||
//bool dead = inc.ReadBoolean();
|
||||
Character.ClientReadStatic(inc);
|
||||
Character.ClientReadStatic(inc, sendingTime);
|
||||
inc.ReadPadBits();
|
||||
//if (Character.Controlled != null)
|
||||
//{
|
||||
// if (dead && !Character.Controlled.IsDead)
|
||||
// Character.Controlled.Kill(CauseOfDeath.Damage);
|
||||
//}
|
||||
break;
|
||||
case ServerNetObject.CHAT_MESSAGE:
|
||||
ChatMessage.ClientRead(inc);
|
||||
break;
|
||||
case ServerNetObject.ENTITY_SPAWN:
|
||||
Item.Spawner.ClientRead(inc);
|
||||
Item.Spawner.ClientRead(inc, sendingTime);
|
||||
inc.ReadPadBits();
|
||||
break;
|
||||
case ServerNetObject.ENTITY_REMOVE:
|
||||
Item.Remover.ClientRead(inc);
|
||||
Item.Remover.ClientRead(inc, sendingTime);
|
||||
inc.ReadPadBits();
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -625,6 +625,8 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
NetOutgoingMessage outmsg = server.CreateMessage();
|
||||
outmsg.Write((byte)ServerPacketHeader.UPDATE_INGAME);
|
||||
|
||||
outmsg.Write((float)NetTime.Now);
|
||||
|
||||
outmsg.Write((byte)ServerNetObject.SYNC_IDS);
|
||||
outmsg.Write(c.lastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server
|
||||
|
||||
@@ -22,6 +22,6 @@ namespace Barotrauma.Networking
|
||||
UInt32 NetStateID { get; }
|
||||
|
||||
void ServerWrite(NetOutgoingMessage msg, Client c);
|
||||
void ClientRead(NetIncomingMessage msg);
|
||||
void ClientRead(NetIncomingMessage msg, float sendingTime);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user