Fix weightlessness status effect appearing only after something checks if an entity is weightless (#2434)

* Revert "Add weightlessness status effect. (#2384)"

This reverts commit 9b751fc079.

* Bring back the icon and status

* Make weightless status track gravity and parent
This commit is contained in:
DrSmugleaf
2020-10-30 01:07:51 +01:00
committed by GitHub
parent bc4eab53df
commit ac3e9bc566
7 changed files with 168 additions and 69 deletions

View File

@@ -1,11 +1,8 @@
#nullable enable
using System;
using Content.Shared.GameObjects.Components.Mobs;
using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Physics;
using Robust.Shared.IoC;
using Content.Shared.GameObjects.EntitySystemMessages;
namespace Content.Shared.GameObjects.Components.Movement
{
@@ -21,10 +18,8 @@ namespace Content.Shared.GameObjects.Components.Movement
{
physicsManager ??= IoCManager.Resolve<IPhysicsManager>();
var isWeightless = !entity.HasComponent<MovementIgnoreGravityComponent>() &&
return !entity.HasComponent<MovementIgnoreGravityComponent>() &&
physicsManager.IsWeightless(entity.Transform.Coordinates);
entity.EntityManager.EventBus.RaiseEvent(EventSource.Local, new WeightlessChangeMessage(entity,isWeightless));
return isWeightless;
}
}
}

View File

@@ -0,0 +1,17 @@
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
namespace Content.Shared.GameObjects.EntitySystemMessages.Gravity
{
public class GravityChangedMessage : EntitySystemMessage
{
public GravityChangedMessage(IMapGrid grid)
{
Grid = grid;
}
public IMapGrid Grid { get; }
public bool HasGravity => Grid.HasGravity;
}
}

View File

@@ -1,21 +0,0 @@
using System;
using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Serialization;
namespace Content.Shared.GameObjects.EntitySystemMessages
{
[Serializable, NetSerializable]
public sealed class WeightlessChangeMessage : EntitySystemMessage
{
public readonly IEntity Entity;
public readonly bool Weightless;
public WeightlessChangeMessage(IEntity ent, bool isNowWeightless)
{
Entity = ent;
Weightless = isNowWeightless;
}
}
}