Sending NetTime at the start of a combined networkevent instead of individual networkevents, syncing itemcomponents for spectators, AICharacter importantentityupdates are sent again, misc bugfixes, some new heads

This commit is contained in:
Regalis
2015-11-20 17:12:33 +02:00
parent 8ec7fd44ff
commit cddf4f1bde
37 changed files with 269 additions and 130 deletions
@@ -14,6 +14,8 @@ namespace Barotrauma.Items.Components
float? targetLevel;
float lastUpdate;
Hull hull1, hull2;
[HasDefaultValue(0.0f, true)]
@@ -125,12 +127,12 @@ namespace Barotrauma.Items.Components
if (GUI.DrawButton(spriteBatch, new Rectangle(x + 200, y + 70, 40, 40), "OUT", false))
{
FlowPercentage -= 10.0f;
item.NewComponentEvent(this, true, false);
item.NewComponentEvent(this, true, true);
}
if (GUI.DrawButton(spriteBatch, new Rectangle(x + 250, y + 70, 40, 40), "IN", false))
{
FlowPercentage += 10.0f;
item.NewComponentEvent(this, true, false);
item.NewComponentEvent(this, true, true);
}
}
@@ -166,18 +168,22 @@ namespace Barotrauma.Items.Components
if (!IsActive) currPowerConsumption = 0.0f;
}
public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
public override bool FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
{
message.WriteRangedInteger(-10,10,(int)(flowPercentage/10.0f));
message.Write(IsActive);
message.WritePadBits();
return true;
}
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message, float sendingTime)
{
float newFlow = 0.0f;
bool newActive;
if (sendingTime < lastUpdate) return;
try
{
newFlow = message.ReadRangedInteger(-10,10)*10.0f;
@@ -194,6 +200,8 @@ namespace Barotrauma.Items.Components
FlowPercentage = newFlow;
IsActive = newActive;
lastUpdate = sendingTime;
}
}
}
@@ -301,12 +301,14 @@ namespace Barotrauma.Items.Components
spriteBatch.DrawString(GUI.SmallFont, (int)(dist / 80.0f) + " m", new Vector2(markerPos.X + 10, markerPos.Y + 15), Color.LightGreen);
}
public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
public override bool FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
{
message.Write(IsActive);
return true;
}
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message, float sendingTime)
{
try
{
@@ -46,6 +46,8 @@ namespace Barotrauma.Items.Components
private float load;
private float lastUpdate;
private PropertyTask powerUpTask;
[Editable, HasDefaultValue(9500.0f, true)]
@@ -445,7 +447,7 @@ namespace Barotrauma.Items.Components
}
}
public override void FillNetworkData(NetworkEventType type, NetBuffer message)
public override bool FillNetworkData(NetworkEventType type, NetBuffer message)
{
message.Write(autoTemp);
message.WriteRangedSingle(temperature, 0.0f, 10000.0f, 16);
@@ -453,10 +455,14 @@ namespace Barotrauma.Items.Components
message.WriteRangedSingle(coolingRate, 0.0f, 100.0f, 8);
message.WriteRangedSingle(fissionRate, 0.0f, 100.0f, 8);
return true;
}
public override void ReadNetworkData(NetworkEventType type, NetBuffer message)
public override void ReadNetworkData(NetworkEventType type, NetBuffer message, float sendingTime)
{
if (sendingTime < lastUpdate) return;
bool newAutoTemp;
float newTemperature, newShutDownTemp;
float newCoolingRate, newFissionRate;
@@ -486,6 +492,8 @@ namespace Barotrauma.Items.Components
CoolingRate = newCoolingRate;
FissionRate = newFissionRate;
lastUpdate = sendingTime;
}
}
}
@@ -209,15 +209,17 @@ namespace Barotrauma.Items.Components
}
}
public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
public override bool FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
{
message.Write(targetVelocity.X);
message.Write(targetVelocity.Y);
message.Write(autoPilot);
return true;
}
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message)
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message, float sendingTime)
{
Vector2 newTargetVelocity = Vector2.Zero;
bool newAutoPilot = false;