Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/NetEntityEvent.cs
Joonas Rikkonen 044fd3344b 2f107db...5202af9
2019-03-18 21:42:26 +02:00

66 lines
1.7 KiB
C#

using Lidgren.Network;
using System;
namespace Barotrauma.Networking
{
abstract class NetEntityEvent
{
public enum Type
{
Invalid,
ComponentState,
InventoryState,
Status,
Treatment,
ApplyStatusEffect,
ChangeProperty,
Control,
UpdateSkills
}
public readonly Entity Entity;
public readonly UInt16 ID;
//arbitrary extra data that will be passed to the Write method of the serializable entity
//(the index of an itemcomponent for example)
protected object[] Data;
protected NetEntityEvent(INetSerializable entity, UInt16 id)
{
this.ID = id;
this.Entity = entity as Entity;
}
public void SetData(object[] data)
{
this.Data = data;
}
public bool IsDuplicate(NetEntityEvent other)
{
if (other.Entity != this.Entity) return false;
if (Data != null && other.Data != null)
{
if (Data.Length != other.Data.Length) return false;
for (int i = 0; i < Data.Length; i++)
{
if (Data[i] == null)
{
if (other.Data[i] != null) return false;
}
else
{
if (other.Data[i] == null) return false;
if (!Data[i].Equals(other.Data[i])) return false;
}
}
return true;
}
return Data == other.Data;
}
}
}