Oldchat (#11913)
* 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
This commit is contained in:
@@ -10,6 +10,12 @@ public sealed class HandsContainer : ItemSlotUIContainer<HandButton>
|
||||
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());
|
||||
|
||||
@@ -238,11 +238,59 @@ public sealed class HandsUIController : UIController, IOnStateEntered<GameplaySt
|
||||
if (!_handLookup.TryAdd(handName, button))
|
||||
throw new Exception("Tried to add hand with duplicate name to UI. Name:" + handName);
|
||||
|
||||
GetFirstAvailableContainer().AddButton(button);
|
||||
if (HandsGui != null)
|
||||
{
|
||||
HandsGui.HandContainer.AddButton(button);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetFirstAvailableContainer().AddButton(button);
|
||||
}
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reload all hands.
|
||||
/// </summary>
|
||||
public void ReloadHands()
|
||||
{
|
||||
UnloadPlayerHands();
|
||||
_handsSystem.ReloadHandButtons();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Swap hands from one container to the other.
|
||||
/// </summary>
|
||||
/// <param name="other"></param>
|
||||
/// <param name="source"></param>
|
||||
public void SwapHands(HandsContainer other, HandsContainer? source = null)
|
||||
{
|
||||
if (HandsGui == null && source == null)
|
||||
{
|
||||
throw new ArgumentException("Cannot swap hands if no source hand container exists!");
|
||||
}
|
||||
|
||||
source ??= HandsGui!.HandContainer;
|
||||
|
||||
var transfer = new List<Control>();
|
||||
foreach (var child in source.Children)
|
||||
{
|
||||
if (child is not HandButton)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
transfer.Add(child);
|
||||
}
|
||||
|
||||
foreach (var control in transfer)
|
||||
{
|
||||
source.RemoveChild(control);
|
||||
other.AddChild(control);
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveHand(string handName)
|
||||
{
|
||||
RemoveHand(handName, out _);
|
||||
@@ -266,15 +314,15 @@ public sealed class HandsUIController : UIController, IOnStateEntered<GameplaySt
|
||||
public string RegisterHandContainer(HandsContainer handContainer)
|
||||
{
|
||||
var name = "HandContainer_" + _backupSuffix;
|
||||
;
|
||||
if (handContainer.Name == null)
|
||||
|
||||
if (handContainer.Indexer == null)
|
||||
{
|
||||
handContainer.Name = name;
|
||||
handContainer.Indexer = name;
|
||||
_backupSuffix++;
|
||||
}
|
||||
else
|
||||
{
|
||||
name = handContainer.Name;
|
||||
name = handContainer.Indexer;
|
||||
}
|
||||
|
||||
_handContainerIndices.Add(name, _handsContainers.Count);
|
||||
|
||||
Reference in New Issue
Block a user