* 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
66 lines
1.9 KiB
C#
66 lines
1.9 KiB
C#
using Content.Client.UserInterface.Systems.Hands;
|
|
using Content.Client.UserInterface.Systems.Hands.Controls;
|
|
using Content.Client.UserInterface.Systems.Hotbar.Widgets;
|
|
using Content.Client.UserInterface.Systems.Inventory;
|
|
using Content.Client.UserInterface.Systems.Inventory.Controls;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Client.UserInterface.Controllers;
|
|
|
|
namespace Content.Client.UserInterface.Systems.Hotbar;
|
|
|
|
public sealed class HotbarUIController : UIController
|
|
{
|
|
private InventoryUIController? _inventory;
|
|
private HandsUIController? _hands;
|
|
|
|
public void Setup(HandsContainer handsContainer, ItemSlotButtonContainer inventoryBar, ItemStatusPanel handStatus)
|
|
{
|
|
_inventory = UIManager.GetUIController<InventoryUIController>();
|
|
_hands = UIManager.GetUIController<HandsUIController>();
|
|
_hands.RegisterHandContainer(handsContainer);
|
|
_inventory.RegisterInventoryBarContainer(inventoryBar);
|
|
}
|
|
|
|
public void ReloadHotbar()
|
|
{
|
|
if (UIManager.ActiveScreen == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var hotbar = UIManager.ActiveScreen.GetWidget<HotbarGui>();
|
|
|
|
if (hotbar == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach (var container in GetAllItemSlotContainers(hotbar))
|
|
{
|
|
// Yes, this is dirty.
|
|
container.SlotGroup = container.SlotGroup;
|
|
}
|
|
|
|
_hands?.ReloadHands();
|
|
_inventory?.ReloadSlots();
|
|
_inventory?.RegisterInventoryBarContainer(hotbar.InventoryHotbar);
|
|
}
|
|
|
|
private IEnumerable<ItemSlotButtonContainer> GetAllItemSlotContainers(Control gui)
|
|
{
|
|
var result = new List<ItemSlotButtonContainer>();
|
|
|
|
foreach (var child in gui.Children)
|
|
{
|
|
if (child is ItemSlotButtonContainer container)
|
|
{
|
|
result.Add(container);
|
|
}
|
|
|
|
result.AddRange(GetAllItemSlotContainers(child));
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|