60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using Content.Server.Mobs;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.Interfaces.GameObjects;
|
|
using Robust.Shared.ViewVariables;
|
|
|
|
namespace Content.Server.GameObjects.Components.Mobs
|
|
{
|
|
/// <summary>
|
|
/// Stores a <see cref="Server.Mobs.Mind"/> on a mob.
|
|
/// </summary>
|
|
[RegisterComponent]
|
|
public class MindComponent : Component
|
|
{
|
|
/// <inheritdoc />
|
|
public override string Name => "Mind";
|
|
|
|
/// <summary>
|
|
/// The mind controlling this mob. Can be null.
|
|
/// </summary>
|
|
[ViewVariables]
|
|
public Mind Mind { get; private set; }
|
|
|
|
/// <summary>
|
|
/// True if we have a mind, false otherwise.
|
|
/// </summary>
|
|
[ViewVariables]
|
|
public bool HasMind => Mind != null;
|
|
|
|
/// <summary>
|
|
/// Don't call this unless you know what the hell you're doing.
|
|
/// Use <see cref="Mind.TransferTo(IEntity)"/> instead.
|
|
/// If that doesn't cover it, make something to cover it.
|
|
/// </summary>
|
|
public void InternalEjectMind()
|
|
{
|
|
Mind = null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Don't call this unless you know what the hell you're doing.
|
|
/// Use <see cref="Mind.TransferTo(IEntity)"/> instead.
|
|
/// If that doesn't cover it, make something to cover it.
|
|
/// </summary>
|
|
public void InternalAssignMind(Mind value)
|
|
{
|
|
Mind = value;
|
|
}
|
|
|
|
public override void OnRemove()
|
|
{
|
|
base.OnRemove();
|
|
|
|
if (HasMind)
|
|
{
|
|
Mind.TransferTo(null);
|
|
}
|
|
}
|
|
}
|
|
}
|