Презентабельный вид панельки
This commit is contained in:
@@ -11,7 +11,7 @@
|
|||||||
<BoxContainer Orientation="Horizontal">
|
<BoxContainer Orientation="Horizontal">
|
||||||
<Label Text="Время" MinWidth="100" />
|
<Label Text="Время" MinWidth="100" />
|
||||||
<Control MinWidth="50" />
|
<Control MinWidth="50" />
|
||||||
<LineEdit Name="MinutesLine" MinWidth="100" HorizontalExpand="True" />
|
<LineEdit Name="MinutesLine" MinWidth="100" HorizontalExpand="True" PlaceHolder="минуты" />
|
||||||
<Button Name="HourButton" Text="+1h (0)"/>
|
<Button Name="HourButton" Text="+1h (0)"/>
|
||||||
</BoxContainer>
|
</BoxContainer>
|
||||||
<OptionButton Name="RoleOption" />
|
<OptionButton Name="RoleOption" />
|
||||||
@@ -14,6 +14,8 @@ using Robust.Client.UserInterface;
|
|||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using static Robust.Client.UserInterface.Controls.LineEdit;
|
using static Robust.Client.UserInterface.Controls.LineEdit;
|
||||||
using Content.Shared.Players.PlayTimeTracking;
|
using Content.Shared.Players.PlayTimeTracking;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
|
||||||
namespace Content.Client.Administration.UI.Tabs.AdminTab;
|
namespace Content.Client.Administration.UI.Tabs.AdminTab;
|
||||||
|
|
||||||
@@ -21,125 +23,81 @@ namespace Content.Client.Administration.UI.Tabs.AdminTab;
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public sealed partial class HoursPanel : DefaultWindow
|
public sealed partial class HoursPanel : DefaultWindow
|
||||||
{
|
{
|
||||||
private enum Roles
|
|
||||||
{
|
|
||||||
Overall,
|
|
||||||
|
|
||||||
//Write in alphabetical order!
|
|
||||||
|
|
||||||
AtmosphericTechnician,
|
|
||||||
Bartender,
|
|
||||||
Bomzh,
|
|
||||||
Borg,
|
|
||||||
Botanist,
|
|
||||||
Boxer,
|
|
||||||
Brigmedic,
|
|
||||||
Captain,
|
|
||||||
CargoTechnician,
|
|
||||||
Chaplain,
|
|
||||||
Chef,
|
|
||||||
Chemist,
|
|
||||||
ChiefEngineer,
|
|
||||||
ChiefMedicalOfficer,
|
|
||||||
Clown,
|
|
||||||
Detective,
|
|
||||||
HeadOfPersonnel,
|
|
||||||
HeadOfSecurity,
|
|
||||||
Inspector,
|
|
||||||
Janitor,
|
|
||||||
Lawyer,
|
|
||||||
Librarian,
|
|
||||||
Maid,
|
|
||||||
MedicalDoctor,
|
|
||||||
MedicalIntern,
|
|
||||||
Mime,
|
|
||||||
Musician,
|
|
||||||
Paramedic,
|
|
||||||
Passenger,
|
|
||||||
Psychologist,
|
|
||||||
Quartermaster,
|
|
||||||
Reporter,
|
|
||||||
ResearchAssistant,
|
|
||||||
ResearchDirector,
|
|
||||||
SalvageSpecialist,
|
|
||||||
Scientist,
|
|
||||||
SecurityCadet,
|
|
||||||
SecurityOfficer,
|
|
||||||
SeniorEngineer,
|
|
||||||
SeniorOfficer,
|
|
||||||
SeniorPhysician,
|
|
||||||
SeniorResearcher,
|
|
||||||
ServiceWorker,
|
|
||||||
StationEngineer,
|
|
||||||
TechnicalAssistant,
|
|
||||||
Visitor,
|
|
||||||
Warden,
|
|
||||||
Zookeeper
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public HoursPanel()
|
public HoursPanel()
|
||||||
{
|
{
|
||||||
RobustXamlLoader.Load(this);
|
RobustXamlLoader.Load(this);
|
||||||
|
var roles = new Dictionary<int, string>();
|
||||||
|
PlayerNameLine.OnTextChanged += _ => OnNamesChanged();
|
||||||
PlayerList.OnSelectionChanged += OnPlayerSelectionChanged;
|
PlayerList.OnSelectionChanged += OnPlayerSelectionChanged;
|
||||||
HourButton.OnPressed += _ => AddMinutes(60);
|
HourButton.OnPressed += _ => AddMinutes(60);
|
||||||
MinutesLine.OnTextChanged += UpdateButtonsText;
|
MinutesLine.OnTextChanged += UpdateButtonsText;
|
||||||
|
RoleOption.OnItemSelected += args => RoleOption.SelectId(args.Id);
|
||||||
RoleOption.AddItem("OverAll");
|
SubmitButton.OnPressed += _ => OnSubmitButtonOnPressed(roles);
|
||||||
foreach (var dep in IoCManager.Resolve<IPrototypeManager>().EnumeratePrototypes<DepartmentPrototype>())
|
OnNamesChanged();
|
||||||
{
|
InitRoleList(roles);
|
||||||
foreach (var role in dep.Roles)
|
|
||||||
{
|
|
||||||
RoleOption.AddItem(role.Id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RoleOption.RemoveItem(RoleOption.GetItemId());
|
|
||||||
RoleOption.Select(0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
private void SetRoles()
|
private void InitRoleList(Dictionary<int, string> Roles)
|
||||||
{
|
{
|
||||||
int roleInd = 0;
|
var roleInd = 0;
|
||||||
|
RoleOption.AddItem("общее", roleInd);
|
||||||
|
Roles.Add(roleInd, "Overall");
|
||||||
|
roleInd++;
|
||||||
foreach (var dep in IoCManager.Resolve<IPrototypeManager>().EnumeratePrototypes<DepartmentPrototype>())
|
foreach (var dep in IoCManager.Resolve<IPrototypeManager>().EnumeratePrototypes<DepartmentPrototype>())
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (var role in dep.Roles)
|
foreach (var role in dep.Roles)
|
||||||
{
|
{
|
||||||
RoleOption.AddItem(role.Id, roleInd++);
|
RoleOption.AddItem(Loc.GetString($"Job{role.Id}"), roleInd);
|
||||||
|
Roles.Add(roleInd, $"Job{role.Id}");
|
||||||
|
roleInd++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
RoleOption.SelectId(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryGetMinutes(string str, out uint minutes)
|
private bool TryGetMinutes(string str, out uint minutes)
|
||||||
{
|
{
|
||||||
minutes = 0;
|
minutes = 0;
|
||||||
return string.IsNullOrWhiteSpace(str) || uint.TryParse(str, out minutes);
|
return !string.IsNullOrWhiteSpace(str) && uint.TryParse(str, out minutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddMinutes(uint add)
|
private void AddMinutes(uint add)
|
||||||
{
|
{
|
||||||
|
OnNamesChanged();
|
||||||
if (!TryGetMinutes(MinutesLine.Text, out var minutes))
|
if (!TryGetMinutes(MinutesLine.Text, out var minutes))
|
||||||
return;
|
minutes = 0;
|
||||||
|
|
||||||
MinutesLine.Text = $"{minutes + add}";
|
MinutesLine.Text = $"{minutes + add}";
|
||||||
UpdateButtons(minutes + add);
|
UpdateButtons(minutes + add);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateButtonsText(LineEditEventArgs obj)
|
private void UpdateButtonsText(LineEditEventArgs obj)
|
||||||
{
|
{
|
||||||
|
OnNamesChanged();
|
||||||
if (!TryGetMinutes(obj.Text, out var minutes))
|
if (!TryGetMinutes(obj.Text, out var minutes))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
UpdateButtons(minutes);
|
UpdateButtons(minutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateButtons(uint minutes)
|
private void UpdateButtons(uint minutes)
|
||||||
{
|
{
|
||||||
HourButton.Text = $"+1h ({minutes / 60})";
|
HourButton.Text = $"+1h ({minutes / 60})";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnNamesChanged()
|
private void OnNamesChanged()
|
||||||
{
|
{
|
||||||
SubmitButton.Disabled = string.IsNullOrEmpty(PlayerNameLine.Text);
|
SubmitButton.Disabled = string.IsNullOrEmpty(PlayerNameLine.Text) || !TryGetMinutes(MinutesLine.Text, out _);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPlayerSelectionChanged(PlayerInfo? player)
|
private void OnPlayerSelectionChanged(PlayerInfo? player)
|
||||||
{
|
{
|
||||||
PlayerNameLine.Text = player?.Username ?? string.Empty;
|
PlayerNameLine.Text = player?.Username ?? string.Empty;
|
||||||
OnNamesChanged();
|
OnNamesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnSubmitButtonOnPressed(Dictionary<int, string> roles)
|
||||||
|
{
|
||||||
|
IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(
|
||||||
|
$"playtime_addrole {PlayerNameLine.Text} {roles[RoleOption.SelectedId]} {MinutesLine.Text}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -56,6 +56,7 @@ job-name-bomzh = бомж
|
|||||||
# Role timers - Make these alphabetical or I cut you
|
# Role timers - Make these alphabetical or I cut you
|
||||||
JobAtmosphericTechnician = атмосферный техник
|
JobAtmosphericTechnician = атмосферный техник
|
||||||
JobBartender = бармен
|
JobBartender = бармен
|
||||||
|
JobBomzh = бомж
|
||||||
JobBorg = борг
|
JobBorg = борг
|
||||||
JobBotanist = ботаник
|
JobBotanist = ботаник
|
||||||
JobBoxer = боксер
|
JobBoxer = боксер
|
||||||
@@ -77,9 +78,11 @@ JobERTMedical = медик ОБР
|
|||||||
JobERTSecurity = офицер безопасности ОБР
|
JobERTSecurity = офицер безопасности ОБР
|
||||||
JobHeadOfPersonnel = глава персонала
|
JobHeadOfPersonnel = глава персонала
|
||||||
JobHeadOfSecurity = глава службы безопасности
|
JobHeadOfSecurity = глава службы безопасности
|
||||||
|
JobInspector = инспектор
|
||||||
JobJanitor = уборщик
|
JobJanitor = уборщик
|
||||||
JobLawyer = юрист
|
JobLawyer = юрист
|
||||||
JobLibrarian = библиотекарь
|
JobLibrarian = библиотекарь
|
||||||
|
JobMaid = прислуга
|
||||||
JobMedicalDoctor = врач
|
JobMedicalDoctor = врач
|
||||||
JobMedicalIntern = интерн
|
JobMedicalIntern = интерн
|
||||||
JobMime = мим
|
JobMime = мим
|
||||||
|
|||||||
Reference in New Issue
Block a user