Convert AME Visualizers (#9037)
Co-authored-by: TekuNut <3456422+TekuNut@users.noreply.github.com>
This commit is contained in:
61
Content.Client/AME/AMEControllerVisualizerSystem.cs
Normal file
61
Content.Client/AME/AMEControllerVisualizerSystem.cs
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
using Content.Client.AME.Components;
|
||||||
|
using Robust.Client.GameObjects;
|
||||||
|
using static Content.Shared.AME.SharedAMEControllerComponent;
|
||||||
|
|
||||||
|
namespace Content.Client.AME;
|
||||||
|
|
||||||
|
public sealed class AMEControllerVisualizerSystem : VisualizerSystem<AMEControllerVisualsComponent>
|
||||||
|
{
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<AMEControllerVisualsComponent, ComponentInit>(OnComponentInit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnComponentInit(EntityUid uid, AMEControllerVisualsComponent component, ComponentInit args)
|
||||||
|
{
|
||||||
|
if(TryComp<SpriteComponent>(uid, out var sprite))
|
||||||
|
{
|
||||||
|
sprite.LayerMapSet(AMEControllerVisualLayers.Display, sprite.AddLayerState("control_on"));
|
||||||
|
sprite.LayerSetVisible(AMEControllerVisualLayers.Display, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnAppearanceChange(EntityUid uid, AMEControllerVisualsComponent component, ref AppearanceChangeEvent args)
|
||||||
|
{
|
||||||
|
base.OnAppearanceChange(uid, component, ref args);
|
||||||
|
|
||||||
|
if(args.Sprite != null
|
||||||
|
&& args.Component.TryGetData<string>(AMEControllerVisuals.DisplayState, out var state))
|
||||||
|
{
|
||||||
|
switch(state)
|
||||||
|
{
|
||||||
|
case "on":
|
||||||
|
args.Sprite.LayerSetState(AMEControllerVisualLayers.Display, "control_on");
|
||||||
|
args.Sprite.LayerSetVisible(AMEControllerVisualLayers.Display, true);
|
||||||
|
break;
|
||||||
|
case "critical":
|
||||||
|
args.Sprite.LayerSetState(AMEControllerVisualLayers.Display, "control_critical");
|
||||||
|
args.Sprite.LayerSetVisible(AMEControllerVisualLayers.Display, true);
|
||||||
|
break;
|
||||||
|
case "fuck":
|
||||||
|
args.Sprite.LayerSetState(AMEControllerVisualLayers.Display, "control_fuck");
|
||||||
|
args.Sprite.LayerSetVisible(AMEControllerVisualLayers.Display, true);
|
||||||
|
break;
|
||||||
|
case "off":
|
||||||
|
args.Sprite.LayerSetVisible(AMEControllerVisualLayers.Display, false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
args.Sprite.LayerSetVisible(AMEControllerVisualLayers.Display, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AMEControllerVisualLayers : byte
|
||||||
|
{
|
||||||
|
Display
|
||||||
|
}
|
||||||
|
|
||||||
70
Content.Client/AME/AMEShieldingVisualizerSystem.cs
Normal file
70
Content.Client/AME/AMEShieldingVisualizerSystem.cs
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
using Content.Client.AME.Components;
|
||||||
|
using Robust.Client.GameObjects;
|
||||||
|
using static Content.Shared.AME.SharedAMEShieldComponent;
|
||||||
|
|
||||||
|
namespace Content.Client.AME;
|
||||||
|
|
||||||
|
public sealed class AMEShieldingVisualizerSystem : VisualizerSystem<AMEShieldingVisualsComponent>
|
||||||
|
{
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<AMEShieldingVisualsComponent, ComponentInit>(OnComponentInit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnComponentInit(EntityUid uid, AMEShieldingVisualsComponent component, ComponentInit args)
|
||||||
|
{
|
||||||
|
if(TryComp<SpriteComponent>(uid, out var sprite))
|
||||||
|
{
|
||||||
|
sprite.LayerMapSet(AMEShieldingVisualsLayer.Core, sprite.AddLayerState("core"));
|
||||||
|
sprite.LayerSetVisible(AMEShieldingVisualsLayer.Core, false);
|
||||||
|
sprite.LayerMapSet(AMEShieldingVisualsLayer.CoreState, sprite.AddLayerState("core_weak"));
|
||||||
|
sprite.LayerSetVisible(AMEShieldingVisualsLayer.CoreState, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnAppearanceChange(EntityUid uid, AMEShieldingVisualsComponent component, ref AppearanceChangeEvent args)
|
||||||
|
{
|
||||||
|
if(args.Sprite == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(args.Component.TryGetData<string>(AMEShieldVisuals.Core, out var core))
|
||||||
|
{
|
||||||
|
if (core == "isCore")
|
||||||
|
{
|
||||||
|
args.Sprite.LayerSetState(AMEShieldingVisualsLayer.Core, "core");
|
||||||
|
args.Sprite.LayerSetVisible(AMEShieldingVisualsLayer.Core, true);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
args.Sprite.LayerSetVisible(AMEShieldingVisualsLayer.Core, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(args.Component.TryGetData<string>(AMEShieldVisuals.CoreState, out var coreState))
|
||||||
|
{
|
||||||
|
switch(coreState)
|
||||||
|
{
|
||||||
|
case "weak":
|
||||||
|
args.Sprite.LayerSetState(AMEShieldingVisualsLayer.CoreState, "core_weak");
|
||||||
|
args.Sprite.LayerSetVisible(AMEShieldingVisualsLayer.CoreState, true);
|
||||||
|
break;
|
||||||
|
case "strong":
|
||||||
|
args.Sprite.LayerSetState(AMEShieldingVisualsLayer.CoreState, "core_strong");
|
||||||
|
args.Sprite.LayerSetVisible(AMEShieldingVisualsLayer.CoreState, true);
|
||||||
|
break;
|
||||||
|
case "off":
|
||||||
|
args.Sprite.LayerSetVisible(AMEShieldingVisualsLayer.CoreState, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AMEShieldingVisualsLayer : byte
|
||||||
|
{
|
||||||
|
Core,
|
||||||
|
CoreState,
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using Robust.Shared.GameObjects;
|
||||||
|
|
||||||
|
namespace Content.Client.AME.Components;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class AMEControllerVisualsComponent : Component
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using Robust.Shared.GameObjects;
|
||||||
|
|
||||||
|
namespace Content.Client.AME.Components;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class AMEShieldingVisualsComponent : Component
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using static Content.Shared.AME.SharedAMEControllerComponent;
|
|
||||||
|
|
||||||
namespace Content.Client.AME.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class AMEControllerVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
base.InitializeEntity(entity);
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(entity);
|
|
||||||
|
|
||||||
sprite.LayerMapSet(Layers.Display, sprite.AddLayerState("control_on"));
|
|
||||||
sprite.LayerSetVisible(Layers.Display, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(component.Owner);
|
|
||||||
if (component.TryGetData<string>(AMEControllerVisuals.DisplayState, out var state))
|
|
||||||
{
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case "on":
|
|
||||||
sprite.LayerSetState(Layers.Display, "control_on");
|
|
||||||
sprite.LayerSetVisible(Layers.Display, true);
|
|
||||||
break;
|
|
||||||
case "critical":
|
|
||||||
sprite.LayerSetState(Layers.Display, "control_critical");
|
|
||||||
sprite.LayerSetVisible(Layers.Display, true);
|
|
||||||
break;
|
|
||||||
case "fuck":
|
|
||||||
sprite.LayerSetState(Layers.Display, "control_fuck");
|
|
||||||
sprite.LayerSetVisible(Layers.Display, true);
|
|
||||||
break;
|
|
||||||
case "off":
|
|
||||||
sprite.LayerSetVisible(Layers.Display, false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sprite.LayerSetVisible(Layers.Display, false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum Layers : byte
|
|
||||||
{
|
|
||||||
Display,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using static Content.Shared.AME.SharedAMEShieldComponent;
|
|
||||||
|
|
||||||
namespace Content.Client.AME.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class AMEVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
base.InitializeEntity(entity);
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(entity);
|
|
||||||
sprite.LayerMapSet(Layers.Core, sprite.AddLayerState("core"));
|
|
||||||
sprite.LayerSetVisible(Layers.Core, false);
|
|
||||||
sprite.LayerMapSet(Layers.CoreState, sprite.AddLayerState("core_weak"));
|
|
||||||
sprite.LayerSetVisible(Layers.CoreState, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(component.Owner);
|
|
||||||
if (component.TryGetData<string>(AMEShieldVisuals.Core, out var core))
|
|
||||||
{
|
|
||||||
if (core == "isCore")
|
|
||||||
{
|
|
||||||
sprite.LayerSetState(Layers.Core, "core");
|
|
||||||
sprite.LayerSetVisible(Layers.Core, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sprite.LayerSetVisible(Layers.Core, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (component.TryGetData<string>(AMEShieldVisuals.CoreState, out var coreState))
|
|
||||||
switch (coreState)
|
|
||||||
{
|
|
||||||
case "weak":
|
|
||||||
sprite.LayerSetState(Layers.CoreState, "core_weak");
|
|
||||||
sprite.LayerSetVisible(Layers.CoreState, true);
|
|
||||||
break;
|
|
||||||
case "strong":
|
|
||||||
sprite.LayerSetState(Layers.CoreState, "core_strong");
|
|
||||||
sprite.LayerSetVisible(Layers.CoreState, true);
|
|
||||||
break;
|
|
||||||
case "off":
|
|
||||||
sprite.LayerSetVisible(Layers.CoreState, false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum Layers : byte
|
|
||||||
{
|
|
||||||
Core,
|
|
||||||
CoreState,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -32,6 +32,8 @@ namespace Content.Server.Entry
|
|||||||
"PaperVisuals",
|
"PaperVisuals",
|
||||||
"SurveillanceCameraVisuals",
|
"SurveillanceCameraVisuals",
|
||||||
"KudzuVisuals",
|
"KudzuVisuals",
|
||||||
|
"AMEControllerVisuals",
|
||||||
|
"AMEShieldingVisuals",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
- type: Clickable
|
- type: Clickable
|
||||||
- type: InteractionOutline
|
- type: InteractionOutline
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
|
netsync: false
|
||||||
sprite: Structures/Power/Generation/ame.rsi
|
sprite: Structures/Power/Generation/ame.rsi
|
||||||
state: control
|
state: control
|
||||||
- type: Physics
|
- type: Physics
|
||||||
@@ -54,8 +55,7 @@
|
|||||||
- key: enum.AMEControllerUiKey.Key
|
- key: enum.AMEControllerUiKey.Key
|
||||||
type: AMEControllerBoundUserInterface
|
type: AMEControllerBoundUserInterface
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
- type: AMEControllerVisuals
|
||||||
- type: AMEControllerVisualizer
|
|
||||||
- type: NodeContainer
|
- type: NodeContainer
|
||||||
examinable: true
|
examinable: true
|
||||||
nodes:
|
nodes:
|
||||||
@@ -89,6 +89,7 @@
|
|||||||
- type: Clickable
|
- type: Clickable
|
||||||
- type: InteractionOutline
|
- type: InteractionOutline
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
|
netsync: false
|
||||||
drawdepth: Walls
|
drawdepth: Walls
|
||||||
sprite: Structures/Power/Generation/ame.rsi
|
sprite: Structures/Power/Generation/ame.rsi
|
||||||
state: shield_0
|
state: shield_0
|
||||||
@@ -136,8 +137,7 @@
|
|||||||
energy: 0.5
|
energy: 0.5
|
||||||
color: "#00AAFF"
|
color: "#00AAFF"
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
- type: AMEShieldingVisuals
|
||||||
- type: AMEVisualizer
|
|
||||||
- type: Construction
|
- type: Construction
|
||||||
graph: AMEShielding
|
graph: AMEShielding
|
||||||
node: ameShielding
|
node: ameShielding
|
||||||
|
|||||||
Reference in New Issue
Block a user