Фиксы фиксов педальных фич
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user