Make portals use ICollideBehavior and set collidable.Hard to false (#2186)

This commit is contained in:
DrSmugleaf
2020-10-10 13:32:42 +02:00
committed by GitHub
parent 89f5ec31d2
commit fe39b5fb71
11 changed files with 107 additions and 130 deletions

View File

@@ -0,0 +1,37 @@
using System;
using Robust.Shared.GameObjects;
using Robust.Shared.GameObjects.Components;
using Robust.Shared.Serialization;
namespace Content.Shared.GameObjects.Components.Portal
{
public abstract class SharedPortalComponent : Component
{
public override string Name => "Portal";
public override void OnAdd()
{
base.OnAdd();
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
{
collidable.Hard = false;
}
}
}
[Serializable, NetSerializable]
public enum PortalVisuals
{
State
}
[Serializable, NetSerializable]
public enum PortalState
{
RecentlyTeleported,
Pending,
UnableToTeleport,
}
}

View File

@@ -0,0 +1,48 @@
using System;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Serialization;
namespace Content.Shared.GameObjects.Components.Portal
{
public enum ItemTeleporterState
{
Off,
Charging,
On,
Cooldown,
}
public enum TeleporterType
{
Directed,
Random,
Beacon,
}
[NetSerializable]
[Serializable]
public enum TeleporterVisuals
{
VisualState,
}
[NetSerializable]
[Serializable]
public enum TeleporterVisualState
{
Ready,
Charging,
}
[Serializable, NetSerializable]
public class TeleportMessage : ComponentMessage
{
public readonly EntityCoordinates Target;
public TeleportMessage(EntityCoordinates target)
{
Target = target;
}
}
}