Фиксы фиксов педальных фич
This commit is contained in:
@@ -8,7 +8,6 @@ namespace Content.Client.White.Administration;
|
|||||||
|
|
||||||
public sealed class InvisibilitySystem : SharedInvisibilitySystem
|
public sealed class InvisibilitySystem : SharedInvisibilitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
|
||||||
[Dependency] private readonly IClientConsoleHost _console = default!;
|
[Dependency] private readonly IClientConsoleHost _console = default!;
|
||||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||||
|
|
||||||
@@ -16,19 +15,18 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
|
|||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
SubscribeLocalEvent<InvisibilityComponent, ComponentInit>(OnInvisibilityInit);
|
|
||||||
SubscribeLocalEvent<InvisibilityComponent, ComponentRemove>(OnInvisibilityRemove);
|
|
||||||
|
|
||||||
SubscribeLocalEvent<InvisibilityComponent, ToggleInvisibilityActionEvent>(OnToggleGhosts);
|
SubscribeLocalEvent<InvisibilityComponent, ToggleInvisibilityActionEvent>(OnToggleGhosts);
|
||||||
SubscribeNetworkEvent<InvisibilityToggleEvent>(OnInvisibilityToggle);
|
SubscribeNetworkEvent<InvisibilityToggleEvent>(OnInvisibilityToggle);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnInvisibilityToggle(InvisibilityToggleEvent ev)
|
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;
|
return;
|
||||||
|
|
||||||
var component = EntityManager.EnsureComponent<InvisibilityComponent>(ev.Uid);
|
var component = EntityManager.EnsureComponent<InvisibilityComponent>(ent);
|
||||||
component.Invisible = ev.Invisible;
|
component.Invisible = ev.Invisible;
|
||||||
component.DefaultAlpha ??= sprite.Color.A;
|
component.DefaultAlpha ??= sprite.Color.A;
|
||||||
|
|
||||||
@@ -36,16 +34,6 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
|
|||||||
sprite.Color = sprite.Color.WithAlpha(newAlpha);
|
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)
|
private void OnToggleGhosts(EntityUid uid, InvisibilityComponent component, ToggleInvisibilityActionEvent args)
|
||||||
{
|
{
|
||||||
if (args.Handled)
|
if (args.Handled)
|
||||||
|
|||||||
@@ -453,7 +453,7 @@ namespace Content.Server.Administration.Systems
|
|||||||
overrideMsgText = $"{senderSession.Name}: {escapedText}"; // Not an admin, name is not overridden.
|
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
|
else
|
||||||
RaiseNetworkEvent(msg, session.ConnectedClient);
|
RaiseNetworkEvent(msg, session.ConnectedClient);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
|
|||||||
{
|
{
|
||||||
[Dependency] private readonly VisibilitySystem _visibilitySystem = default!;
|
[Dependency] private readonly VisibilitySystem _visibilitySystem = default!;
|
||||||
[Dependency] private readonly FollowerSystem _followerSystem = default!;
|
[Dependency] private readonly FollowerSystem _followerSystem = default!;
|
||||||
|
[Dependency] private readonly SharedEyeSystem _eyeSystem = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -24,7 +25,7 @@ public sealed class InvisibilitySystem : SharedInvisibilitySystem
|
|||||||
{
|
{
|
||||||
if (EntityManager.TryGetComponent(uid, out EyeComponent? eye))
|
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))
|
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
|
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)
|
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.");
|
shell.WriteLine("You cannot use this command from the server console.");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,30 +1,24 @@
|
|||||||
using Content.Shared.Actions;
|
using Content.Shared.Actions;
|
||||||
using Content.Shared.Actions.ActionTypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Utility;
|
|
||||||
|
|
||||||
namespace Content.Shared.White.Administration;
|
namespace Content.Shared.White.Administration;
|
||||||
|
|
||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
[Access(typeof(SharedInvisibilitySystem))]
|
[Access(typeof(SharedInvisibilitySystem))]
|
||||||
public sealed class InvisibilityComponent : Component
|
public sealed partial class InvisibilityComponent : Component
|
||||||
{
|
{
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public bool Invisible;
|
public bool Invisible;
|
||||||
|
|
||||||
public float? DefaultAlpha;
|
public float? DefaultAlpha;
|
||||||
|
|
||||||
public readonly InstantAction ToggleInvisibilityAction = new()
|
[DataField]
|
||||||
{
|
public EntProtoId ToggleInvisibilityAction = "ToggleInvisibilityAction";
|
||||||
Icon = new SpriteSpecifier.Texture(new("White/Icons/transparent-ghost.png")),
|
|
||||||
DisplayName = "Переключить невидимость",
|
[DataField]
|
||||||
Description = "Переключить невидимость вашего призрака.",
|
public EntityUid? ToggleInvisibilityActionEntity;
|
||||||
ClientExclusive = true,
|
|
||||||
CheckCanInteract = false,
|
|
||||||
Priority = -5,
|
|
||||||
Event = new ToggleInvisibilityActionEvent()
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class ToggleInvisibilityActionEvent : InstantActionEvent
|
public sealed partial class ToggleInvisibilityActionEvent : InstantActionEvent
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using Content.Shared.Actions;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
@@ -5,11 +6,25 @@ namespace Content.Shared.White.Administration;
|
|||||||
|
|
||||||
public abstract class SharedInvisibilitySystem : EntitySystem
|
public abstract class SharedInvisibilitySystem : EntitySystem
|
||||||
{
|
{
|
||||||
|
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
SubscribeLocalEvent<InvisibilityComponent, ExaminedEvent>(OnExamined);
|
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)
|
private void OnExamined(EntityUid uid, InvisibilityComponent component, ExaminedEvent args)
|
||||||
@@ -22,10 +37,10 @@ public abstract class SharedInvisibilitySystem : EntitySystem
|
|||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
public sealed class InvisibilityToggleEvent : EntityEventArgs
|
public sealed class InvisibilityToggleEvent : EntityEventArgs
|
||||||
{
|
{
|
||||||
public EntityUid Uid { get; }
|
public NetEntity Uid { get; }
|
||||||
public bool Invisible { get; }
|
public bool Invisible { get; }
|
||||||
|
|
||||||
public InvisibilityToggleEvent(EntityUid uid, bool invisible)
|
public InvisibilityToggleEvent(NetEntity uid, bool invisible)
|
||||||
{
|
{
|
||||||
Uid = uid;
|
Uid = uid;
|
||||||
Invisible = invisible;
|
Invisible = invisible;
|
||||||
|
|||||||
@@ -167,3 +167,16 @@
|
|||||||
keywords: [ "AI", "console", "interface" ]
|
keywords: [ "AI", "console", "interface" ]
|
||||||
priority: -10
|
priority: -10
|
||||||
event: !type:ToggleIntrinsicUIEvent { key: enum.GeneralStationRecordConsoleKey.Key }
|
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