Fixed ChangeProperty network events

This commit is contained in:
Joonas Rikkonen
2018-01-24 15:53:32 +02:00
parent 788ae63b71
commit 51ea71333e
2 changed files with 59 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework.Graphics;
using Barotrauma.Items.Components;
namespace Barotrauma
{
@@ -461,6 +462,11 @@ namespace Barotrauma
private void TrySendNetworkUpdate(ISerializableEntity entity, SerializableProperty property)
{
if (entity is ItemComponent)
{
entity = ((ItemComponent)entity).Item;
}
if (GameMain.Server != null)
{
IServerSerializable serverSerializable = entity as IServerSerializable;

View File

@@ -1409,6 +1409,39 @@ namespace Barotrauma
{
msg.Write((bool)value);
}
else if (value is Color)
{
Color color = (Color)value;
msg.Write(color.R);
msg.Write(color.G);
msg.Write(color.B);
msg.Write(color.A);
}
else if (value is Vector2)
{
msg.Write(((Vector2)value).X);
msg.Write(((Vector2)value).Y);
}
else if (value is Vector3)
{
msg.Write(((Vector3)value).X);
msg.Write(((Vector3)value).Y);
msg.Write(((Vector3)value).Z);
}
else if (value is Vector4)
{
msg.Write(((Vector4)value).X);
msg.Write(((Vector4)value).Y);
msg.Write(((Vector4)value).Z);
msg.Write(((Vector4)value).W);
}
else if (value is Rectangle)
{
msg.Write(((Rectangle)value).X);
msg.Write(((Rectangle)value).Y);
msg.Write(((Rectangle)value).Width);
msg.Write(((Rectangle)value).Height);
}
else
{
throw new System.NotImplementedException("Serializing item properties of the type \"" + value.GetType() + "\" not supported");
@@ -1446,6 +1479,26 @@ namespace Barotrauma
{
property.TrySetValue(msg.ReadBoolean());
}
else if (type == typeof(Color))
{
property.TrySetValue(new Color(msg.ReadByte(), msg.ReadByte(),msg.ReadByte(),msg.ReadByte()));
}
else if (type == typeof(Vector2))
{
property.TrySetValue(new Vector2(msg.ReadFloat(), msg.ReadFloat()));
}
else if (type == typeof(Vector3))
{
property.TrySetValue(new Vector3(msg.ReadFloat(), msg.ReadFloat(), msg.ReadFloat()));
}
else if (type == typeof(Vector4))
{
property.TrySetValue(new Vector4(msg.ReadFloat(), msg.ReadFloat(), msg.ReadFloat(), msg.ReadFloat()));
}
else if (type == typeof(Rectangle))
{
property.TrySetValue(new Vector4(msg.ReadInt32(), msg.ReadInt32(), msg.ReadInt32(), msg.ReadInt32()));
}
else
{
return;