Fix lathe visuals exception (#8052)

This commit is contained in:
metalgearsloth
2022-05-10 07:39:13 +10:00
committed by GitHub
parent fc3ce84b2b
commit 987ee02ef3

View File

@@ -11,13 +11,20 @@ namespace Content.Client.Lathe
{ {
protected override void OnAppearanceChange(EntityUid uid, LatheVisualsComponent component, ref AppearanceChangeEvent args) protected override void OnAppearanceChange(EntityUid uid, LatheVisualsComponent component, ref AppearanceChangeEvent args)
{ {
if (TryComp(uid, out SpriteComponent? sprite)) if (!TryComp(uid, out SpriteComponent? sprite)) return;
if (args.Component.TryGetData(PowerDeviceVisuals.Powered, out bool powered) &&
sprite.LayerMapTryGet(PowerDeviceVisualLayers.Powered, out _))
{ {
if (args.Component.TryGetData(PowerDeviceVisuals.Powered, out bool powered))
sprite.LayerSetVisible(PowerDeviceVisualLayers.Powered, powered); sprite.LayerSetVisible(PowerDeviceVisualLayers.Powered, powered);
}
if (args.Component.TryGetData(WiresVisuals.MaintenancePanelState, out bool panel) if (args.Component.TryGetData(WiresVisuals.MaintenancePanelState, out bool panel)
&& sprite.LayerMapTryGet(WiresVisualizer.WiresVisualLayers.MaintenancePanel, out var panelLayer)) && sprite.LayerMapTryGet(WiresVisualizer.WiresVisualLayers.MaintenancePanel, out _))
{
sprite.LayerSetVisible(WiresVisualizer.WiresVisualLayers.MaintenancePanel, panel); sprite.LayerSetVisible(WiresVisualizer.WiresVisualLayers.MaintenancePanel, panel);
}
// Lathe specific stuff // Lathe specific stuff
if (args.Component.TryGetData(LatheVisuals.IsRunning, out bool isRunning)) if (args.Component.TryGetData(LatheVisuals.IsRunning, out bool isRunning))
{ {
@@ -25,12 +32,15 @@ namespace Content.Client.Lathe
sprite.LayerSetAnimationTime(LatheVisualLayers.IsRunning, 0f); sprite.LayerSetAnimationTime(LatheVisualLayers.IsRunning, 0f);
sprite.LayerSetState(LatheVisualLayers.IsRunning, state); sprite.LayerSetState(LatheVisualLayers.IsRunning, state);
} }
if (args.Component.TryGetData(LatheVisuals.IsInserting, out bool isInserting) if (args.Component.TryGetData(LatheVisuals.IsInserting, out bool isInserting)
&& sprite.LayerMapTryGet(LatheVisualLayers.IsInserting, out var isInsertingLayer)) && sprite.LayerMapTryGet(LatheVisualLayers.IsInserting, out var isInsertingLayer))
{ {
if (args.Component.TryGetData(LatheVisuals.InsertingColor, out Color color) if (args.Component.TryGetData(LatheVisuals.InsertingColor, out Color color)
&& !component.IgnoreColor) && !component.IgnoreColor)
{
sprite.LayerSetColor(isInsertingLayer, color); sprite.LayerSetColor(isInsertingLayer, color);
}
sprite.LayerSetAnimationTime(isInsertingLayer, 0f); sprite.LayerSetAnimationTime(isInsertingLayer, 0f);
sprite.LayerSetVisible(isInsertingLayer, isInserting); sprite.LayerSetVisible(isInsertingLayer, isInserting);
@@ -38,7 +48,6 @@ namespace Content.Client.Lathe
} }
} }
} }
}
public enum LatheVisualLayers : byte public enum LatheVisualLayers : byte
{ {
IsRunning, IsRunning,