Files
RobustToolbox/Robust.Client/UserInterface/CustomControls/DebugMonitorControls/DebugInputPanel.cs
2022-12-02 23:05:21 +01:00

57 lines
1.5 KiB
C#

using System.Text;
using Robust.Client.Graphics;
using Robust.Client.Input;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.IoC;
using Robust.Shared.Maths;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
namespace Robust.Client.UserInterface.CustomControls.DebugMonitorControls
{
internal sealed class DebugInputPanel : PanelContainer
{
[Dependency] private readonly IInputManager _inputManager = default!;
private readonly Label _label;
private readonly StringBuilder _textBuilder = new();
private readonly char[] _textBuffer = new char[512];
public DebugInputPanel()
{
IoCManager.InjectDependencies(this);
PanelOverride = new StyleBoxFlat
{
BackgroundColor = new Color(67, 105, 255, 138),
};
PanelOverride.SetContentMarginOverride(StyleBox.Margin.All, 5);
AddChild(_label = new Label());
}
protected override void FrameUpdate(FrameEventArgs args)
{
base.FrameUpdate(args);
if (!VisibleInTree)
{
return;
}
_textBuilder.Clear();
_textBuilder.Append($"Input context: {_inputManager.Contexts.ActiveContext.Name}");
foreach (var func in _inputManager.DownKeyFunctions)
{
_textBuilder.Append($"\n {func.FunctionName}");
}
_label.TextMemory = FormatHelpers.BuilderToMemory(_textBuilder, _textBuffer);
}
}
}