Servers can modify all Editable item properties using ChangeProperty events (not just InGameEditable ones). Closes #675

This commit is contained in:
Joonas Rikkonen
2018-08-14 12:01:56 +03:00
parent 8d5e5a8a15
commit 6cb6e26b94
2 changed files with 8 additions and 8 deletions
@@ -405,7 +405,7 @@ namespace Barotrauma
ApplyStatusEffects(actionType, 1.0f, target, true); ApplyStatusEffects(actionType, 1.0f, target, true);
break; break;
case NetEntityEvent.Type.ChangeProperty: case NetEntityEvent.Type.ChangeProperty:
ReadPropertyChange(msg); ReadPropertyChange(msg, false);
break; break;
case NetEntityEvent.Type.Invalid: case NetEntityEvent.Type.Invalid:
break; break;
@@ -445,7 +445,7 @@ namespace Barotrauma
//on the character of the client who sent the message //on the character of the client who sent the message
break; break;
case NetEntityEvent.Type.ChangeProperty: case NetEntityEvent.Type.ChangeProperty:
WritePropertyChange(msg, extraData); WritePropertyChange(msg, extraData, true);
break; break;
} }
msg.WritePadBits(); msg.WritePadBits();
@@ -1392,7 +1392,7 @@ namespace Barotrauma
case NetEntityEvent.Type.ChangeProperty: case NetEntityEvent.Type.ChangeProperty:
try try
{ {
WritePropertyChange(msg, extraData); WritePropertyChange(msg, extraData, false);
} }
catch (Exception e) catch (Exception e)
{ {
@@ -1471,14 +1471,14 @@ namespace Barotrauma
break; break;
case NetEntityEvent.Type.ChangeProperty: case NetEntityEvent.Type.ChangeProperty:
ReadPropertyChange(msg); ReadPropertyChange(msg, true);
break; break;
} }
} }
private void WritePropertyChange(NetBuffer msg, object[] extraData) private void WritePropertyChange(NetBuffer msg, object[] extraData, bool inGameEditableOnly)
{ {
var allProperties = GetProperties<InGameEditable>(); var allProperties = inGameEditableOnly ? GetProperties<InGameEditable>() : GetProperties<Editable>();
SerializableProperty property = extraData[1] as SerializableProperty; SerializableProperty property = extraData[1] as SerializableProperty;
if (property != null) if (property != null)
{ {
@@ -1552,9 +1552,9 @@ namespace Barotrauma
} }
} }
private void ReadPropertyChange(NetBuffer msg) private void ReadPropertyChange(NetBuffer msg, bool inGameEditableOnly)
{ {
var allProperties = GetProperties<InGameEditable>(); var allProperties = inGameEditableOnly ? GetProperties<InGameEditable>() : GetProperties<Editable>();
if (allProperties.Count == 0) return; if (allProperties.Count == 0) return;
int propertyIndex = 0; int propertyIndex = 0;