* 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:
Flipp Syder
2022-10-17 15:13:41 -07:00
committed by GitHub
parent 730eddf0ab
commit a3dafd88dc
37 changed files with 910 additions and 208 deletions

View File

@@ -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());

View File

@@ -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);