Doafter stuff
This commit is contained in:
@@ -20,7 +20,6 @@ public sealed class DoAfterOverlay : Overlay
|
|||||||
private readonly MetaDataSystem _meta;
|
private readonly MetaDataSystem _meta;
|
||||||
|
|
||||||
private readonly Texture _barTexture;
|
private readonly Texture _barTexture;
|
||||||
private readonly ShaderInstance _shader;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Flash time for cancelled DoAfters
|
/// Flash time for cancelled DoAfters
|
||||||
@@ -33,17 +32,16 @@ public sealed class DoAfterOverlay : Overlay
|
|||||||
|
|
||||||
public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
|
public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
|
||||||
|
|
||||||
public DoAfterOverlay(IEntityManager entManager, IPrototypeManager protoManager, IGameTiming timing, IPlayerManager player)
|
public DoAfterOverlay(IEntityManager entManager, IGameTiming timing, IPlayerManager player)
|
||||||
{
|
{
|
||||||
_entManager = entManager;
|
_entManager = entManager;
|
||||||
_timing = timing;
|
_timing = timing;
|
||||||
_player = player;
|
_player = player;
|
||||||
_transform = _entManager.EntitySysManager.GetEntitySystem<SharedTransformSystem>();
|
_transform = _entManager.EntitySysManager.GetEntitySystem<SharedTransformSystem>();
|
||||||
_meta = _entManager.EntitySysManager.GetEntitySystem<MetaDataSystem>();
|
_meta = _entManager.EntitySysManager.GetEntitySystem<MetaDataSystem>();
|
||||||
var sprite = new SpriteSpecifier.Rsi(new("/Textures/Interface/Misc/progress_bar.rsi"), "icon");
|
|
||||||
_barTexture = _entManager.EntitySysManager.GetEntitySystem<SpriteSystem>().Frame0(sprite);
|
|
||||||
|
|
||||||
_shader = protoManager.Index<ShaderPrototype>("unshaded").Instance();
|
var sprite = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/progress_bar.rsi"), "icon");
|
||||||
|
_barTexture = _entManager.EntitySysManager.GetEntitySystem<SpriteSystem>().Frame0(sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Draw(in OverlayDrawArgs args)
|
protected override void Draw(in OverlayDrawArgs args)
|
||||||
@@ -56,7 +54,6 @@ public sealed class DoAfterOverlay : Overlay
|
|||||||
const float scale = 1f;
|
const float scale = 1f;
|
||||||
var scaleMatrix = Matrix3.CreateScale(new Vector2(scale, scale));
|
var scaleMatrix = Matrix3.CreateScale(new Vector2(scale, scale));
|
||||||
var rotationMatrix = Matrix3.CreateRotation(-rotation);
|
var rotationMatrix = Matrix3.CreateRotation(-rotation);
|
||||||
handle.UseShader(_shader);
|
|
||||||
|
|
||||||
var curTime = _timing.CurTime;
|
var curTime = _timing.CurTime;
|
||||||
|
|
||||||
@@ -64,7 +61,9 @@ public sealed class DoAfterOverlay : Overlay
|
|||||||
var localEnt = _player.LocalSession?.AttachedEntity;
|
var localEnt = _player.LocalSession?.AttachedEntity;
|
||||||
|
|
||||||
var metaQuery = _entManager.GetEntityQuery<MetaDataComponent>();
|
var metaQuery = _entManager.GetEntityQuery<MetaDataComponent>();
|
||||||
var enumerator = _entManager.AllEntityQueryEnumerator<ActiveDoAfterComponent, DoAfterComponent, SpriteComponent, TransformComponent>();
|
var enumerator = _entManager
|
||||||
|
.AllEntityQueryEnumerator<ActiveDoAfterComponent, DoAfterComponent, SpriteComponent, TransformComponent>();
|
||||||
|
|
||||||
while (enumerator.MoveNext(out var uid, out _, out var comp, out var sprite, out var xform))
|
while (enumerator.MoveNext(out var uid, out _, out var comp, out var sprite, out var xform))
|
||||||
{
|
{
|
||||||
if (xform.MapID != args.MapId)
|
if (xform.MapID != args.MapId)
|
||||||
@@ -105,7 +104,7 @@ public sealed class DoAfterOverlay : Overlay
|
|||||||
|
|
||||||
// Use the sprite itself if we know its bounds. This means short or tall sprites don't get overlapped
|
// Use the sprite itself if we know its bounds. This means short or tall sprites don't get overlapped
|
||||||
// by the bar.
|
// by the bar.
|
||||||
float yOffset = sprite.Bounds.Height / 2f + 0.05f;
|
var yOffset = sprite.Bounds.Height / 2f + 0.05f;
|
||||||
|
|
||||||
// Position above the entity (we've already applied the matrix transform to the entity itself)
|
// Position above the entity (we've already applied the matrix transform to the entity itself)
|
||||||
// Offset by the texture size for every do_after we have.
|
// Offset by the texture size for every do_after we have.
|
||||||
@@ -135,7 +134,9 @@ public sealed class DoAfterOverlay : Overlay
|
|||||||
}
|
}
|
||||||
|
|
||||||
var xProgress = (EndX - StartX) * elapsedRatio + StartX;
|
var xProgress = (EndX - StartX) * elapsedRatio + StartX;
|
||||||
var box = new Box2(new Vector2(StartX, 3f) / EyeManager.PixelsPerMeter, new Vector2(xProgress, 4f) / EyeManager.PixelsPerMeter);
|
var box = new Box2(new Vector2(StartX, 3f) / EyeManager.PixelsPerMeter,
|
||||||
|
new Vector2(xProgress, 4f) / EyeManager.PixelsPerMeter);
|
||||||
|
|
||||||
box = box.Translated(position);
|
box = box.Translated(position);
|
||||||
handle.DrawRect(box, color);
|
handle.DrawRect(box, color);
|
||||||
offset += _barTexture.Height / scale;
|
offset += _barTexture.Height / scale;
|
||||||
@@ -152,6 +153,7 @@ public sealed class DoAfterOverlay : Overlay
|
|||||||
{
|
{
|
||||||
return new Color(0f, 1f, 0f, alpha);
|
return new Color(0f, 1f, 0f, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
// lerp
|
// lerp
|
||||||
var hue = (5f / 18f) * progress;
|
var hue = (5f / 18f) * progress;
|
||||||
return Color.FromHsv((hue, 1f, 0.75f, alpha));
|
return Color.FromHsv((hue, 1f, 0.75f, alpha));
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ using Content.Shared.DoAfter;
|
|||||||
using Content.Shared.Hands.Components;
|
using Content.Shared.Hands.Components;
|
||||||
using Robust.Client.Graphics;
|
using Robust.Client.Graphics;
|
||||||
using Robust.Client.Player;
|
using Robust.Client.Player;
|
||||||
using Robust.Shared.Prototypes;
|
|
||||||
|
|
||||||
namespace Content.Client.DoAfter;
|
namespace Content.Client.DoAfter;
|
||||||
|
|
||||||
@@ -15,13 +14,12 @@ public sealed class DoAfterSystem : SharedDoAfterSystem
|
|||||||
{
|
{
|
||||||
[Dependency] private readonly IOverlayManager _overlay = default!;
|
[Dependency] private readonly IOverlayManager _overlay = default!;
|
||||||
[Dependency] private readonly IPlayerManager _player = default!;
|
[Dependency] private readonly IPlayerManager _player = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
|
||||||
[Dependency] private readonly MetaDataSystem _metadata = default!;
|
[Dependency] private readonly MetaDataSystem _metadata = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
_overlay.AddOverlay(new DoAfterOverlay(EntityManager, _prototype, GameTiming, _player));
|
_overlay.AddOverlay(new DoAfterOverlay(EntityManager, GameTiming, _player));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Shutdown()
|
public override void Shutdown()
|
||||||
|
|||||||
Reference in New Issue
Block a user