mirror of
https://github.com/DeltaV-Station/Delta-v.git
synced 2026-09-29 15:47:26 +00:00
* i'm going insane from screens * some wiring * screemes * holy shit adhd lock-in * incomplete * its FUCKING DONE * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * zeta * mrrrp * test fix * fix arrivals * fix misnetwork * Fix iteration outline. Fixed all headers showing if all options where hidden. Added access requirement to keycard auth mechnism. Added countdown. Fixed ninja and fugitive. Fixed AI and aghost. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
74 lines
2.4 KiB
C#
74 lines
2.4 KiB
C#
using Robust.Client.GameObjects;
|
|
using Robust.Client.Graphics;
|
|
using Robust.Client.ResourceManagement;
|
|
|
|
namespace Content.Client._DV.Screens;
|
|
|
|
public sealed class DVTextVisualsSystem : EntitySystem
|
|
{
|
|
[Dependency] private readonly IOverlayManager _overlay = default!;
|
|
[Dependency] private readonly IResourceCache _resource = default!;
|
|
[Dependency] private readonly SpriteSystem _sprite = default!;
|
|
[Dependency] private readonly AnimationPlayerSystem _animationPlayer = default!;
|
|
|
|
private DVTextRenderingOverlay _textRendering = default!;
|
|
|
|
private Font _font = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
_textRendering = new(_sprite, _animationPlayer);
|
|
_overlay.AddOverlay(_textRendering);
|
|
_font = new VectorFont(_resource.GetResource<FontResource>("/Fonts/_DV/TinyUnicode.ttf"), 12);
|
|
|
|
SubscribeLocalEvent<DVTextVisualsComponent, ComponentInit>(OnComponentInit);
|
|
SubscribeLocalEvent<DVTextVisualsComponent, ComponentShutdown>(OnComponentShutdown);
|
|
|
|
SubscribeLocalEvent<DVTextVisualsComponent, AnimationCompletedEvent>(OnAnimationComplete);
|
|
}
|
|
|
|
public override void Shutdown()
|
|
{
|
|
_overlay.RemoveOverlay(_textRendering);
|
|
}
|
|
|
|
private void OnComponentInit(Entity<DVTextVisualsComponent> ent, ref ComponentInit args)
|
|
{
|
|
ent.Comp.Token = _textRendering.QueueRender(ent, _font);
|
|
}
|
|
|
|
private void OnComponentShutdown(Entity<DVTextVisualsComponent> ent, ref ComponentShutdown args)
|
|
{
|
|
foreach (var row in ent.Comp.Rows)
|
|
{
|
|
row.Texture?.Dispose();
|
|
}
|
|
ent.Comp.Token?.Cancel();
|
|
}
|
|
|
|
private void OnAnimationComplete(Entity<DVTextVisualsComponent> ent, ref AnimationCompletedEvent args)
|
|
{
|
|
if (args.Key != DVTextRenderingOverlay.MarqueeKey || !args.Finished || ent.Comp.Animation is not { } animation)
|
|
return;
|
|
|
|
_animationPlayer.Play(ent.Owner, animation, DVTextRenderingOverlay.MarqueeKey);
|
|
}
|
|
|
|
public void SetText(Entity<DVTextVisualsComponent?> ent, params string[] rows)
|
|
{
|
|
if (!Resolve(ent, ref ent.Comp))
|
|
return;
|
|
|
|
var count = Math.Min(rows.Length, ent.Comp.Rows.Count);
|
|
for (var i = 0; i < count; i++)
|
|
{
|
|
ent.Comp.Rows[i].Text = rows[i];
|
|
}
|
|
|
|
ent.Comp.Token?.Cancel();
|
|
ent.Comp.Token = _textRendering.QueueRender((ent, ent.Comp), _font);
|
|
}
|
|
}
|