Screen load event for GameplayState (#14316)
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
@@ -1,29 +1,15 @@
|
|||||||
using Content.Client.Construction.UI;
|
|
||||||
using Content.Client.Hands;
|
using Content.Client.Hands;
|
||||||
using Content.Client.UserInterface.Controls;
|
using Content.Client.UserInterface.Controls;
|
||||||
using Content.Client.UserInterface.Screens;
|
using Content.Client.UserInterface.Screens;
|
||||||
using Content.Client.UserInterface.Systems.Actions;
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
using Content.Client.UserInterface.Systems.Alerts;
|
|
||||||
using Content.Client.UserInterface.Systems.Chat;
|
|
||||||
using Content.Client.UserInterface.Systems.Chat.Widgets;
|
|
||||||
using Content.Client.UserInterface.Systems.Ghost;
|
|
||||||
using Content.Client.UserInterface.Systems.Hands;
|
|
||||||
using Content.Client.UserInterface.Systems.Hotbar;
|
|
||||||
using Content.Client.UserInterface.Systems.Hotbar.Widgets;
|
|
||||||
using Content.Client.UserInterface.Systems.Inventory;
|
|
||||||
using Content.Client.UserInterface.Systems.MenuBar;
|
|
||||||
using Content.Client.UserInterface.Systems.Viewport;
|
|
||||||
using Content.Client.Viewport;
|
using Content.Client.Viewport;
|
||||||
using Content.Shared.CCVar;
|
using Content.Shared.CCVar;
|
||||||
using Robust.Client.Graphics;
|
using Robust.Client.Graphics;
|
||||||
using Robust.Client.Input;
|
using Robust.Client.Input;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
using Robust.Client.UserInterface.Controls;
|
|
||||||
using Robust.Client.UserInterface.CustomControls;
|
using Robust.Client.UserInterface.CustomControls;
|
||||||
using Robust.Shared.Configuration;
|
using Robust.Shared.Configuration;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
using Robust.Client.Player;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
|
|
||||||
namespace Content.Client.Gameplay
|
namespace Content.Client.Gameplay
|
||||||
{
|
{
|
||||||
@@ -39,25 +25,13 @@ namespace Content.Client.Gameplay
|
|||||||
|
|
||||||
public MainViewport Viewport => _uiManager.ActiveScreen!.GetWidget<MainViewport>()!;
|
public MainViewport Viewport => _uiManager.ActiveScreen!.GetWidget<MainViewport>()!;
|
||||||
|
|
||||||
private readonly GhostUIController _ghostController;
|
private readonly GameplayStateLoadController _loadController;
|
||||||
private readonly ActionUIController _actionController;
|
|
||||||
private readonly AlertsUIController _alertsController;
|
|
||||||
private readonly HotbarUIController _hotbarController;
|
|
||||||
private readonly ChatUIController _chatController;
|
|
||||||
private readonly ViewportUIController _viewportController;
|
|
||||||
private readonly GameTopMenuBarUIController _menuController;
|
|
||||||
|
|
||||||
public GameplayState()
|
public GameplayState()
|
||||||
{
|
{
|
||||||
IoCManager.InjectDependencies(this);
|
IoCManager.InjectDependencies(this);
|
||||||
|
|
||||||
_ghostController = _uiManager.GetUIController<GhostUIController>();
|
_loadController = _uiManager.GetUIController<GameplayStateLoadController>();
|
||||||
_actionController = _uiManager.GetUIController<ActionUIController>();
|
|
||||||
_alertsController = _uiManager.GetUIController<AlertsUIController>();
|
|
||||||
_hotbarController = _uiManager.GetUIController<HotbarUIController>();
|
|
||||||
_chatController = _uiManager.GetUIController<ChatUIController>();
|
|
||||||
_viewportController = _uiManager.GetUIController<ViewportUIController>();
|
|
||||||
_menuController = _uiManager.GetUIController<GameTopMenuBarUIController>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Startup()
|
protected override void Startup()
|
||||||
@@ -109,10 +83,7 @@ namespace Content.Client.Gameplay
|
|||||||
|
|
||||||
private void UnloadMainScreen()
|
private void UnloadMainScreen()
|
||||||
{
|
{
|
||||||
_chatController.SetMainChat(false);
|
_loadController.UnloadScreen();
|
||||||
_menuController.UnloadButtons();
|
|
||||||
_ghostController.UnloadGui();
|
|
||||||
_actionController.UnloadGui();
|
|
||||||
_uiManager.UnloadScreen();
|
_uiManager.UnloadScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,29 +99,15 @@ namespace Content.Client.Gameplay
|
|||||||
{
|
{
|
||||||
case ScreenType.Default:
|
case ScreenType.Default:
|
||||||
_uiManager.LoadScreen<DefaultGameScreen>();
|
_uiManager.LoadScreen<DefaultGameScreen>();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ScreenType.Separated:
|
case ScreenType.Separated:
|
||||||
_uiManager.LoadScreen<SeparatedChatGameScreen>();
|
_uiManager.LoadScreen<SeparatedChatGameScreen>();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_chatController.SetMainChat(true);
|
_loadController.LoadScreen();
|
||||||
_viewportController.ReloadViewport();
|
|
||||||
_menuController.LoadButtons();
|
|
||||||
|
|
||||||
// TODO: This could just be like, the equivalent of an event or something
|
|
||||||
_ghostController.LoadGui();
|
|
||||||
_actionController.LoadGui();
|
|
||||||
_alertsController.SyncAlerts();
|
|
||||||
_hotbarController.ReloadHotbar();
|
|
||||||
|
|
||||||
var viewportContainer = _uiManager.ActiveScreen!.FindControl<LayoutContainer>("ViewportContainer");
|
|
||||||
_chatController.SetSpeechBubbleRoot(viewportContainer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected override void OnKeyBindStateChanged(ViewportBoundKeyEventArgs args)
|
protected override void OnKeyBindStateChanged(ViewportBoundKeyEventArgs args)
|
||||||
{
|
{
|
||||||
if (args.Viewport == null)
|
if (args.Viewport == null)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ using Content.Client.UserInterface.Controls;
|
|||||||
using Content.Client.UserInterface.Systems.Actions.Controls;
|
using Content.Client.UserInterface.Systems.Actions.Controls;
|
||||||
using Content.Client.UserInterface.Systems.Actions.Widgets;
|
using Content.Client.UserInterface.Systems.Actions.Widgets;
|
||||||
using Content.Client.UserInterface.Systems.Actions.Windows;
|
using Content.Client.UserInterface.Systems.Actions.Windows;
|
||||||
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
using Content.Shared.Actions;
|
using Content.Shared.Actions;
|
||||||
using Content.Shared.Actions.ActionTypes;
|
using Content.Shared.Actions.ActionTypes;
|
||||||
using Content.Shared.Input;
|
using Content.Shared.Input;
|
||||||
@@ -87,6 +88,25 @@ public sealed class ActionUIController : UIController, IOnStateChanged<GameplayS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
|
||||||
|
gameplayStateLoad.OnScreenLoad += OnScreenLoad;
|
||||||
|
gameplayStateLoad.OnScreenUnload += OnScreenUnload;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScreenLoad()
|
||||||
|
{
|
||||||
|
LoadGui();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScreenUnload()
|
||||||
|
{
|
||||||
|
UnloadGui();
|
||||||
|
}
|
||||||
|
|
||||||
public void OnStateEntered(GameplayState state)
|
public void OnStateEntered(GameplayState state)
|
||||||
{
|
{
|
||||||
DebugTools.Assert(_window == null);
|
DebugTools.Assert(_window == null);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using Content.Client.Alerts;
|
using Content.Client.Alerts;
|
||||||
using Content.Client.Gameplay;
|
using Content.Client.Gameplay;
|
||||||
using Content.Client.UserInterface.Systems.Alerts.Widgets;
|
using Content.Client.UserInterface.Systems.Alerts.Widgets;
|
||||||
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
using Content.Shared.Alert;
|
using Content.Shared.Alert;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
using Robust.Client.UserInterface.Controllers;
|
using Robust.Client.UserInterface.Controllers;
|
||||||
@@ -13,6 +14,19 @@ public sealed class AlertsUIController : UIController, IOnStateEntered<GameplayS
|
|||||||
|
|
||||||
private AlertsUI? UI => UIManager.GetActiveUIWidgetOrNull<AlertsUI>();
|
private AlertsUI? UI => UIManager.GetActiveUIWidgetOrNull<AlertsUI>();
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
|
||||||
|
gameplayStateLoad.OnScreenLoad += OnScreenLoad;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScreenLoad()
|
||||||
|
{
|
||||||
|
SyncAlerts();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnAlertPressed(object? sender, AlertType e)
|
private void OnAlertPressed(object? sender, AlertType e)
|
||||||
{
|
{
|
||||||
_alertsSystem?.AlertClicked(e);
|
_alertsSystem?.AlertClicked(e);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using Content.Client.Ghost;
|
|||||||
using Content.Client.Lobby.UI;
|
using Content.Client.Lobby.UI;
|
||||||
using Content.Client.UserInterface.Screens;
|
using Content.Client.UserInterface.Screens;
|
||||||
using Content.Client.UserInterface.Systems.Chat.Widgets;
|
using Content.Client.UserInterface.Systems.Chat.Widgets;
|
||||||
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
using Content.Shared.Administration;
|
using Content.Shared.Administration;
|
||||||
using Content.Shared.CCVar;
|
using Content.Shared.CCVar;
|
||||||
using Content.Shared.Chat;
|
using Content.Shared.Chat;
|
||||||
@@ -183,6 +184,23 @@ public sealed class ChatUIController : UIController
|
|||||||
|
|
||||||
_input.SetInputCommand(ContentKeyFunctions.CycleChatChannelBackward,
|
_input.SetInputCommand(ContentKeyFunctions.CycleChatChannelBackward,
|
||||||
InputCmdHandler.FromDelegate(_ => CycleChatChannel(false)));
|
InputCmdHandler.FromDelegate(_ => CycleChatChannel(false)));
|
||||||
|
|
||||||
|
var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
|
||||||
|
gameplayStateLoad.OnScreenLoad += OnScreenLoad;
|
||||||
|
gameplayStateLoad.OnScreenUnload += OnScreenUnload;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnScreenLoad()
|
||||||
|
{
|
||||||
|
SetMainChat(true);
|
||||||
|
|
||||||
|
var viewportContainer = UIManager.ActiveScreen!.FindControl<LayoutContainer>("ViewportContainer");
|
||||||
|
SetSpeechBubbleRoot(viewportContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnScreenUnload()
|
||||||
|
{
|
||||||
|
SetMainChat(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMainChat(bool setting)
|
public void SetMainChat(bool setting)
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
using Content.Client.Gameplay;
|
||||||
|
using Robust.Client.UserInterface.Controllers;
|
||||||
|
|
||||||
|
namespace Content.Client.UserInterface.Systems.Gameplay;
|
||||||
|
|
||||||
|
public sealed class GameplayStateLoadController : UIController, IOnStateChanged<GameplayState>
|
||||||
|
{
|
||||||
|
public Action? OnScreenLoad;
|
||||||
|
public Action? OnScreenUnload;
|
||||||
|
|
||||||
|
public void OnStateEntered(GameplayState state)
|
||||||
|
{
|
||||||
|
LoadScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnStateExited(GameplayState state)
|
||||||
|
{
|
||||||
|
UnloadScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UnloadScreen()
|
||||||
|
{
|
||||||
|
OnScreenUnload?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadScreen()
|
||||||
|
{
|
||||||
|
OnScreenLoad?.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using Content.Client.Gameplay;
|
using Content.Client.Gameplay;
|
||||||
using Content.Client.Ghost;
|
using Content.Client.Ghost;
|
||||||
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
using Content.Client.UserInterface.Systems.Ghost.Widgets;
|
using Content.Client.UserInterface.Systems.Ghost.Widgets;
|
||||||
using Content.Shared.Ghost;
|
using Content.Shared.Ghost;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
@@ -16,6 +17,25 @@ public sealed class GhostUIController : UIController, IOnSystemChanged<GhostSyst
|
|||||||
|
|
||||||
private GhostGui? Gui => UIManager.GetActiveUIWidgetOrNull<GhostGui>();
|
private GhostGui? Gui => UIManager.GetActiveUIWidgetOrNull<GhostGui>();
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
|
||||||
|
gameplayStateLoad.OnScreenLoad += OnScreenLoad;
|
||||||
|
gameplayStateLoad.OnScreenUnload += OnScreenUnload;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScreenLoad()
|
||||||
|
{
|
||||||
|
LoadGui();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScreenUnload()
|
||||||
|
{
|
||||||
|
UnloadGui();
|
||||||
|
}
|
||||||
|
|
||||||
public void OnSystemLoaded(GhostSystem system)
|
public void OnSystemLoaded(GhostSystem system)
|
||||||
{
|
{
|
||||||
system.PlayerRemoved += OnPlayerRemoved;
|
system.PlayerRemoved += OnPlayerRemoved;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Content.Client.UserInterface.Systems.Hands;
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
|
using Content.Client.UserInterface.Systems.Hands;
|
||||||
using Content.Client.UserInterface.Systems.Hands.Controls;
|
using Content.Client.UserInterface.Systems.Hands.Controls;
|
||||||
using Content.Client.UserInterface.Systems.Hotbar.Widgets;
|
using Content.Client.UserInterface.Systems.Hotbar.Widgets;
|
||||||
using Content.Client.UserInterface.Systems.Inventory;
|
using Content.Client.UserInterface.Systems.Inventory;
|
||||||
@@ -13,6 +14,19 @@ public sealed class HotbarUIController : UIController
|
|||||||
private InventoryUIController? _inventory;
|
private InventoryUIController? _inventory;
|
||||||
private HandsUIController? _hands;
|
private HandsUIController? _hands;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
|
||||||
|
gameplayStateLoad.OnScreenLoad += OnScreenLoad;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScreenLoad()
|
||||||
|
{
|
||||||
|
ReloadHotbar();
|
||||||
|
}
|
||||||
|
|
||||||
public void Setup(HandsContainer handsContainer, ItemSlotButtonContainer inventoryBar, ItemStatusPanel handStatus)
|
public void Setup(HandsContainer handsContainer, ItemSlotButtonContainer inventoryBar, ItemStatusPanel handStatus)
|
||||||
{
|
{
|
||||||
_inventory = UIManager.GetUIController<InventoryUIController>();
|
_inventory = UIManager.GetUIController<InventoryUIController>();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Content.Client.UserInterface.Systems.Bwoink;
|
|||||||
using Content.Client.UserInterface.Systems.Character;
|
using Content.Client.UserInterface.Systems.Character;
|
||||||
using Content.Client.UserInterface.Systems.Crafting;
|
using Content.Client.UserInterface.Systems.Crafting;
|
||||||
using Content.Client.UserInterface.Systems.EscapeMenu;
|
using Content.Client.UserInterface.Systems.EscapeMenu;
|
||||||
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
using Content.Client.UserInterface.Systems.Inventory;
|
using Content.Client.UserInterface.Systems.Inventory;
|
||||||
using Content.Client.UserInterface.Systems.MenuBar.Widgets;
|
using Content.Client.UserInterface.Systems.MenuBar.Widgets;
|
||||||
using Content.Client.UserInterface.Systems.Sandbox;
|
using Content.Client.UserInterface.Systems.Sandbox;
|
||||||
@@ -25,6 +26,15 @@ public sealed class GameTopMenuBarUIController : UIController
|
|||||||
|
|
||||||
private GameTopMenuBar? GameTopMenuBar => UIManager.GetActiveUIWidgetOrNull<GameTopMenuBar>();
|
private GameTopMenuBar? GameTopMenuBar => UIManager.GetActiveUIWidgetOrNull<GameTopMenuBar>();
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
|
||||||
|
gameplayStateLoad.OnScreenLoad += LoadButtons;
|
||||||
|
gameplayStateLoad.OnScreenUnload += UnloadButtons;
|
||||||
|
}
|
||||||
|
|
||||||
public void UnloadButtons()
|
public void UnloadButtons()
|
||||||
{
|
{
|
||||||
_escape.UnloadButton();
|
_escape.UnloadButton();
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Content.Client.UserInterface.Controls;
|
using Content.Client.UserInterface.Controls;
|
||||||
|
using Content.Client.UserInterface.Systems.Gameplay;
|
||||||
using Content.Shared.CCVar;
|
using Content.Shared.CCVar;
|
||||||
using Robust.Client.GameObjects;
|
using Robust.Client.GameObjects;
|
||||||
using Robust.Client.Graphics;
|
using Robust.Client.Graphics;
|
||||||
@@ -25,6 +26,14 @@ public sealed class ViewportUIController : UIController
|
|||||||
_configurationManager.OnValueChanged(CCVars.ViewportMinimumWidth, _ => UpdateViewportRatio());
|
_configurationManager.OnValueChanged(CCVars.ViewportMinimumWidth, _ => UpdateViewportRatio());
|
||||||
_configurationManager.OnValueChanged(CCVars.ViewportMaximumWidth, _ => UpdateViewportRatio());
|
_configurationManager.OnValueChanged(CCVars.ViewportMaximumWidth, _ => UpdateViewportRatio());
|
||||||
_configurationManager.OnValueChanged(CCVars.ViewportWidth, _ => UpdateViewportRatio());
|
_configurationManager.OnValueChanged(CCVars.ViewportWidth, _ => UpdateViewportRatio());
|
||||||
|
|
||||||
|
var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
|
||||||
|
gameplayStateLoad.OnScreenLoad += OnScreenLoad;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScreenLoad()
|
||||||
|
{
|
||||||
|
ReloadViewport();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateViewportRatio()
|
private void UpdateViewportRatio()
|
||||||
|
|||||||
Reference in New Issue
Block a user