Voting (#3185)
* Basic voting * Rewrite lobby in XAML. Working lobby voting. * Escape menu is now XAML. * Vote menu works, custom votes, gamemode votes. * Vote timeouts & administration. Basically done now. * I will now pretend I was never planning to code voting hotkeys. * Make vote call UI a bit... funny. * Fix exception on round restart. * Fix some vote command definitions.
This commit is contained in:
committed by
GitHub
parent
db290fd91e
commit
cea87d6985
@@ -15,6 +15,7 @@ using Robust.Shared.Maths;
|
||||
using Robust.Shared.Utility;
|
||||
using static Robust.Client.Input.Keyboard.Key;
|
||||
using Control = Robust.Client.UserInterface.Control;
|
||||
using LC = Robust.Client.UserInterface.Controls.LayoutContainer;
|
||||
|
||||
namespace Content.Client.UserInterface
|
||||
{
|
||||
@@ -70,6 +71,9 @@ namespace Content.Client.UserInterface
|
||||
Action<bool> OnCombatModeChanged { get; set; }
|
||||
Action<TargetingZone> OnTargetingZoneChanged { get; set; }
|
||||
|
||||
Control VoteContainer { get; }
|
||||
|
||||
void AddTopNotification(TopNotification notification);
|
||||
|
||||
// Init logic.
|
||||
void Initialize();
|
||||
@@ -90,6 +94,7 @@ namespace Content.Client.UserInterface
|
||||
private TargetingDoll _targetingDoll;
|
||||
private Button _combatModeButton;
|
||||
private VBoxContainer _combatPanelContainer;
|
||||
private VBoxContainer _topNotificationContainer;
|
||||
|
||||
[Dependency] private readonly IResourceCache _resourceCache = default!;
|
||||
[Dependency] private readonly IInputManager _inputManager = default!;
|
||||
@@ -120,10 +125,15 @@ namespace Content.Client.UserInterface
|
||||
public Action<bool> OnCombatModeChanged { get; set; }
|
||||
public Action<TargetingZone> OnTargetingZoneChanged { get; set; }
|
||||
|
||||
public void AddTopNotification(TopNotification notification)
|
||||
{
|
||||
_topNotificationContainer.AddChild(notification);
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
RootControl = new LayoutContainer();
|
||||
LayoutContainer.SetAnchorPreset(RootControl, LayoutContainer.LayoutPreset.Wide);
|
||||
RootControl = new LC();
|
||||
LC.SetAnchorPreset(RootControl, LC.LayoutPreset.Wide);
|
||||
|
||||
var escapeTexture = _resourceCache.GetTexture("/Textures/Interface/hamburger.svg.192dpi.png");
|
||||
var characterTexture = _resourceCache.GetTexture("/Textures/Interface/character.svg.192dpi.png");
|
||||
@@ -141,7 +151,7 @@ namespace Content.Client.UserInterface
|
||||
|
||||
RootControl.AddChild(_topButtonsContainer);
|
||||
|
||||
LayoutContainer.SetAnchorAndMarginPreset(_topButtonsContainer, LayoutContainer.LayoutPreset.TopLeft,
|
||||
LC.SetAnchorAndMarginPreset(_topButtonsContainer, LC.LayoutPreset.TopLeft,
|
||||
margin: 10);
|
||||
|
||||
// the icon textures here should all have the same image height (32) but different widths, so in order to ensure
|
||||
@@ -271,10 +281,10 @@ namespace Content.Client.UserInterface
|
||||
}
|
||||
};
|
||||
|
||||
LayoutContainer.SetGrowHorizontal(_combatPanelContainer, LayoutContainer.GrowDirection.Begin);
|
||||
LayoutContainer.SetGrowVertical(_combatPanelContainer, LayoutContainer.GrowDirection.Begin);
|
||||
LayoutContainer.SetAnchorAndMarginPreset(_combatPanelContainer, LayoutContainer.LayoutPreset.BottomRight);
|
||||
LayoutContainer.SetMarginBottom(_combatPanelContainer, -10f);
|
||||
LC.SetGrowHorizontal(_combatPanelContainer, LC.GrowDirection.Begin);
|
||||
LC.SetGrowVertical(_combatPanelContainer, LC.GrowDirection.Begin);
|
||||
LC.SetAnchorAndMarginPreset(_combatPanelContainer, LC.LayoutPreset.BottomRight);
|
||||
LC.SetMarginBottom(_combatPanelContainer, -10f);
|
||||
RootControl.AddChild(_combatPanelContainer);
|
||||
|
||||
_combatModeButton.OnToggled += args => OnCombatModeChanged?.Invoke(args.Pressed);
|
||||
@@ -284,10 +294,10 @@ namespace Content.Client.UserInterface
|
||||
{
|
||||
SeparationOverride = 5
|
||||
};
|
||||
LayoutContainer.SetAnchorAndMarginPreset(centerBottomContainer, LayoutContainer.LayoutPreset.CenterBottom);
|
||||
LayoutContainer.SetGrowHorizontal(centerBottomContainer, LayoutContainer.GrowDirection.Both);
|
||||
LayoutContainer.SetGrowVertical(centerBottomContainer, LayoutContainer.GrowDirection.Begin);
|
||||
LayoutContainer.SetMarginBottom(centerBottomContainer, -10f);
|
||||
LC.SetAnchorAndMarginPreset(centerBottomContainer, LC.LayoutPreset.CenterBottom);
|
||||
LC.SetGrowHorizontal(centerBottomContainer, LC.GrowDirection.Both);
|
||||
LC.SetGrowVertical(centerBottomContainer, LC.GrowDirection.Begin);
|
||||
LC.SetMarginBottom(centerBottomContainer, -10f);
|
||||
RootControl.AddChild(centerBottomContainer);
|
||||
|
||||
HandsContainer = new MarginContainer
|
||||
@@ -313,10 +323,27 @@ namespace Content.Client.UserInterface
|
||||
|
||||
RootControl.AddChild(SuspicionContainer);
|
||||
|
||||
LayoutContainer.SetAnchorAndMarginPreset(SuspicionContainer, LayoutContainer.LayoutPreset.BottomLeft,
|
||||
LC.SetAnchorAndMarginPreset(SuspicionContainer, LC.LayoutPreset.BottomLeft,
|
||||
margin: 10);
|
||||
LayoutContainer.SetGrowHorizontal(SuspicionContainer, LayoutContainer.GrowDirection.End);
|
||||
LayoutContainer.SetGrowVertical(SuspicionContainer, LayoutContainer.GrowDirection.Begin);
|
||||
LC.SetGrowHorizontal(SuspicionContainer, LC.GrowDirection.End);
|
||||
LC.SetGrowVertical(SuspicionContainer, LC.GrowDirection.Begin);
|
||||
|
||||
_topNotificationContainer = new VBoxContainer
|
||||
{
|
||||
CustomMinimumSize = (600, 0)
|
||||
};
|
||||
RootControl.AddChild(_topNotificationContainer);
|
||||
LC.SetAnchorPreset(_topNotificationContainer, LC.LayoutPreset.CenterTop);
|
||||
LC.SetGrowHorizontal(_topNotificationContainer, LC.GrowDirection.Both);
|
||||
LC.SetGrowVertical(_topNotificationContainer, LC.GrowDirection.End);
|
||||
|
||||
VoteContainer = new VBoxContainer();
|
||||
RootControl.AddChild(VoteContainer);
|
||||
LC.SetAnchorPreset(VoteContainer, LC.LayoutPreset.TopLeft);
|
||||
LC.SetMarginLeft(VoteContainer, 180);
|
||||
LC.SetMarginTop(VoteContainer, 100);
|
||||
LC.SetGrowHorizontal(VoteContainer, LC.GrowDirection.End);
|
||||
LC.SetGrowVertical(VoteContainer, LC.GrowDirection.End);
|
||||
}
|
||||
|
||||
private void ButtonTutorialOnOnToggled()
|
||||
@@ -436,6 +463,8 @@ namespace Content.Client.UserInterface
|
||||
|
||||
public Action<bool> SandboxButtonToggled { get; set; }
|
||||
|
||||
public Control VoteContainer { get; private set; }
|
||||
|
||||
public sealed class TopButton : ContainerButton
|
||||
{
|
||||
public const string StyleClassLabelTopButton = "topButtonLabel";
|
||||
|
||||
Reference in New Issue
Block a user