Files
tbd-station-14/Content.Shared/MedicalScanner/SharedMedicalScannerComponent.cs
2022-02-16 18:23:23 +11:00

93 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using Content.Shared.Body.Components;
using Content.Shared.Damage;
using Content.Shared.DragDrop;
using Content.Shared.FixedPoint;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Serialization;
namespace Content.Shared.MedicalScanner
{
public abstract class SharedMedicalScannerComponent : Component, IDragDropOn
{
[Serializable, NetSerializable]
public sealed class MedicalScannerBoundUserInterfaceState : BoundUserInterfaceState
{
public readonly EntityUid? Entity;
public readonly IReadOnlyDictionary<string, FixedPoint2> DamagePerGroup;
public readonly IReadOnlyDictionary<string, FixedPoint2> DamagePerType;
public readonly bool IsScanned;
public MedicalScannerBoundUserInterfaceState(
EntityUid? entity,
DamageableComponent? damageable,
bool isScanned)
{
Entity = entity;
DamagePerGroup = damageable?.DamagePerGroup ?? new();
DamagePerType = damageable?.Damage?.DamageDict ?? new();
IsScanned = isScanned;
}
public bool HasDamage()
{
return DamagePerType.Count > 0;
}
}
[Serializable, NetSerializable]
public enum MedicalScannerUiKey
{
Key
}
[Serializable, NetSerializable]
public enum MedicalScannerVisuals
{
Status
}
[Serializable, NetSerializable]
public enum MedicalScannerStatus
{
Off,
Open,
Red,
Death,
Green,
Yellow,
}
[Serializable, NetSerializable]
public enum UiButton
{
ScanDNA,
}
[Serializable, NetSerializable]
public sealed class UiButtonPressedMessage : BoundUserInterfaceMessage
{
public readonly UiButton Button;
public UiButtonPressedMessage(UiButton button)
{
Button = button;
}
}
public bool CanInsert(EntityUid entity)
{
return IoCManager.Resolve<IEntityManager>().HasComponent<SharedBodyComponent>(entity);
}
bool IDragDropOn.CanDragDropOn(DragDropEvent eventArgs)
{
return CanInsert(eventArgs.Dragged);
}
public abstract bool DragDropOn(DragDropEvent eventArgs);
}
}