2021-09-19 19:23:32 +02:00
|
|
|
using Robust.Client.AutoGenerated;
|
2021-06-21 02:13:54 +02:00
|
|
|
using Robust.Client.UserInterface.Controls;
|
2019-09-03 22:51:19 +02:00
|
|
|
using Robust.Client.UserInterface.CustomControls;
|
2021-09-19 19:23:32 +02:00
|
|
|
using Robust.Client.UserInterface.XAML;
|
2019-09-03 22:51:19 +02:00
|
|
|
using Robust.Shared.IoC;
|
|
|
|
|
using Robust.Shared.Localization;
|
|
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
namespace Content.Client.Research.UI
|
2019-09-03 22:51:19 +02:00
|
|
|
{
|
2021-09-19 19:23:32 +02:00
|
|
|
[GenerateTypedNameReferences]
|
2022-02-16 00:23:23 -07:00
|
|
|
public sealed partial class ResearchClientServerSelectionMenu : DefaultWindow
|
2019-09-03 22:51:19 +02:00
|
|
|
{
|
2021-03-10 14:48:29 +01:00
|
|
|
private int _serverCount;
|
2021-06-21 02:13:54 +02:00
|
|
|
private string[] _serverNames = System.Array.Empty<string>();
|
|
|
|
|
private int[] _serverIds = System.Array.Empty<int>();
|
2019-09-03 22:51:19 +02:00
|
|
|
private int _selectedServerId = -1;
|
|
|
|
|
|
2021-09-19 19:23:32 +02:00
|
|
|
private ResearchClientBoundUserInterface Owner { get; }
|
2019-09-03 22:51:19 +02:00
|
|
|
|
2021-03-10 14:48:29 +01:00
|
|
|
public ResearchClientServerSelectionMenu(ResearchClientBoundUserInterface owner)
|
2019-09-03 22:51:19 +02:00
|
|
|
{
|
2021-09-19 19:23:32 +02:00
|
|
|
RobustXamlLoader.Load(this);
|
2019-09-03 22:51:19 +02:00
|
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
|
|
2021-03-10 14:48:29 +01:00
|
|
|
Owner = owner;
|
2019-09-03 22:51:19 +02:00
|
|
|
|
2021-09-19 19:23:32 +02:00
|
|
|
Servers.OnItemSelected += OnItemSelected;
|
|
|
|
|
Servers.OnItemDeselected += OnItemDeselected;
|
2019-09-03 22:51:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OnItemSelected(ItemList.ItemListSelectedEventArgs itemListSelectedEventArgs)
|
|
|
|
|
{
|
|
|
|
|
Owner.SelectServer(_serverIds[itemListSelectedEventArgs.ItemIndex]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OnItemDeselected(ItemList.ItemListDeselectedEventArgs itemListDeselectedEventArgs)
|
|
|
|
|
{
|
|
|
|
|
Owner.DeselectServer();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Populate(int serverCount, string[] serverNames, int[] serverIds, int selectedServerId)
|
|
|
|
|
{
|
|
|
|
|
_serverCount = serverCount;
|
|
|
|
|
_serverNames = serverNames;
|
|
|
|
|
_serverIds = serverIds;
|
|
|
|
|
_selectedServerId = selectedServerId;
|
|
|
|
|
|
|
|
|
|
// Disable so we can select the new selected server without triggering a new sync request.
|
2021-09-19 19:23:32 +02:00
|
|
|
Servers.OnItemSelected -= OnItemSelected;
|
|
|
|
|
Servers.OnItemDeselected -= OnItemDeselected;
|
2019-09-03 22:51:19 +02:00
|
|
|
|
2021-09-19 19:23:32 +02:00
|
|
|
Servers.Clear();
|
2019-09-03 22:51:19 +02:00
|
|
|
for (var i = 0; i < _serverCount; i++)
|
|
|
|
|
{
|
|
|
|
|
var id = _serverIds[i];
|
2021-09-19 19:23:32 +02:00
|
|
|
Servers.AddItem(Loc.GetString("research-client-server-selection-menu-server-entry-text", ("id", id), ("serverName", _serverNames[i])));
|
2019-09-13 15:35:06 +02:00
|
|
|
if (id == _selectedServerId)
|
2021-06-21 02:13:54 +02:00
|
|
|
{
|
2022-03-22 18:47:48 -07:00
|
|
|
Servers[i].Selected = true;
|
2021-06-21 02:13:54 +02:00
|
|
|
}
|
2019-09-03 22:51:19 +02:00
|
|
|
}
|
|
|
|
|
|
2021-09-19 19:23:32 +02:00
|
|
|
Servers.OnItemSelected += OnItemSelected;
|
|
|
|
|
Servers.OnItemDeselected += OnItemDeselected;
|
2019-09-03 22:51:19 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|