Remove IStartCollide from flammable (#4314)

I ported some stuff to be ECS but didn't feel like porting the rest, sue me.
This commit is contained in:
metalgearsloth
2021-07-21 20:32:00 +10:00
committed by GitHub
parent cf1b6246da
commit e93692245e
2 changed files with 62 additions and 49 deletions

View File

@@ -18,24 +18,22 @@ using Robust.Server.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.Localization;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Collision;
using Robust.Shared.Physics.Dynamics;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Server.Atmos.Components
{
[RegisterComponent]
public class FlammableComponent : SharedFlammableComponent, IStartCollide, IFireAct, IInteractUsing
public class FlammableComponent : SharedFlammableComponent, IFireAct, IInteractUsing
{
private bool _resisting = false;
private readonly List<EntityUid> _collided = new();
[ViewVariables(VVAccess.ReadWrite)]
public bool OnFire { get; private set; }
public bool OnFire { get; set; }
[ViewVariables(VVAccess.ReadWrite)]
public float FireStacks { get; private set; }
public float FireStacks { get; set; }
[ViewVariables(VVAccess.ReadWrite)]
[DataField("fireSpread")]
@@ -45,17 +43,6 @@ namespace Content.Server.Atmos.Components
[DataField("canResistFire")]
public bool CanResistFire { get; private set; } = false;
public void Ignite()
{
if (FireStacks > 0 && !OnFire)
{
OnFire = true;
}
UpdateAppearance();
}
public void Extinguish()
{
if (!OnFire) return;
@@ -145,37 +132,7 @@ namespace Content.Server.Atmos.Components
}
}
void IStartCollide.CollideWith(Fixture ourFixture, Fixture otherFixture, in Manifold manifold)
{
if (!otherFixture.Body.Owner.TryGetComponent(out FlammableComponent? otherFlammable))
return;
if (!FireSpread || !otherFlammable.FireSpread)
return;
if (OnFire)
{
if (otherFlammable.OnFire)
{
var fireSplit = (FireStacks + otherFlammable.FireStacks) / 2;
FireStacks = fireSplit;
otherFlammable.FireStacks = fireSplit;
}
else
{
FireStacks /= 2;
otherFlammable.FireStacks += FireStacks;
otherFlammable.Ignite();
}
} else if (otherFlammable.OnFire)
{
otherFlammable.FireStacks /= 2;
FireStacks += otherFlammable.FireStacks;
Ignite();
}
}
private void UpdateAppearance()
public void UpdateAppearance()
{
if (Owner.Deleted || !Owner.TryGetComponent(out AppearanceComponent? appearanceComponent)) return;
appearanceComponent.SetData(FireVisuals.OnFire, OnFire);
@@ -185,7 +142,7 @@ namespace Content.Server.Atmos.Components
public void FireAct(float temperature, float volume)
{
AdjustFireStacks(3);
Ignite();
EntitySystem.Get<FlammableSystem>().Ignite(this);
}
// This needs some improvements...
@@ -212,7 +169,7 @@ namespace Content.Server.Atmos.Components
{
if (hotItem.IsCurrentlyHot())
{
Ignite();
EntitySystem.Get<FlammableSystem>().Ignite(this);
return true;
}
}