Item artifacts (#12652)
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using Content.Shared.Xenoarchaeology.XenoArtifacts;
|
||||
using Robust.Client.GameObjects;
|
||||
|
||||
namespace Content.Client.Xenoarchaeology.XenoArtifacts;
|
||||
|
||||
public sealed class RandomArtifactSpriteSystem : VisualizerSystem<RandomArtifactSpriteComponent>
|
||||
{
|
||||
protected override void OnAppearanceChange(EntityUid uid, RandomArtifactSpriteComponent component, ref AppearanceChangeEvent args)
|
||||
{
|
||||
if (args.Sprite == null)
|
||||
return;
|
||||
|
||||
if (!AppearanceSystem.TryGetData(uid, SharedArtifactsVisuals.SpriteIndex, out var ind, args.Component)
|
||||
|| ind is not int spriteIndex)
|
||||
return;
|
||||
|
||||
if (!AppearanceSystem.TryGetData(uid, SharedArtifactsVisuals.IsActivated, out var act, args.Component)
|
||||
|| act is not bool isActivated)
|
||||
isActivated = false;
|
||||
|
||||
var spriteIndexStr = spriteIndex.ToString("D2");
|
||||
var spritePrefix = isActivated ? "_on" : "";
|
||||
|
||||
// layered artifact sprite
|
||||
if (args.Sprite.LayerMapTryGet(ArtifactsVisualLayers.Effect, out var layer))
|
||||
{
|
||||
var spriteState = "ano" + spriteIndexStr;
|
||||
args.Sprite.LayerSetState(ArtifactsVisualLayers.Base, spriteState);
|
||||
args.Sprite.LayerSetState(layer, spriteState + "_on");
|
||||
args.Sprite.LayerSetVisible(layer, isActivated);
|
||||
}
|
||||
// non-layered
|
||||
else
|
||||
{
|
||||
var spriteState = "ano" + spriteIndexStr + spritePrefix;
|
||||
args.Sprite.LayerSetState(ArtifactsVisualLayers.Base, spriteState);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public enum ArtifactsVisualLayers : byte
|
||||
{
|
||||
Base,
|
||||
Effect // doesn't have to use this
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
using Content.Shared.Xenoarchaeology.XenoArtifacts;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
|
||||
namespace Content.Client.Xenoarchaeology.XenoArtifacts;
|
||||
|
||||
public sealed class RandomArtifactVisualizer : AppearanceVisualizer
|
||||
{
|
||||
[Obsolete("Subscribe to AppearanceChangeEvent instead.")]
|
||||
public override void OnChangeData(AppearanceComponent component)
|
||||
{
|
||||
base.OnChangeData(component);
|
||||
|
||||
var entities = IoCManager.Resolve<IEntityManager>();
|
||||
if (!entities.TryGetComponent(component.Owner, out ISpriteComponent? sprite)) return;
|
||||
|
||||
if (!component.TryGetData(SharedArtifactsVisuals.SpriteIndex, out int spriteIndex))
|
||||
return;
|
||||
|
||||
if (!component.TryGetData(SharedArtifactsVisuals.IsActivated, out bool isActivated))
|
||||
isActivated = false;
|
||||
|
||||
var spriteIndexStr = spriteIndex.ToString("D2");
|
||||
var spritePrefix = isActivated ? "_on" : "";
|
||||
|
||||
var spriteState = "ano" + spriteIndexStr + spritePrefix;
|
||||
sprite.LayerSetState(0, spriteState);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user