felinid for admin (#187)

This commit is contained in:
KettlebellOfCreation
2023-07-05 20:59:45 +03:00
committed by Aviu00
parent cc45a18fea
commit 17c8c7070d
8 changed files with 87 additions and 37 deletions

View File

@@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Content.Client.Administration.Managers;
using Content.Client.White.Sponsors;
using Content.Shared.Administration;
using Content.Shared.Preferences;
using Robust.Client;
using Robust.Shared.IoC;
using Robust.Client.Player;
using Robust.Shared.Network;
using Robust.Shared.Utility;
@@ -22,6 +22,8 @@ namespace Content.Client.Preferences
//WD-EDIT
[Dependency] private readonly SponsorsManager _sponsorsManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IClientAdminManager _adminManager = default!;
//WD-EDIT
public event Action? OnServerDataLoaded;
@@ -67,7 +69,7 @@ namespace Content.Client.Preferences
{
//WD-EDIT
var allowedMarkings = _sponsorsManager.TryGetInfo(out var sponsor) ? sponsor.AllowedMarkings : new string[]{};
profile.EnsureValid(allowedMarkings);
profile.EnsureValid(allowedMarkings, _adminManager.HasFlag(AdminFlags.AdminSpecies));
//WD-EDIT
var characters = new Dictionary<int, ICharacterProfile>(Preferences.Characters) {[slot] = profile};
Preferences = new PlayerPreferences(characters, Preferences.SelectedCharacterIndex, Preferences.AdminOOCColor);

View File

@@ -1,5 +1,6 @@
using System.Linq;
using System.Numerics;
using Content.Client.Administration.Managers;
using Content.Client.Humanoid;
using Content.Client.Lobby.UI;
using Content.Client.Message;
@@ -7,6 +8,7 @@ using Content.Client.Players.PlayTimeTracking;
using Content.Client.Stylesheets;
using Content.Client.UserInterface.Controls;
using Content.Client.White.Sponsors;
using Content.Shared.Administration;
using Content.Shared.CCVar;
using Content.Shared.GameTicking;
using Content.Shared.Humanoid;
@@ -27,11 +29,13 @@ using Robust.Client.UserInterface.XAML;
using Robust.Client.Utility;
using Robust.Shared.Configuration;
using Robust.Shared.Enums;
using Robust.Shared.Log;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
using TerraFX.Interop.Windows;
using static Robust.Client.UserInterface.Controls.BoxContainer;
using Direction = Robust.Shared.Maths.Direction;
@@ -58,6 +62,7 @@ namespace Content.Client.Preferences.UI
//WD-EDIT
private readonly SponsorsManager _sponsorsManager;
private readonly IClientAdminManager _adminManager;
//WD-EDIT
private readonly IClientPreferencesManager _preferencesManager;
@@ -128,6 +133,7 @@ namespace Content.Client.Preferences.UI
{
RobustXamlLoader.Load(this);
_sponsorsManager = IoCManager.Resolve<SponsorsManager>();
_adminManager = IoCManager.Resolve<IClientAdminManager>();
_prototypeManager = prototypeManager;
_entMan = entityManager;
_preferencesManager = preferencesManager;
@@ -208,37 +214,11 @@ namespace Content.Client.Preferences.UI
#region Species
//WD EDIT
_speciesList = prototypeManager.EnumeratePrototypes<SpeciesPrototype>().Where(o => o.RoundStart).ToList();
if (_sponsorsManager.TryGetInfo(out var sponsor))
{
for (int i = _speciesList.Count - 1; i >= 0; i--)
{
var specie = _speciesList[i];
if (specie.SponsorOnly && !sponsor.AllowedMarkings.Contains(specie.ID))
{
_speciesList.RemoveAt(i);
}
}
}
else
{
for (int i = _speciesList.Count - 1; i >= 0; i--)
{
var specie = _speciesList[i];
if (specie.SponsorOnly)
{
_speciesList.RemoveAt(i);
}
}
}
_speciesList = GetAllowedSpecies();
//WD EDIT END
for (var i = 0; i < _speciesList.Count; i++)
{
var specie = _speciesList[i]; // WD EDIT
var name = Loc.GetString(specie.Name);
@@ -1228,6 +1208,54 @@ namespace Content.Client.Preferences.UI
}
}
//WD EDIT
private List<SpeciesPrototype> GetAllowedSpecies()
{
var allowedSpecies = new List<SpeciesPrototype>();
var rawSpecieList = _prototypeManager.EnumeratePrototypes<SpeciesPrototype>()
.Where((specie) =>
{
if (specie.RoundStart && (specie.SponsorOnly || specie.ForAdmins))
{
return true;
}
else if (specie.RoundStart)
{
allowedSpecies.Add(specie);
return false;
}
return false;
}).ToList();
if (_sponsorsManager.TryGetInfo(out var sponsor))
{
foreach (var specie in rawSpecieList)
{
if (specie.SponsorOnly
&& sponsor.AllowedMarkings.Contains(specie.ID)
&& !allowedSpecies.Contains(specie))
{
allowedSpecies.Add(specie);
}
}
}
if (_adminManager.HasFlag(AdminFlags.AdminSpecies))
{
foreach (var specie in rawSpecieList)
{
if (specie.ForAdmins && !allowedSpecies.Contains(specie))
{
allowedSpecies.Add(specie);
}
}
}
return allowedSpecies;
}
//WD EDIT END
private void UpdateJobPriorities()
{
foreach (var prioritySelector in _jobPriorities)