Files
OldThink/Content.Client/MedicalScanner/MedicalScannerVisualizer.cs

61 lines
2.2 KiB
C#
Raw Normal View History

using System;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
2021-12-03 11:55:25 +01:00
using Robust.Shared.IoC;
2021-06-09 22:19:39 +02:00
using static Content.Shared.MedicalScanner.SharedMedicalScannerComponent;
using static Content.Shared.MedicalScanner.SharedMedicalScannerComponent.MedicalScannerStatus;
2021-06-09 22:19:39 +02:00
namespace Content.Client.MedicalScanner
{
[UsedImplicitly]
public sealed class MedicalScannerVisualizer : AppearanceVisualizer
{
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
2021-12-03 15:53:09 +01:00
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(component.Owner);
if (!component.TryGetData(MedicalScannerVisuals.Status, out MedicalScannerStatus status)) return;
sprite.LayerSetState(MedicalScannerVisualLayers.Machine, StatusToMachineStateId(status));
sprite.LayerSetState(MedicalScannerVisualLayers.Terminal, StatusToTerminalStateId(status));
}
private string StatusToMachineStateId(MedicalScannerStatus status)
{
switch (status)
{
case Off: return "closed";
case Open: return "open";
case Red: return "occupied";
case Death: return "occupied";
case Green: return "occupied";
case Yellow: return "occupied";
default:
throw new ArgumentOutOfRangeException(nameof(status), status, "unknown MedicalScannerStatus");
}
}
private string StatusToTerminalStateId(MedicalScannerStatus status)
{
switch (status)
{
case Off: return "off_unlit";
case Open: return "idle_unlit";
case Red: return "red_unlit";
case Death: return "off_unlit";
case Green: return "idle_unlit";
case Yellow: return "maint_unlit";
default:
throw new ArgumentOutOfRangeException(nameof(status), status, "unknown MedicalScannerStatus");
}
}
2020-12-04 11:57:33 +01:00
public enum MedicalScannerVisualLayers : byte
{
Machine,
Terminal,
}
}
}