Add weightlessness status effect. (#2384)
* Add weightlessness status effect. * remove system, add new action * Update Content.Shared/GameObjects/Components/Mobs/SharedWeightlessStatusComponent.cs Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com> * Update Content.Shared/GameObjects/Components/Mobs/SharedWeightlessStatusComponent.cs Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com> * Update Content.Shared/GameObjects/Components/Movement/MovementIgnoreGravityComponent.cs Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com> * Update Content.Shared/GameObjects/Components/Movement/MovementIgnoreGravityComponent.cs Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com> * fix paul's typo. does not run. * add client side component * move logic to eventbus * remove client/server components and clean up code * remove useless component, revert human.yml changes. Co-authored-by: scuffedjays <yetanotherscuffed@gmail.com> Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
using Content.Shared.GameObjects.Components.Mobs;
|
||||
using Content.Shared.GameObjects.EntitySystemMessages;
|
||||
using Robust.Shared.GameObjects.Systems;
|
||||
|
||||
namespace Content.Shared.GameObjects.EntitySystems
|
||||
{
|
||||
|
||||
public sealed class WeightlessStatusSystem : EntitySystem
|
||||
{
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<WeightlessChangeMessage>(HandleWeightlessChanged);
|
||||
}
|
||||
|
||||
private void HandleWeightlessChanged(WeightlessChangeMessage msg)
|
||||
{
|
||||
var ent = msg.Entity;
|
||||
if (!ent.TryGetComponent(out SharedStatusEffectsComponent status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(msg.Weightless)
|
||||
{
|
||||
status.ChangeStatusEffect(StatusEffect.Weightless,"/Textures/Interface/StatusEffects/Weightless/weightless.png",null);
|
||||
}
|
||||
else
|
||||
{
|
||||
status.RemoveStatusEffect(StatusEffect.Weightless);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -68,6 +68,7 @@ namespace Content.Shared.GameObjects.Components.Mobs
|
||||
Buckled,
|
||||
Piloting,
|
||||
Pulling,
|
||||
Pulled
|
||||
Pulled,
|
||||
Weightless
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
#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
|
||||
{
|
||||
@@ -18,8 +21,10 @@ namespace Content.Shared.GameObjects.Components.Movement
|
||||
{
|
||||
physicsManager ??= IoCManager.Resolve<IPhysicsManager>();
|
||||
|
||||
return !entity.HasComponent<MovementIgnoreGravityComponent>() &&
|
||||
var isWeightless = !entity.HasComponent<MovementIgnoreGravityComponent>() &&
|
||||
physicsManager.IsWeightless(entity.Transform.Coordinates);
|
||||
entity.EntityManager.EventBus.RaiseEvent(EventSource.Local, new WeightlessChangeMessage(entity,isWeightless));
|
||||
return isWeightless;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 786 B |
Reference in New Issue
Block a user