Files
tbd-station-14/Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerVisualizer.cs
Acruid ca4fd649fe Massive Namespace Cleanup (#3120)
* Engine namespace changes.

* Automated remove redundant using statements.

* Simplified Graphics namespace.

* Apparently the container system stores full type names in the map file.😞 This updates those names.

* API Changes to LocalizationManager.LoadCulture.

* Update submodule to v0.3.2
2021-02-11 01:13:03 -08:00

59 lines
2.2 KiB
C#

using System;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using static Content.Shared.GameObjects.Components.Medical.SharedMedicalScannerComponent;
using static Content.Shared.GameObjects.Components.Medical.SharedMedicalScannerComponent.MedicalScannerStatus;
namespace Content.Client.GameObjects.Components.MedicalScanner
{
[UsedImplicitly]
public class MedicalScannerVisualizer : AppearanceVisualizer
{
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
var sprite = component.Owner.GetComponent<ISpriteComponent>();
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 "closed";
case Death: return "closed";
case Green: return "occupied";
case Yellow: return "closed";
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 "red_unlit";
case Green: return "idle_unlit";
case Yellow: return "maint_unlit";
default:
throw new ArgumentOutOfRangeException(nameof(status), status, "unknown MedicalScannerStatus");
}
}
public enum MedicalScannerVisualLayers : byte
{
Machine,
Terminal,
}
}
}