Files
OldThink/Content.Client/UserInterface/LobbyGui.cs

216 lines
8.1 KiB
C#
Raw Normal View History

using Content.Client.Chat;
2019-10-18 14:28:39 +02:00
using Content.Client.Utility;
using Robust.Client.Graphics.Drawing;
using Robust.Client.Interfaces.ResourceManagement;
2019-10-18 14:28:39 +02:00
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Localization;
using Robust.Shared.Maths;
namespace Content.Client.UserInterface
{
2019-10-18 14:28:39 +02:00
internal sealed class LobbyGui : Control
{
public Label ServerName { get; }
public Label StartTime { get; }
public Button ReadyButton { get; }
public Button ObserveButton { get; }
public Button LeaveButton { get; }
2019-05-14 12:54:47 +02:00
public ChatBox Chat { get; }
public ItemList OnlinePlayerItemList { get; }
2019-10-18 14:28:39 +02:00
public ServerInfo ServerInfo { get; }
public LobbyGui(ILocalizationManager localization, IResourceCache resourceCache)
{
2019-10-18 14:28:39 +02:00
var panelTex = resourceCache.GetTexture("/Nano/button.svg.96dpi.png");
var back = new StyleBoxTexture
{
Texture = panelTex,
Modulate = new Color(37, 37, 42),
};
back.SetPatchMargin(StyleBox.Margin.All, 10);
2019-10-18 14:28:39 +02:00
var panel = new Panel
{
2019-10-18 14:28:39 +02:00
PanelOverride = back
};
2019-10-18 14:28:39 +02:00
AddChild(panel);
2019-10-18 14:28:39 +02:00
panel.SetAnchorAndMarginPreset(LayoutPreset.Wide);
2019-10-18 14:28:39 +02:00
var vBox = new VBoxContainer {SeparationOverride = 0};
2019-10-18 14:28:39 +02:00
vBox.SetAnchorAndMarginPreset(LayoutPreset.Wide);
2019-10-18 14:28:39 +02:00
vBox.MarginTop = 40;
2019-10-18 14:28:39 +02:00
AddChild(vBox);
2019-10-18 14:28:39 +02:00
AddChild(new Label
{
Text = localization.GetString("Lobby"),
StyleClasses = {NanoStyle.StyleClassLabelHeadingBigger},
MarginBottom = 40,
MarginLeft = 8,
VAlign = Label.VAlignMode.Center
});
AddChild(ServerName = new Label
{
StyleClasses = {NanoStyle.StyleClassLabelHeadingBigger},
MarginBottom = 40,
GrowHorizontal = GrowDirection.Both,
VAlign = Label.VAlignMode.Center
});
2019-10-18 14:28:39 +02:00
ServerName.SetAnchorAndMarginPreset(LayoutPreset.CenterTop);
2019-10-18 14:28:39 +02:00
AddChild(LeaveButton = new Button
{
SizeFlagsHorizontal = SizeFlags.ShrinkEnd,
Text = localization.GetString("Leave"),
StyleClasses = {NanoStyle.StyleClassButtonBig},
GrowHorizontal = GrowDirection.Begin
2019-10-18 14:28:39 +02:00
});
LeaveButton.SetAnchorAndMarginPreset(LayoutPreset.TopRight);
2019-10-18 14:28:39 +02:00
vBox.AddChild(new Panel
{
PanelOverride = new StyleBoxFlat
{
2019-10-18 14:28:39 +02:00
BackgroundColor = NanoStyle.NanoGold,
ContentMarginTopOverride = 2
},
});
2019-10-18 14:28:39 +02:00
var hBox = new HBoxContainer
{
SizeFlagsVertical = SizeFlags.FillExpand,
SeparationOverride = 0
};
vBox.AddChild(hBox);
2019-10-18 14:28:39 +02:00
hBox.AddChild(new VBoxContainer
{
2019-10-18 14:28:39 +02:00
SizeFlagsHorizontal = SizeFlags.FillExpand,
SeparationOverride = 0,
Children =
2019-05-14 12:54:47 +02:00
{
2019-10-18 14:28:39 +02:00
new Placeholder(resourceCache)
{
SizeFlagsVertical = SizeFlags.FillExpand,
PlaceholderText = localization.GetString("Character UI\nPlaceholder")
},
new StripeBack
{
Children =
{
new MarginContainer
{
MarginRightOverride = 3,
MarginLeftOverride = 3,
MarginTopOverride = 3,
MarginBottomOverride = 3,
Children =
{
new HBoxContainer
{
SeparationOverride = 6,
Children =
{
(ObserveButton = new Button
{
Text = localization.GetString("Observe"),
StyleClasses = {NanoStyle.StyleClassButtonBig}
}),
(StartTime = new Label
{
SizeFlagsHorizontal = SizeFlags.FillExpand,
Align = Label.AlignMode.Right,
FontColorOverride = Color.DarkGray,
StyleClasses = { NanoStyle.StyleClassLabelBig }
}),
(ReadyButton = new Button
{
ToggleMode = true,
Text = localization.GetString("Ready Up"),
StyleClasses = {NanoStyle.StyleClassButtonBig}
}),
}
}
}
}
}
},
new MarginContainer
{
MarginRightOverride = 3,
MarginLeftOverride = 3,
MarginTopOverride = 3,
MarginBottomOverride = 3,
SizeFlagsVertical = SizeFlags.FillExpand,
Children =
{
(Chat = new ChatBox
{
Input = {PlaceHolder = localization.GetString("Say something!")}
})
}
},
}
});
hBox.AddChild(new Panel
{
PanelOverride = new StyleBoxFlat {BackgroundColor = NanoStyle.NanoGold}, CustomMinimumSize = (2, 0)
});
{
hBox.AddChild(new VBoxContainer
2019-05-14 12:54:47 +02:00
{
2019-10-18 14:28:39 +02:00
SizeFlagsHorizontal = SizeFlags.FillExpand,
Children =
{
new NanoHeading
{
Text = localization.GetString("Online Players"),
},
new MarginContainer
{
SizeFlagsVertical = SizeFlags.FillExpand,
MarginRightOverride = 3,
MarginLeftOverride = 3,
MarginTopOverride = 3,
MarginBottomOverride = 3,
Children =
{
(OnlinePlayerItemList = new ItemList())
}
},
new NanoHeading
{
Text = localization.GetString("Server Info"),
},
new MarginContainer
{
SizeFlagsVertical = SizeFlags.FillExpand,
MarginRightOverride = 3,
MarginLeftOverride = 3,
MarginTopOverride = 3,
MarginBottomOverride = 2,
Children =
{
(ServerInfo = new ServerInfo(localization))
}
},
}
2019-05-14 12:54:47 +02:00
});
}
}
}
}