diff --git a/.github/labeler.yml b/.github/labeler.yml
index e9267cbbc01..e4f7b604184 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -5,9 +5,9 @@
"Changes: Map":
- changed-files:
- any-glob-to-any-file:
- - 'Resources/Maps/*.yml'
- - 'Resources/Prototypes/Maps/*.yml'
- - 'Resources/Prototypes/Corvax/Maps/*.yml'
+ - 'Resources/Maps/**/*.yml'
+ - 'Resources/Prototypes/Maps/**/*.yml'
+ - 'Resources/Prototypes/Corvax/Maps/**/*.yml'
"Changes: UI":
- changed-files:
diff --git a/.github/workflows/labeler-pr.yml b/.github/workflows/labeler-pr.yml
index 6cc86067fa9..2ae22b3b1cb 100644
--- a/.github/workflows/labeler-pr.yml
+++ b/.github/workflows/labeler-pr.yml
@@ -1,4 +1,4 @@
-name: "Labels: PR"
+name: "Labels: PR"
on:
- pull_request_target
@@ -12,5 +12,5 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5
- with:
- sync-labels: true
+ with: # ADT Tweak by Schrodinger
+ sync-labels: true # Поправил auto-labels
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 9a2dfa12534..ba2e83614b6 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -31,7 +31,7 @@ jobs:
chmod 600 ~/.ssh/id_rsa
echo "HOST *" > ~/.ssh/config
echo "StrictHostKeyChecking no" >> ~/.ssh/config
- git -c submodule.Secrets.update=checkout submodule update --init
+ git clone git@github.com:corvax-nexus/secrets.git Secrets
cp -R Secrets/Resources/Prototypes Resources/Prototypes/CorvaxSecrets
cp -R Secrets/Resources/ServerPrototypes Resources/Prototypes/CorvaxSecretsServer
cp -R Secrets/Resources/Locale Resources/Locale/ru-RU/corvax-secrets
diff --git a/.gitignore b/.gitignore
index 533060b4996..df4947fd4b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@
*.userprefs
# Secret
+Secrets
Resources/Prototypes/CorvaxSecrets
Resources/Prototypes/CorvaxSecretsServer
Resources/Textures/CorvaxSecrets
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 0e0d3ae890c..00000000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "omnisharp.analyzeOpenDocumentsOnly": true,
- "dotnet.defaultSolution": "SpaceStation14.sln"
-}
diff --git a/Content.Client/Administration/UI/AdminMenuWindow.xaml b/Content.Client/Administration/UI/AdminMenuWindow.xaml
index d3d3df02d93..311d67b826c 100644
--- a/Content.Client/Administration/UI/AdminMenuWindow.xaml
+++ b/Content.Client/Administration/UI/AdminMenuWindow.xaml
@@ -6,8 +6,7 @@
xmlns:tabs="clr-namespace:Content.Client.Administration.UI.Tabs"
xmlns:playerTab="clr-namespace:Content.Client.Administration.UI.Tabs.PlayerTab"
xmlns:objectsTab="clr-namespace:Content.Client.Administration.UI.Tabs.ObjectsTab"
- xmlns:panic="clr-namespace:Content.Client.Administration.UI.Tabs.PanicBunkerTab"
- xmlns:baby="clr-namespace:Content.Client.Administration.UI.Tabs.BabyJailTab">
+ xmlns:panic="clr-namespace:Content.Client.Administration.UI.Tabs.PanicBunkerTab">
@@ -15,7 +14,6 @@
-
diff --git a/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs b/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs
index f3aa2572f2f..51330a547ec 100644
--- a/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs
+++ b/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs
@@ -3,38 +3,53 @@
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
-namespace Content.Client.Administration.UI
+namespace Content.Client.Administration.UI;
+
+[GenerateTypedNameReferences]
+public sealed partial class AdminMenuWindow : DefaultWindow
{
- [GenerateTypedNameReferences]
- public sealed partial class AdminMenuWindow : DefaultWindow
+ public event Action? OnDisposed;
+
+ public AdminMenuWindow()
+ {
+ MinSize = new Vector2(650, 250);
+ Title = Loc.GetString("admin-menu-title");
+ RobustXamlLoader.Load(this);
+ MasterTabContainer.SetTabTitle(0, Loc.GetString("admin-menu-admin-tab"));
+ MasterTabContainer.SetTabTitle(1, Loc.GetString("admin-menu-adminbus-tab"));
+ MasterTabContainer.SetTabTitle(2, Loc.GetString("admin-menu-atmos-tab"));
+ MasterTabContainer.SetTabTitle(3, Loc.GetString("admin-menu-round-tab"));
+ MasterTabContainer.SetTabTitle(4, Loc.GetString("admin-menu-server-tab"));
+ MasterTabContainer.SetTabTitle(5, Loc.GetString("admin-menu-panic-bunker-tab"));
+ MasterTabContainer.SetTabTitle(6, Loc.GetString("admin-menu-players-tab"));
+ MasterTabContainer.SetTabTitle(7, Loc.GetString("admin-menu-objects-tab"));
+ MasterTabContainer.OnTabChanged += OnTabChanged;
+ }
+
+ private void OnTabChanged(int tabIndex)
{
- public event Action? OnDisposed;
+ var tabEnum = (TabIndex)tabIndex;
+ if (tabEnum == TabIndex.Objects)
+ ObjectsTabControl.RefreshObjectList();
+ }
- public AdminMenuWindow()
- {
- MinSize = new Vector2(650, 250);
- Title = Loc.GetString("admin-menu-title");
- RobustXamlLoader.Load(this);
- MasterTabContainer.SetTabTitle(0, Loc.GetString("admin-menu-admin-tab"));
- MasterTabContainer.SetTabTitle(1, Loc.GetString("admin-menu-adminbus-tab"));
- MasterTabContainer.SetTabTitle(2, Loc.GetString("admin-menu-atmos-tab"));
- MasterTabContainer.SetTabTitle(3, Loc.GetString("admin-menu-round-tab"));
- MasterTabContainer.SetTabTitle(4, Loc.GetString("admin-menu-server-tab"));
- MasterTabContainer.SetTabTitle(5, Loc.GetString("admin-menu-panic-bunker-tab"));
- /*
- * TODO: Remove baby jail code once a more mature gateway process is established. This code is only being issued as a stopgap to help with potential tiding in the immediate future.
- */
- MasterTabContainer.SetTabTitle(6, Loc.GetString("admin-menu-baby-jail-tab"));
- MasterTabContainer.SetTabTitle(7, Loc.GetString("admin-menu-players-tab"));
- MasterTabContainer.SetTabTitle(8, Loc.GetString("admin-menu-objects-tab"));
- }
+ protected override void Dispose(bool disposing)
+ {
+ OnDisposed?.Invoke();
+ base.Dispose(disposing);
+ OnDisposed = null;
+ }
- protected override void Dispose(bool disposing)
- {
- OnDisposed?.Invoke();
- base.Dispose(disposing);
- OnDisposed = null;
- }
+ private enum TabIndex
+ {
+ Admin = 0,
+ Adminbus,
+ Atmos,
+ Round,
+ Server,
+ PanicBunker,
+ BabyJail,
+ Players,
+ Objects,
}
}
-
diff --git a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailStatusWindow.xaml b/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailStatusWindow.xaml
deleted file mode 100644
index b8034faf52a..00000000000
--- a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailStatusWindow.xaml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
diff --git a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailStatusWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailStatusWindow.xaml.cs
deleted file mode 100644
index 9e1d53818f2..00000000000
--- a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailStatusWindow.xaml.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Content.Client.Message;
-using Content.Client.UserInterface.Controls;
-using Robust.Client.AutoGenerated;
-using Robust.Client.UserInterface.CustomControls;
-using Robust.Client.UserInterface.XAML;
-
-namespace Content.Client.Administration.UI.Tabs.BabyJailTab;
-
-/*
- * TODO: Remove me once a more mature gateway process is established. This code is only being issued as a stopgap to help with potential tiding in the immediate future.
- */
-
-[GenerateTypedNameReferences]
-public sealed partial class BabyJailStatusWindow : FancyWindow
-{
- public BabyJailStatusWindow()
- {
- RobustXamlLoader.Load(this);
- MessageLabel.SetMarkup(Loc.GetString("admin-ui-baby-jail-is-enabled"));
- }
-}
diff --git a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailTab.xaml b/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailTab.xaml
deleted file mode 100644
index dd770c2be53..00000000000
--- a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailTab.xaml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailTab.xaml.cs b/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailTab.xaml.cs
deleted file mode 100644
index aa9d6ced951..00000000000
--- a/Content.Client/Administration/UI/Tabs/BabyJailTab/BabyJailTab.xaml.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using Content.Shared.Administration.Events;
-using Robust.Client.AutoGenerated;
-using Robust.Client.UserInterface;
-using Robust.Client.UserInterface.XAML;
-using Robust.Shared.Console;
-
-/*
- * TODO: Remove me once a more mature gateway process is established. This code is only being issued as a stopgap to help with potential tiding in the immediate future.
- */
-
-namespace Content.Client.Administration.UI.Tabs.BabyJailTab;
-
-[GenerateTypedNameReferences]
-public sealed partial class BabyJailTab : Control
-{
- [Dependency] private readonly IConsoleHost _console = default!;
-
- private string _maxAccountAge;
- private string _maxOverallMinutes;
-
- public BabyJailTab()
- {
- RobustXamlLoader.Load(this);
- IoCManager.InjectDependencies(this);
-
- MaxAccountAge.OnTextEntered += args => SendMaxAccountAge(args.Text);
- MaxAccountAge.OnFocusExit += args => SendMaxAccountAge(args.Text);
- _maxAccountAge = MaxAccountAge.Text;
-
- MaxOverallMinutes.OnTextEntered += args => SendMaxOverallMinutes(args.Text);
- MaxOverallMinutes.OnFocusExit += args => SendMaxOverallMinutes(args.Text);
- _maxOverallMinutes = MaxOverallMinutes.Text;
- }
-
- private void SendMaxAccountAge(string text)
- {
- if (string.IsNullOrWhiteSpace(text) ||
- text == _maxAccountAge ||
- !int.TryParse(text, out var minutes))
- {
- return;
- }
-
- _console.ExecuteCommand($"babyjail_max_account_age {minutes}");
- }
-
- private void SendMaxOverallMinutes(string text)
- {
- if (string.IsNullOrWhiteSpace(text) ||
- text == _maxOverallMinutes ||
- !int.TryParse(text, out var minutes))
- {
- return;
- }
-
- _console.ExecuteCommand($"babyjail_max_overall_minutes {minutes}");
- }
-
- public void UpdateStatus(BabyJailStatus status)
- {
- EnabledButton.Pressed = status.Enabled;
- EnabledButton.Text = Loc.GetString(status.Enabled
- ? "admin-ui-baby-jail-enabled"
- : "admin-ui-baby-jail-disabled"
- );
- EnabledButton.ModulateSelfOverride = status.Enabled ? Color.Red : null;
- ShowReasonButton.Pressed = status.ShowReason;
-
- MaxAccountAge.Text = status.MaxAccountAgeMinutes.ToString();
- _maxAccountAge = MaxAccountAge.Text;
-
- MaxOverallMinutes.Text = status.MaxOverallMinutes.ToString();
- _maxOverallMinutes = MaxOverallMinutes.Text;
- }
-}
diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml
index 821389150d6..f4298bbc00f 100644
--- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml
+++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml
@@ -4,18 +4,17 @@
xmlns:co="clr-namespace:Content.Client.UserInterface.Controls">
-
-
-
+
+
+
+
-
-
-
+
-
-
-
+
+
+
diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs
index 67e0db01eeb..78eefa34628 100644
--- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs
+++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs
@@ -3,6 +3,7 @@
using Robust.Client.AutoGenerated;
using Robust.Client.Graphics;
using Robust.Client.UserInterface;
+using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Map.Components;
using Robust.Shared.Timing;
@@ -15,17 +16,14 @@ public sealed partial class ObjectsTab : Control
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IGameTiming _timing = default!;
- private readonly List _objects = new();
- private readonly List _selections = new();
- private bool _ascending = false; // Set to false for descending order by default
- private ObjectsTabHeader.Header _headerClicked = ObjectsTabHeader.Header.ObjectName;
private readonly Color _altColor = Color.FromHex("#292B38");
private readonly Color _defaultColor = Color.FromHex("#2F2F3B");
- public event Action? OnEntryKeyBindDown;
+ private bool _ascending;
+ private ObjectsTabHeader.Header _headerClicked = ObjectsTabHeader.Header.ObjectName;
- private readonly TimeSpan _updateFrequency = TimeSpan.FromSeconds(2);
- private TimeSpan _nextUpdate;
+ private readonly List _selections = [];
+ public event Action? OnEntryKeyBindDown;
public ObjectsTab()
{
@@ -38,40 +36,25 @@ public ObjectsTab()
RefreshObjectList(_selections[ev.Id]);
};
- foreach (var type in Enum.GetValues(typeof(ObjectsTabSelection)))
+ foreach (var type in Enum.GetValues())
{
- _selections.Add((ObjectsTabSelection)type!);
- ObjectTypeOptions.AddItem(Loc.GetString($"object-tab-object-type-{((Enum.GetName((ObjectsTabSelection)type))!.ToString().ToLower())}"));
+ _selections.Add(type);
+ ObjectTypeOptions.AddItem(GetLocalizedEnumValue(type));
}
ListHeader.OnHeaderClicked += HeaderClicked;
SearchList.SearchBar = SearchLineEdit;
SearchList.GenerateItem += GenerateButton;
SearchList.DataFilterCondition += DataFilterCondition;
+ SearchList.ItemKeyBindDown += (args, data) => OnEntryKeyBindDown?.Invoke(args, data);
+ RefreshListButton.OnPressed += _ => RefreshObjectList();
- RefreshObjectList();
- // Set initial selection and refresh the list to apply the initial sort order
var defaultSelection = ObjectsTabSelection.Grids;
- ObjectTypeOptions.SelectId((int)defaultSelection); // Set the default selection
- RefreshObjectList(defaultSelection); // Refresh the list with the default selection
-
- // Initialize the next update time
- _nextUpdate = TimeSpan.Zero;
- }
-
- protected override void FrameUpdate(FrameEventArgs args)
- {
- base.FrameUpdate(args);
-
- if (_timing.CurTime < _nextUpdate)
- return;
-
- _nextUpdate = _timing.CurTime + _updateFrequency;
-
- RefreshObjectList();
+ ObjectTypeOptions.SelectId((int) defaultSelection);
+ RefreshObjectList(defaultSelection);
}
- private void RefreshObjectList()
+ public void RefreshObjectList()
{
RefreshObjectList(_selections[ObjectTypeOptions.SelectedId]);
}
@@ -101,6 +84,7 @@ private void RefreshObjectList(ObjectsTabSelection selection)
{
entities.Add((metadata.EntityName, _entityManager.GetNetEntity(uid)));
}
+
break;
}
default:
@@ -111,14 +95,18 @@ private void RefreshObjectList(ObjectsTabSelection selection)
{
var valueA = GetComparableValue(a, _headerClicked);
var valueB = GetComparableValue(b, _headerClicked);
- return _ascending ? Comparer