* attempt at moving MainViewport to UIWidget * oldchat (prototype) * separate oldchat and default ss14 HUD into their own files * restores original default game screen logic and adds that logic into separated chat game screen * hand reloading, several tweaks to port oldchat to main ss14 branch oldchat is currently not selectable * screen type cvar, gameplay state screen reloading/loading * reload screen on ui layout cvar change * fixes up basic reloading (HUD switching is still very bad) * some UI widget reloading for main UI screen switching * alert sync on screen change * inventory reload * hotbar margin fix * chat bubbles above viewport * whoops * fixes ordering of speech bubble root * should fix the chat focus issue (at least in-game, not lobby yet) * should fix up the lobby/game chat focus * fixes chat for lobby, turns lobby into a UI state * viewport UI controller * viewport ratio selection * whoops * adds the /tg/ widescreen ratio * removes warning from inventory UI controller, adds background to separated chat game screen's chat portion * menu button reload * unload menu buttons only from gameplay state shutdown * bugfix * character button fix * adds config options for viewport width/UI layout * variable naming changes, get or null instead of get to avoid exceptions * moves entity system get into controller
64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using Content.Client.Alerts;
|
|
using Content.Client.Gameplay;
|
|
using Content.Client.UserInterface.Systems.Alerts.Widgets;
|
|
using Content.Shared.Alert;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Client.UserInterface.Controllers;
|
|
|
|
namespace Content.Client.UserInterface.Systems.Alerts;
|
|
|
|
public sealed class AlertsUIController : UIController, IOnStateEntered<GameplayState>, IOnSystemChanged<ClientAlertsSystem>
|
|
{
|
|
[UISystemDependency] private readonly ClientAlertsSystem? _alertsSystem = default;
|
|
|
|
private AlertsUI? UI => UIManager.GetActiveUIWidgetOrNull<AlertsUI>();
|
|
|
|
private void OnAlertPressed(object? sender, AlertType e)
|
|
{
|
|
_alertsSystem?.AlertClicked(e);
|
|
}
|
|
|
|
private void SystemOnClearAlerts(object? sender, EventArgs e)
|
|
{
|
|
UI?.ClearAllControls();
|
|
}
|
|
|
|
private void SystemOnSyncAlerts(object? sender, IReadOnlyDictionary<AlertKey, AlertState> e)
|
|
{
|
|
if (sender is ClientAlertsSystem system)
|
|
UI?.SyncControls(system, system.AlertOrder, e);
|
|
}
|
|
|
|
public void OnSystemLoaded(ClientAlertsSystem system)
|
|
{
|
|
system.SyncAlerts += SystemOnSyncAlerts;
|
|
system.ClearAlerts += SystemOnClearAlerts;
|
|
}
|
|
|
|
public void OnSystemUnloaded(ClientAlertsSystem system)
|
|
{
|
|
system.SyncAlerts -= SystemOnSyncAlerts;
|
|
system.ClearAlerts -= SystemOnClearAlerts;
|
|
}
|
|
|
|
public void OnStateEntered(GameplayState state)
|
|
{
|
|
if (UI != null)
|
|
{
|
|
UI.AlertPressed += OnAlertPressed;
|
|
}
|
|
|
|
// initially populate the frame if system is available
|
|
SyncAlerts();
|
|
}
|
|
|
|
public void SyncAlerts()
|
|
{
|
|
var alerts = _alertsSystem?.ActiveAlerts;
|
|
if (alerts != null)
|
|
{
|
|
SystemOnSyncAlerts(_alertsSystem, alerts);
|
|
}
|
|
}
|
|
}
|