* 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
90 lines
2.2 KiB
C#
90 lines
2.2 KiB
C#
using System.Linq;
|
|
using Content.Client.UserInterface.Systems.Inventory.Controls;
|
|
using Robust.Client.UserInterface.Controls;
|
|
|
|
namespace Content.Client.UserInterface.Systems.Hands.Controls;
|
|
|
|
public sealed class HandsContainer : ItemSlotUIContainer<HandButton>
|
|
{
|
|
private readonly GridContainer _grid;
|
|
public int ColumnLimit { get => _grid.Columns; set => _grid.Columns = value; }
|
|
public int MaxButtonCount { get; set; } = 0;
|
|
|
|
/// <summary>
|
|
/// Indexer. This is used to reference a HandsContainer from the
|
|
/// controller.
|
|
/// </summary>
|
|
public string? Indexer { get; set; }
|
|
|
|
public HandsContainer()
|
|
{
|
|
AddChild(_grid = new GridContainer());
|
|
_grid.ExpandBackwards = true;
|
|
}
|
|
|
|
public override HandButton? AddButton(HandButton newButton)
|
|
{
|
|
if (MaxButtonCount > 0)
|
|
{
|
|
if (ButtonCount >= MaxButtonCount)
|
|
return null;
|
|
|
|
_grid.AddChild(newButton);
|
|
}
|
|
else
|
|
{
|
|
_grid.AddChild(newButton);
|
|
}
|
|
|
|
return base.AddButton(newButton);
|
|
}
|
|
|
|
public override void RemoveButton(string handName)
|
|
{
|
|
var button = GetButton(handName);
|
|
if (button == null)
|
|
return;
|
|
base.RemoveButton(button);
|
|
_grid.RemoveChild(button);
|
|
}
|
|
|
|
public bool TryGetLastButton(out HandButton? control)
|
|
{
|
|
if (Buttons.Count == 0)
|
|
{
|
|
control = null;
|
|
return false;
|
|
}
|
|
|
|
control = Buttons.Values.Last();
|
|
return true;
|
|
}
|
|
|
|
public bool TryRemoveLastHand(out HandButton? control)
|
|
{
|
|
var success = TryGetLastButton(out control);
|
|
if (control != null)
|
|
RemoveButton(control);
|
|
return success;
|
|
}
|
|
|
|
public void Clear()
|
|
{
|
|
ClearButtons();
|
|
_grid.DisposeAllChildren();
|
|
}
|
|
|
|
public IEnumerable<HandButton> GetButtons()
|
|
{
|
|
foreach (var child in _grid.Children)
|
|
{
|
|
if (child is HandButton hand)
|
|
yield return hand;
|
|
}
|
|
}
|
|
|
|
public bool IsFull => (MaxButtonCount != 0 && ButtonCount >= MaxButtonCount);
|
|
|
|
public int ButtonCount => _grid.ChildCount;
|
|
}
|