Server notifies clients when an OnFire statuseffect causes an item to break (-> clients can see oxygen/fuel tanks exploding again)

This commit is contained in:
Regalis
2017-05-24 17:13:56 +03:00
parent 3183c9fb03
commit 4d0a6677e9
5 changed files with 30 additions and 15 deletions
+6
View File
@@ -3,6 +3,7 @@ using Barotrauma.Lights;
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using Barotrauma.Networking;
using FarseerPhysics;
namespace Barotrauma
@@ -91,6 +92,11 @@ namespace Barotrauma
if (Vector2.Distance(item.WorldPosition, worldPosition) > attack.Range * 0.1f) continue;
item.ApplyStatusEffects(ActionType.OnFire, 1.0f);
if (item.Condition <= 0.0f)
{
GameMain.Server.CreateEntityEvent(item, new object[] { NetEntityEvent.Type.ApplyStatusEffect, ActionType.OnFire });
}
}
}
+8 -3
View File
@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Barotrauma.Networking;
namespace Barotrauma
{
@@ -267,7 +268,7 @@ namespace Barotrauma
private void DamageItems(float deltaTime)
{
if (size.X <= 0.0f) return;
if (size.X <= 0.0f || GameMain.Client != null) return;
foreach (Item item in Item.ItemList)
{
@@ -277,8 +278,12 @@ namespace Barotrauma
float range = (float)Math.Sqrt(size.X) * 10.0f;
if (item.Position.X < position.X - range || item.Position.X > position.X + size.X + range) continue;
if (item.Position.Y < position.Y - size.Y || item.Position.Y > hull.Rect.Y) continue;
if (GameMain.Client == null) item.ApplyStatusEffects(ActionType.OnFire, deltaTime);
item.ApplyStatusEffects(ActionType.OnFire, deltaTime);
if (item.Condition <= 0.0f)
{
GameMain.Server.CreateEntityEvent(item, new object[] { NetEntityEvent.Type.ApplyStatusEffect, ActionType.OnFire });
}
}
}