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

View File

@@ -405,7 +405,7 @@ namespace Barotrauma
ApplyStatusEffects(actionType, 1.0f, target, true);
break;
case NetEntityEvent.Type.ChangeProperty:
ReadPropertyChange(msg);
ReadPropertyChange(msg, false);
break;
case NetEntityEvent.Type.Invalid:
break;
@@ -445,7 +445,7 @@ namespace Barotrauma
//on the character of the client who sent the message
break;
case NetEntityEvent.Type.ChangeProperty:
WritePropertyChange(msg, extraData);
WritePropertyChange(msg, extraData, true);
break;
}
msg.WritePadBits();

View File

@@ -1392,7 +1392,7 @@ namespace Barotrauma
case NetEntityEvent.Type.ChangeProperty:
try
{
WritePropertyChange(msg, extraData);
WritePropertyChange(msg, extraData, false);
}
catch (Exception e)
{
@@ -1471,14 +1471,14 @@ namespace Barotrauma
break;
case NetEntityEvent.Type.ChangeProperty:
ReadPropertyChange(msg);
ReadPropertyChange(msg, true);
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;
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;
int propertyIndex = 0;