* #272 add bordered panel for effects bar * #272 avoid mouse overlapping tooltip when near edges, change tooltip colors to match mockups * #272 WIP defining status effect states as YML and sending them as encoded integers * #272 refactor to use new alert system * #272 refactor to use new alert system * #272 fix various bugs with new alert system and update alerts to have color * #272 WIP * #272 rename status effects to alerts * #272 WIP reworking alert internals to avoid code dup and eliminate enum * #272 refactor alerts to use categories and fix various bugs * #272 more alert bugfixes * #272 alert ordering * #272 callback-based approach for alert clicks * #272 add debug commands for alerts * #272 utilize new GridContainer capabilities for sizing of alerts tab * #272 scale alerts height based on window size * #272 fix tooltip flicker * #272 transparent alert panel * #272 adjust styles to match injazz mockups more, add cooldown info in tooltip * #272 adjust styles to match injazz mockups more, add cooldown info in tooltip * #272 alert prototype tests * #272 alert manager tests * #272 alert order tests * #272 simple unit test for alerts component * #272 integration test for alerts * #272 rework alerts to use enums instead of id / category * #272 various cleanups for PR * #272 use byte for more compact alert messages * #272 rename StatusEffects folder to Alerts, add missing NetSerializable
74 lines
2.4 KiB
C#
74 lines
2.4 KiB
C#
using System;
|
|
using Content.Client.UserInterface.Stylesheets;
|
|
using Robust.Client.Graphics.Drawing;
|
|
using Robust.Client.Interfaces.Graphics;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.CustomControls;
|
|
using Robust.Shared.Maths;
|
|
|
|
namespace Content.Client.UserInterface
|
|
{
|
|
/// <summary>
|
|
/// The status effects display on the right side of the screen.
|
|
/// </summary>
|
|
public sealed class AlertsUI : Control
|
|
{
|
|
public GridContainer Grid { get; }
|
|
|
|
private readonly IClyde _clyde;
|
|
|
|
public AlertsUI(IClyde clyde)
|
|
{
|
|
_clyde = clyde;
|
|
var panelContainer = new PanelContainer
|
|
{
|
|
StyleClasses = {StyleNano.StyleClassTransparentBorderedWindowPanel},
|
|
SizeFlagsVertical = SizeFlags.FillExpand,
|
|
};
|
|
AddChild(panelContainer);
|
|
|
|
Grid = new GridContainer
|
|
{
|
|
MaxHeight = CalcMaxHeight(clyde.ScreenSize),
|
|
ExpandBackwards = true
|
|
};
|
|
panelContainer.AddChild(Grid);
|
|
clyde.OnWindowResized += ClydeOnOnWindowResized;
|
|
|
|
LayoutContainer.SetGrowHorizontal(this, LayoutContainer.GrowDirection.Begin);
|
|
LayoutContainer.SetAnchorAndMarginPreset(this, LayoutContainer.LayoutPreset.TopRight, margin: 10);
|
|
LayoutContainer.SetMarginTop(this, 250);
|
|
}
|
|
|
|
protected override void UIScaleChanged()
|
|
{
|
|
Grid.MaxHeight = CalcMaxHeight(_clyde.ScreenSize);
|
|
base.UIScaleChanged();
|
|
}
|
|
|
|
private void ClydeOnOnWindowResized(WindowResizedEventArgs obj)
|
|
{
|
|
// TODO: Can rework this once https://github.com/space-wizards/RobustToolbox/issues/1392 is done,
|
|
// this is here because there isn't currently a good way to allow the grid to adjust its height based
|
|
// on constraints, otherwise we would use anchors to lay it out
|
|
Grid.MaxHeight = CalcMaxHeight(obj.NewSize);;
|
|
}
|
|
|
|
private float CalcMaxHeight(Vector2i screenSize)
|
|
{
|
|
return Math.Max(((screenSize.Y) / UIScale) - 420, 1);
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
base.Dispose(disposing);
|
|
|
|
if (disposing)
|
|
{
|
|
_clyde.OnWindowResized -= ClydeOnOnWindowResized;
|
|
}
|
|
}
|
|
}
|
|
}
|