1+ using System . Linq ;
12using System . Numerics ;
23using Content . Client . Administration . Systems ;
4+ using Content . Shared . CCVar ;
5+ using Content . Shared . Mind ;
36using Robust . Client . Graphics ;
47using Robust . Client . ResourceManagement ;
58using Robust . Client . UserInterface ;
6- using Robust . Shared ;
7- using Robust . Shared . Enums ;
89using Robust . Shared . Configuration ;
10+ using Robust . Shared . Enums ;
11+ using Robust . Shared . Prototypes ;
912
1013namespace Content . Client . Administration ;
1114
1215internal sealed class AdminNameOverlay : Overlay
1316{
17+ [ Dependency ] private readonly IConfigurationManager _config = default ! ;
18+
1419 private readonly AdminSystem _system ;
1520 private readonly IEntityManager _entityManager ;
1621 private readonly IEyeManager _eyeManager ;
1722 private readonly EntityLookupSystem _entityLookup ;
1823 private readonly IUserInterfaceManager _userInterfaceManager ;
1924 private readonly Font _font ;
2025
26+ //TODO make this adjustable via GUI
27+ private readonly ProtoId < RoleTypePrototype > [ ] _filter =
28+ [ "SoloAntagonist" , "TeamAntagonist" , "SiliconAntagonist" , "FreeAgent" ] ;
29+ private readonly string _antagLabelClassic = Loc . GetString ( "admin-overlay-antag-classic" ) ;
30+ private readonly Color _antagColorClassic = Color . OrangeRed ;
31+
2132 public AdminNameOverlay ( AdminSystem system , IEntityManager entityManager , IEyeManager eyeManager , IResourceCache resourceCache , EntityLookupSystem entityLookup , IUserInterfaceManager userInterfaceManager )
2233 {
34+ IoCManager . InjectDependencies ( this ) ;
35+
2336 _system = system ;
2437 _entityManager = entityManager ;
2538 _eyeManager = eyeManager ;
@@ -35,6 +48,9 @@ protected override void Draw(in OverlayDrawArgs args)
3548 {
3649 var viewport = args . WorldAABB ;
3750
51+ //TODO make this adjustable via GUI
52+ var classic = _config . GetCVar ( CCVars . AdminOverlayClassic ) ;
53+
3854 foreach ( var playerInfo in _system . PlayerList )
3955 {
4056 var entity = _entityManager . GetEntity ( playerInfo . NetEntity ) ;
@@ -64,12 +80,20 @@ protected override void Draw(in OverlayDrawArgs args)
6480 var screenCoordinates = _eyeManager . WorldToScreen ( aabb . Center +
6581 new Angle ( - _eyeManager . CurrentEye . Rotation ) . RotateVec (
6682 aabb . TopRight - aabb . Center ) ) + new Vector2 ( 1f , 7f ) ;
67- if ( playerInfo . Antag )
83+
84+ if ( classic && playerInfo . Antag )
6885 {
69- args . ScreenHandle . DrawString ( _font , screenCoordinates + ( lineoffset * 2 ) , "ANTAG" , uiScale , Color . OrangeRed ) ;
70- ;
86+ args . ScreenHandle . DrawString ( _font , screenCoordinates + ( lineoffset * 2 ) , _antagLabelClassic , uiScale , _antagColorClassic ) ;
7187 }
72- args . ScreenHandle . DrawString ( _font , screenCoordinates + lineoffset , playerInfo . Username , uiScale , playerInfo . Connected ? Color . Yellow : Color . White ) ;
88+ else if ( ! classic && _filter . Contains ( playerInfo . RoleProto . ID ) )
89+ {
90+ var label = Loc . GetString ( playerInfo . RoleProto . Name ) . ToUpper ( ) ;
91+ var color = playerInfo . RoleProto . Color ;
92+
93+ args . ScreenHandle . DrawString ( _font , screenCoordinates + ( lineoffset * 2 ) , label , uiScale , color ) ;
94+ }
95+
96+ args . ScreenHandle . DrawString ( _font , screenCoordinates + lineoffset , playerInfo . Username , uiScale , playerInfo . Connected ? Color . Yellow : Color . White ) ;
7397 args . ScreenHandle . DrawString ( _font , screenCoordinates , playerInfo . CharacterName , uiScale , playerInfo . Connected ? Color . Aquamarine : Color . White ) ;
7498 }
7599 }
0 commit comments