Фиксы фиксов педальных фич

This commit is contained in:
Aviu00
2024-01-19 14:38:49 +03:00
parent 3acd057756
commit 0804e37408
7 changed files with 48 additions and 37 deletions

View File

@@ -8,7 +8,6 @@ namespace Content.Client.White.Administration;
public sealed class InvisibilitySystem : SharedInvisibilitySystem
{
[Dependency] private readonly SharedActionsSystem _actions = default!;
[Dependency] private readonly IClientConsoleHost _console = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
@@ -16,19 +15,18 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
{
base.Initialize();
SubscribeLocalEvent<InvisibilityComponent, ComponentInit>(OnInvisibilityInit);
SubscribeLocalEvent<InvisibilityComponent, ComponentRemove>(OnInvisibilityRemove);
SubscribeLocalEvent<InvisibilityComponent, ToggleInvisibilityActionEvent>(OnToggleGhosts);
SubscribeNetworkEvent<InvisibilityToggleEvent>(OnInvisibilityToggle);
}
private void OnInvisibilityToggle(InvisibilityToggleEvent ev)
{
if (!EntityManager.TryGetComponent(ev.Uid, out SpriteComponent? sprite))
var ent = GetEntity(ev.Uid);
if (!EntityManager.TryGetComponent(ent, out SpriteComponent? sprite))
return;
var component = EntityManager.EnsureComponent<InvisibilityComponent>(ev.Uid);
var component = EntityManager.EnsureComponent<InvisibilityComponent>(ent);
component.Invisible = ev.Invisible;
component.DefaultAlpha ??= sprite.Color.A;
@@ -36,16 +34,6 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
sprite.Color = sprite.Color.WithAlpha(newAlpha);
}
private void OnInvisibilityInit(EntityUid uid, InvisibilityComponent component, ComponentInit args)
{
_actions.AddAction(uid, component.ToggleInvisibilityAction, null);
}
private void OnInvisibilityRemove(EntityUid uid, InvisibilityComponent component, ComponentRemove args)
{
_actions.RemoveAction(uid, component.ToggleInvisibilityAction);
}
private void OnToggleGhosts(EntityUid uid, InvisibilityComponent component, ToggleInvisibilityActionEvent args)
{
if (args.Handled)

View File

@@ -453,7 +453,7 @@ namespace Content.Server.Administration.Systems
overrideMsgText = $"{senderSession.Name}: {escapedText}"; // Not an admin, name is not overridden.
}
RaiseNetworkEvent(new BwoinkTextMessage(message.UserId, senderSession.UserId, overrideMsgText), session.ConnectedClient);
RaiseNetworkEvent(new BwoinkTextMessage(message.UserId, senderSession.UserId, overrideMsgText, senderAHelpAdmin), session.ConnectedClient);
}
else
RaiseNetworkEvent(msg, session.ConnectedClient);

View File

@@ -11,6 +11,7 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
{
[Dependency] private readonly VisibilitySystem _visibilitySystem = default!;
[Dependency] private readonly FollowerSystem _followerSystem = default!;
[Dependency] private readonly SharedEyeSystem _eyeSystem = default!;
public override void Initialize()
{
@@ -24,7 +25,7 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
{
if (EntityManager.TryGetComponent(uid, out EyeComponent? eye))
{
eye.VisibilityMask |= (int) VisibilityFlags.AdminInvisible;
_eyeSystem.SetVisibilityMask(uid, eye.VisibilityMask | (int) VisibilityFlags.AdminInvisible, eye);
}
}
@@ -37,7 +38,7 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
if (EntityManager.TryGetComponent(uid, out EyeComponent? eye))
{
eye.VisibilityMask &= ~(int) VisibilityFlags.AdminInvisible;
_eyeSystem.SetVisibilityMask(uid, eye.VisibilityMask & ~(int) VisibilityFlags.AdminInvisible, eye);
}
}
@@ -56,6 +57,6 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
EntityManager.HasComponent<GhostComponent>(uid) ? VisibilityFlags.Ghost : VisibilityFlags.Normal
));
RaiseNetworkEvent(new InvisibilityToggleEvent(uid, component.Invisible));
RaiseNetworkEvent(new InvisibilityToggleEvent(GetNetEntity(uid), component.Invisible));
}
}

