Inventory syncing, objHeader is passed to the ClientRead/ServerRead methods so they can determine how to read the msg (is it an inventory update, position, input, etc)

This commit is contained in:
Regalis
2016-12-10 16:39:58 +02:00
parent 108dddf082
commit 1f454d593e
21 changed files with 262 additions and 166 deletions

View File

@@ -65,7 +65,7 @@ namespace Barotrauma.Networking
break;
}
eventsToSync.Add(events[i]);
eventsToSync.Insert(0, events[i]);
}
if (eventsToSync.Count == 0) return;
@@ -96,7 +96,7 @@ namespace Barotrauma.Networking
var serverEntity = entity as IServerSerializable;
if (serverEntity == null) return;
serverEntity.ClientRead(buffer, sendingTime);
serverEntity.ClientRead(ServerNetObject.ENTITY_STATE, buffer, sendingTime);
}
public void Clear()

View File

@@ -9,6 +9,11 @@ namespace Barotrauma.Networking
{
abstract class NetEntityEvent
{
public enum Type
{
Default, ComponentState, InventoryState
}
public readonly Entity Entity;
public readonly UInt32 ID;

View File

@@ -24,7 +24,7 @@ namespace Barotrauma.Networking
public void CreateEvent(IServerSerializable entity, object[] extraData = null)
{
if (!(entity is Entity))
if (entity == null || !(entity is Entity))
{
DebugConsole.ThrowError("Can't create an entity event for " + entity + "!");
return;
@@ -91,7 +91,7 @@ namespace Barotrauma.Networking
var clientEntity = entity as IClientSerializable;
if (clientEntity == null) return;
clientEntity.ServerRead(buffer, sender);
clientEntity.ServerRead(ClientNetObject.ENTITY_STATE, buffer, sender);
}
public void Read(NetIncomingMessage msg, Client client)