* Fix build

- Fixes a couple paint things that were broken.

* wat
This commit is contained in:
metalgearsloth
2024-03-19 23:34:00 +11:00
committed by GitHub
parent 362d56981f
commit 6de5fbfafb
3 changed files with 95 additions and 103 deletions

View File

@@ -7,8 +7,8 @@ using Content.Shared.Paint;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.Client.Paint namespace Content.Client.Paint;
{
public sealed class PaintedVisualizerSystem : VisualizerSystem<PaintedComponent> public sealed class PaintedVisualizerSystem : VisualizerSystem<PaintedComponent>
{ {
/// <summary> /// <summary>
@@ -18,8 +18,6 @@ namespace Content.Client.Paint
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly IPrototypeManager _protoMan = default!; [Dependency] private readonly IPrototypeManager _protoMan = default!;
public ShaderInstance? Shader; // in Robust.Client.Graphics so cannot move to shared component.
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -31,18 +29,17 @@ namespace Content.Client.Paint
protected override void OnAppearanceChange(EntityUid uid, PaintedComponent component, ref AppearanceChangeEvent args) protected override void OnAppearanceChange(EntityUid uid, PaintedComponent component, ref AppearanceChangeEvent args)
{ {
// ShaderPrototype sadly in Robust.Client, cannot move to shared component. var shader = _protoMan.Index<ShaderPrototype>(component.ShaderName).Instance();
Shader = _protoMan.Index<ShaderPrototype>(component.ShaderName).Instance();
if (args.Sprite == null) if (args.Sprite == null)
return; return;
if (!_appearance.TryGetData<bool>(uid, PaintVisuals.Painted, out bool isPainted)) // What is this even doing? It's not even checking what the value is.
if (!_appearance.TryGetData(uid, PaintVisuals.Painted, out bool isPainted))
return; return;
var sprite = args.Sprite; var sprite = args.Sprite;
foreach (var spriteLayer in sprite.AllLayers) foreach (var spriteLayer in sprite.AllLayers)
{ {
if (spriteLayer is not Layer layer) if (spriteLayer is not Layer layer)
@@ -50,7 +47,7 @@ namespace Content.Client.Paint
if (layer.Shader == null) // If shader isn't null we dont want to replace the original shader. if (layer.Shader == null) // If shader isn't null we dont want to replace the original shader.
{ {
layer.Shader = Shader; layer.Shader = shader;
layer.Color = component.Color; layer.Color = component.Color;
} }
} }
@@ -66,7 +63,7 @@ namespace Content.Client.Paint
foreach (var revealed in args.RevealedLayers) foreach (var revealed in args.RevealedLayers)
{ {
if (!sprite.LayerMapTryGet(revealed, out var layer) || sprite[layer] is not Layer notlayer) if (!sprite.LayerMapTryGet(revealed, out var layer))
continue; continue;
sprite.LayerSetShader(layer, component.ShaderName); sprite.LayerSetShader(layer, component.ShaderName);
@@ -84,7 +81,7 @@ namespace Content.Client.Paint
foreach (var revealed in args.RevealedLayers) foreach (var revealed in args.RevealedLayers)
{ {
if (!sprite.LayerMapTryGet(revealed, out var layer) || sprite[layer] is not Layer notlayer) if (!sprite.LayerMapTryGet(revealed, out var layer))
continue; continue;
sprite.LayerSetShader(layer, component.ShaderName); sprite.LayerSetShader(layer, component.ShaderName);
@@ -98,7 +95,7 @@ namespace Content.Client.Paint
return; return;
component.BeforeColor = sprite.Color; component.BeforeColor = sprite.Color;
Shader = _protoMan.Index<ShaderPrototype>(component.ShaderName).Instance(); var shader = _protoMan.Index<ShaderPrototype>(component.ShaderName).Instance();
if (!Terminating(uid)) if (!Terminating(uid))
{ {
@@ -107,7 +104,7 @@ namespace Content.Client.Paint
if (spriteLayer is not Layer layer) if (spriteLayer is not Layer layer)
continue; continue;
if (layer.Shader == Shader) // If shader isn't same as one in component we need to ignore it. if (layer.Shader == shader) // If shader isn't same as one in component we need to ignore it.
{ {
layer.Shader = null; layer.Shader = null;
if (layer.Color == component.Color) // If color isn't the same as one in component we don't want to change it. if (layer.Color == component.Color) // If color isn't the same as one in component we don't want to change it.
@@ -117,4 +114,3 @@ namespace Content.Client.Paint
} }
} }
} }
}

View File

@@ -72,15 +72,12 @@ public sealed class PaintSystem : SharedPaintSystem
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.Delay, new PaintDoAfterEvent(), uid, target: target, used: uid) var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.Delay, new PaintDoAfterEvent(), uid, target: target, used: uid)
{ {
BreakOnTargetMove = true, BreakOnMove = true,
BreakOnUserMove = true,
BreakOnDamage = true,
NeedHand = true, NeedHand = true,
BreakOnHandChange = true BreakOnHandChange = true
}; };
if (!_doAfterSystem.TryStartDoAfter(doAfterEventArgs)) _doAfterSystem.TryStartDoAfter(doAfterEventArgs);
return;
} }
private void OnPaint(Entity<PaintComponent> entity, ref PaintDoAfterEvent args) private void OnPaint(Entity<PaintComponent> entity, ref PaintDoAfterEvent args)
@@ -112,7 +109,6 @@ public sealed class PaintSystem : SharedPaintSystem
return; return;
} }
if (TryPaint(entity, target)) if (TryPaint(entity, target))
{ {
EnsureComp<PaintedComponent>(target, out PaintedComponent? paint); EnsureComp<PaintedComponent>(target, out PaintedComponent? paint);
@@ -131,12 +127,14 @@ public sealed class PaintSystem : SharedPaintSystem
if (!_inventory.TryGetSlotEntity(target, slot.Name, out var slotEnt)) if (!_inventory.TryGetSlotEntity(target, slot.Name, out var slotEnt))
continue; continue;
if (slotEnt == null) if (HasComp<PaintedComponent>(slotEnt.Value) || !entity.Comp.Blacklist?.IsValid(slotEnt.Value,
return; EntityManager) != true
|| HasComp<RandomSpriteComponent>(slotEnt.Value) ||
if (HasComp<PaintedComponent>(slotEnt.Value) || !entity.Comp.Blacklist?.IsValid(slotEnt.Value, EntityManager) != true HasComp<HumanoidAppearanceComponent>(
|| HasComp<RandomSpriteComponent>(slotEnt.Value) || HasComp<HumanoidAppearanceComponent>(slotEnt.Value)) slotEnt.Value))
return; {
continue;
}
EnsureComp<PaintedComponent>(slotEnt.Value, out PaintedComponent? slotpaint); EnsureComp<PaintedComponent>(slotEnt.Value, out PaintedComponent? slotpaint);
EnsureComp<AppearanceComponent>(slotEnt.Value); EnsureComp<AppearanceComponent>(slotEnt.Value);

View File

@@ -16,7 +16,6 @@ public sealed class PaintRemoverSystem : SharedPaintSystem
[Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!;
public override void Initialize() public override void Initialize()
@@ -39,9 +38,8 @@ public sealed class PaintRemoverSystem : SharedPaintSystem
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.CleanDelay, new PaintRemoverDoAfterEvent(), uid, args.Target, uid) _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.CleanDelay, new PaintRemoverDoAfterEvent(), uid, args.Target, uid)
{ {
BreakOnUserMove = true, BreakOnMove = true,
BreakOnDamage = true, BreakOnDamage = true,
BreakOnTargetMove = true,
MovementThreshold = 1.0f, MovementThreshold = 1.0f,
}); });
args.Handled = true; args.Handled = true;
@@ -77,13 +75,13 @@ public sealed class PaintRemoverSystem : SharedPaintSystem
var verb = new UtilityVerb() var verb = new UtilityVerb()
{ {
Act = () => { Act = () =>
{
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.CleanDelay, new PaintRemoverDoAfterEvent(), uid, args.Target, uid) _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.CleanDelay, new PaintRemoverDoAfterEvent(), uid, args.Target, uid)
{ {
BreakOnUserMove = true, BreakOnMove = true,
BreakOnDamage = true, BreakOnDamage = true,
BreakOnTargetMove = true,
MovementThreshold = 1.0f, MovementThreshold = 1.0f,
}); });
}, },