View File

@@ -16,7 +16,7 @@ public sealed class StealthCommand : IConsoleCommand
public void Execute(IConsoleShell shell, string argStr, string[] args)
{
if (shell.Player is not IPlayerSession player)
if (shell.Player is not {} player)
{
shell.WriteLine("You cannot use this command from the server console.");
return;

View File

@@ -1,30 +1,24 @@
using Content.Shared.Actions;
using Content.Shared.Actions.ActionTypes;
using Robust.Shared.Utility;
using Robust.Shared.Prototypes;
namespace Content.Shared.White.Administration;
[RegisterComponent]
[Access(typeof(SharedInvisibilitySystem))]
public sealed class InvisibilityComponent : Component
public sealed partial class InvisibilityComponent : Component
{
[ViewVariables]
public bool Invisible;
public float? DefaultAlpha;
public readonly InstantAction ToggleInvisibilityAction = new()
{
Icon = new SpriteSpecifier.Texture(new("White/Icons/transparent-ghost.png")),
DisplayName = "Переключить невидимость",
Description = "Переключить невидимость вашего призрака.",
ClientExclusive = true,
CheckCanInteract = false,
Priority = -5,
Event = new ToggleInvisibilityActionEvent()
};
[DataField]
public EntProtoId ToggleInvisibilityAction = "ToggleInvisibilityAction";
[DataField]
public EntityUid? ToggleInvisibilityActionEntity;
}
public sealed class ToggleInvisibilityActionEvent : InstantActionEvent
public sealed partial class ToggleInvisibilityActionEvent : InstantActionEvent
{
}

View File

@@ -1,3 +1,4 @@
using Content.Shared.Actions;
using Content.Shared.Examine;
using Robust.Shared.Serialization;
@@ -5,11 +6,25 @@ namespace Content.Shared.White.Administration;
public abstract class SharedInvisibilitySystem : EntitySystem
{
[Dependency] private readonly SharedActionsSystem _actions = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<InvisibilityComponent, ExaminedEvent>(OnExamined);
SubscribeLocalEvent<InvisibilityComponent, MapInitEvent>(OnInvisibilityInit);
SubscribeLocalEvent<InvisibilityComponent, ComponentRemove>(OnInvisibilityRemove);
}
private void OnInvisibilityInit(EntityUid uid, InvisibilityComponent component, MapInitEvent args)
{
_actions.AddAction(uid, ref component.ToggleInvisibilityActionEntity, component.ToggleInvisibilityAction);
}
private void OnInvisibilityRemove(EntityUid uid, InvisibilityComponent component, ComponentRemove args)
{
_actions.RemoveAction(uid, component.ToggleInvisibilityActionEntity);
}
private void OnExamined(EntityUid uid, InvisibilityComponent component, ExaminedEvent args)
@@ -22,10 +37,10 @@ public abstract class SharedInvisibilitySystem : EntitySystem
[Serializable, NetSerializable]
public sealed class InvisibilityToggleEvent : EntityEventArgs
{
public EntityUid Uid { get; }
public NetEntity Uid { get; }
public bool Invisible { get; }
public InvisibilityToggleEvent(EntityUid uid, bool invisible)
public InvisibilityToggleEvent(NetEntity uid, bool invisible)
{
Uid = uid;
Invisible = invisible;

View File

@@ -167,3 +167,16 @@
keywords: [ "AI", "console", "interface" ]
priority: -10
event: !type:ToggleIntrinsicUIEvent { key: enum.GeneralStationRecordConsoleKey.Key }
- type: entity
id: ToggleInvisibilityAction
name: Переключить невидимость
description: Переключить невидимость вашего призрака.
noSpawn: true
components:
- type: InstantAction
icon: "White/Icons/transparent-ghost.png"
checkCanInteract: false
clientExclusive: true
priority: -5
event: !type:ToggleInvisibilityActionEvent