Some classes for syncing entity state changes. Similar to the NetworkEvents in the old netcode, but the logic is split into separate classes which prevent the server from reading updates for entities that aren't IClientSerializable.

todo: add NetEntityEventManagers to server & client, some logic to prevent sending events that don't need to be sent (e.g. duplicate event state updates)
This commit is contained in:
Regalis
2016-11-12 20:56:06 +02:00
parent 17a7cb70ed
commit c314b37029
23 changed files with 293 additions and 29 deletions

View File

@@ -648,7 +648,7 @@ namespace Barotrauma.Items.Components
}
}
public override void ServerWrite(Lidgren.Network.NetOutgoingMessage msg, Barotrauma.Networking.Client c)
public override void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c)
{
msg.Write(docked);

View File

@@ -493,7 +493,7 @@ namespace Barotrauma.Items.Components
}
}
public override void ServerWrite(Lidgren.Network.NetOutgoingMessage msg, Barotrauma.Networking.Client c)
public override void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c)
{
msg.Write(isOpen);
msg.WriteRangedSingle(stuck, 0.0f, 100.0f, 8);

View File

@@ -662,10 +662,10 @@ namespace Barotrauma.Items.Components
}
}
public virtual void ClientWrite(NetOutgoingMessage msg) { }
public virtual void ClientWrite(NetBuffer msg) { }
public virtual void ServerRead(NetIncomingMessage msg, Client c) { }
public virtual void ServerWrite(NetOutgoingMessage msg, Client c) { }
public virtual void ServerWrite(NetBuffer msg, Client c) { }
public virtual void ClientRead(NetIncomingMessage msg, float sendingTime) { }
public virtual XElement Save(XElement parentElement)

View File

@@ -196,7 +196,7 @@ namespace Barotrauma.Items.Components
if (!IsActive) currPowerConsumption = 0.0f;
}
public override void ClientWrite(Lidgren.Network.NetOutgoingMessage msg)
public override void ClientWrite(Lidgren.Network.NetBuffer msg)
{
//flowpercentage can only be adjusted at 10% intervals -> no need for more accuracy than this
msg.WriteRangedInteger(-10, 10, (int)(flowPercentage / 10.0f));
@@ -209,7 +209,7 @@ namespace Barotrauma.Items.Components
IsActive = msg.ReadBoolean();
}
public override void ServerWrite(Lidgren.Network.NetOutgoingMessage msg, Barotrauma.Networking.Client c)
public override void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c)
{
//flowpercentage can only be adjusted at 10% intervals -> no need for more accuracy than this
msg.WriteRangedInteger(-10, 10, (int)(flowPercentage / 10.0f));

View File

@@ -411,7 +411,7 @@ namespace Barotrauma.Items.Components
if (screenOverlay != null) screenOverlay.Remove();
}
public override void ClientWrite(Lidgren.Network.NetOutgoingMessage msg)
public override void ClientWrite(Lidgren.Network.NetBuffer msg)
{
msg.Write(IsActive);
}
@@ -422,7 +422,7 @@ namespace Barotrauma.Items.Components
isActiveTickBox.Selected = IsActive;
}
public override void ServerWrite(Lidgren.Network.NetOutgoingMessage msg, Barotrauma.Networking.Client c)
public override void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c)
{
msg.Write(IsActive);
}

View File

@@ -538,7 +538,7 @@ namespace Barotrauma.Items.Components
}
}
public override void ClientWrite(NetOutgoingMessage msg)
public override void ClientWrite(NetBuffer msg)
{
msg.Write(autoTemp);
msg.WriteRangedSingle(shutDownTemp, 0.0f, 10000.0f, 8);
@@ -556,7 +556,7 @@ namespace Barotrauma.Items.Components
FissionRate = msg.ReadRangedSingle(0.0f, 100.0f, 8);
}
public override void ServerWrite(NetOutgoingMessage msg, Client c)
public override void ServerWrite(NetBuffer msg, Client c)
{
msg.WriteRangedSingle(temperature, 0.0f, 10000.0f, 16);

View File

@@ -443,7 +443,7 @@ namespace Barotrauma.Items.Components
}
}
public override void ClientWrite(Lidgren.Network.NetOutgoingMessage msg)
public override void ClientWrite(Lidgren.Network.NetBuffer msg)
{
msg.Write(autoPilot);
@@ -503,7 +503,7 @@ namespace Barotrauma.Items.Components
}
}
public override void ServerWrite(Lidgren.Network.NetOutgoingMessage msg, Barotrauma.Networking.Client c)
public override void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c)
{
msg.Write(autoPilot);

View File

@@ -249,7 +249,7 @@ namespace Barotrauma.Items.Components
GuiFrame.Update(1.0f / 60.0f);
}
public override void ClientWrite(Lidgren.Network.NetOutgoingMessage msg)
public override void ClientWrite(Lidgren.Network.NetBuffer msg)
{
float chargeSpeed = MathHelper.Clamp(rechargeSpeed / MaxRechargeSpeed, 0.0f, 1.0f);
msg.WriteRangedSingle(chargeSpeed, 0.0f, 1.0f, 8);
@@ -260,7 +260,7 @@ namespace Barotrauma.Items.Components
RechargeSpeed = msg.ReadRangedSingle(0.0f, 1.0f, 8) * maxRechargeSpeed;
}
public override void ServerWrite(Lidgren.Network.NetOutgoingMessage msg, Barotrauma.Networking.Client c)
public override void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c)
{
float chargeSpeed = MathHelper.Clamp(rechargeSpeed / MaxRechargeSpeed, 0.0f, 1.0f);
msg.WriteRangedSingle(chargeSpeed, 0.0f, 1.0f, 8);

View File

@@ -532,7 +532,7 @@ namespace Barotrauma.Items.Components
base.RemoveComponentSpecific();
}
public override void ClientWrite(Lidgren.Network.NetOutgoingMessage msg)
public override void ClientWrite(Lidgren.Network.NetBuffer msg)
{
msg.Write((byte)Math.Min(Nodes.Count, 255));
for (int i = 0; i < Math.Min(Nodes.Count, 255); i++)