From 969b85740fee377728ddcaf3f807a94cc535ea7d Mon Sep 17 00:00:00 2001 From: Red <96445749+TheShuEd@users.noreply.github.com> Date: Mon, 23 Jun 2025 22:55:26 +0300 Subject: [PATCH] fix (#1466) --- .../_CP14/Roof/CP14RoofMarkerComponent.cs | 6 ++ Content.Client/_CP14/Roof/CP14RoofSystem.cs | 81 +++++++------------ .../Entities/Mobs/Player/admin_ghost.yml | 3 +- .../Entities/Mobs/Player/observer.yml | 1 + 4 files changed, 38 insertions(+), 53 deletions(-) create mode 100644 Content.Client/_CP14/Roof/CP14RoofMarkerComponent.cs diff --git a/Content.Client/_CP14/Roof/CP14RoofMarkerComponent.cs b/Content.Client/_CP14/Roof/CP14RoofMarkerComponent.cs new file mode 100644 index 0000000000..0f31ff207b --- /dev/null +++ b/Content.Client/_CP14/Roof/CP14RoofMarkerComponent.cs @@ -0,0 +1,6 @@ +namespace Content.Client._CP14.Roof; + +[RegisterComponent] +public sealed partial class CP14RoofMarkerComponent : Component +{ +} diff --git a/Content.Client/_CP14/Roof/CP14RoofSystem.cs b/Content.Client/_CP14/Roof/CP14RoofSystem.cs index c2330608c2..9fd293915b 100644 --- a/Content.Client/_CP14/Roof/CP14RoofSystem.cs +++ b/Content.Client/_CP14/Roof/CP14RoofSystem.cs @@ -1,6 +1,5 @@ using Content.Shared._CP14.Roof; using Content.Shared.Ghost; -using Content.Shared.Light.EntitySystems; using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.Console; @@ -12,16 +11,15 @@ public sealed class CP14RoofSystem : EntitySystem { [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly SharedMapSystem _map = default!; - [Dependency] private readonly SharedRoofSystem _roof = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; - private bool _roofVisible = true; - public bool DisabledByCommand = false; + public bool DisabledByCommand; - private EntityQuery _gridQuery; private EntityQuery _ghostQuery; private EntityQuery _xformQuery; - public bool RoofVisibility + private bool _roofVisible = true; + public bool RoofVisible { get => _roofVisible && !DisabledByCommand; set @@ -37,10 +35,8 @@ public sealed class CP14RoofSystem : EntitySystem _ghostQuery = GetEntityQuery(); _xformQuery = GetEntityQuery(); - _gridQuery = GetEntityQuery(); SubscribeLocalEvent(RoofStartup); - SubscribeLocalEvent(RoofRemove); SubscribeLocalEvent(OnToggleRoof); } @@ -54,31 +50,31 @@ public sealed class CP14RoofSystem : EntitySystem if (_ghostQuery.HasComp(player)) return; - if (_xformQuery.TryComp(player, out var playerXform)) + if (!_xformQuery.TryComp(player, out var playerXform)) + return; + + var grid = playerXform.GridUid; + if (grid == null || !TryComp(grid, out var gridComp)) + return; + + var roofQuery = GetEntityQuery(); + var anchored = _map.GetAnchoredEntities(grid.Value, gridComp, playerXform.Coordinates); + + var underRoof = false; + foreach (var ent in anchored) { - var grid = playerXform.GridUid; - if (grid == null || !TryComp(grid, out var gridComp)) - return; + if (!roofQuery.HasComp(ent)) + continue; - var roofQuery = GetEntityQuery(); - var anchored = _map.GetAnchoredEntities(grid.Value, gridComp, playerXform.Coordinates); - - var underRoof = false; - foreach (var ent in anchored) - { - if (!roofQuery.HasComp(ent)) - continue; - - underRoof = true; - } - if (underRoof && _roofVisible) - { - RoofVisibility = false; - } - if (!underRoof && !_roofVisible) - { - RoofVisibility = true; - } + underRoof = true; + } + if (underRoof && _roofVisible) + { + RoofVisible = false; + } + if (!underRoof && !_roofVisible) + { + RoofVisible = true; } } @@ -99,35 +95,16 @@ public sealed class CP14RoofSystem : EntitySystem return; UpdateVisibility(ent, sprite); - - //var xform = Transform(ent); -// - //if (_gridQuery.TryComp(xform.GridUid, out var grid)) - //{ - // var index = _map.LocalToTile(xform.GridUid.Value, grid, xform.Coordinates); - // _roof.SetRoof((xform.GridUid.Value, grid, null), index, true); - //} - } - - private void RoofRemove(Entity ent, ref ComponentRemove args) - { - //var xform = Transform(ent); -// - //if (_gridQuery.TryComp(xform.GridUid, out var grid)) - //{ - // var index = _map.LocalToTile(xform.GridUid.Value, grid, xform.Coordinates); - // _roof.SetRoof((xform.GridUid.Value, grid, null), index, false); - //} } private void UpdateVisibility(Entity ent, SpriteComponent sprite) { - sprite.Visible = RoofVisibility; + _sprite.SetVisible((ent, sprite), RoofVisible); } public void UpdateRoofVisibilityAll() { - var query = EntityQueryEnumerator(); + var query = AllEntityQuery(); while (query.MoveNext(out var uid, out var marker, out var sprite)) { UpdateVisibility((uid, marker), sprite); diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml index 002bc99f42..bd5ecf9ae3 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml @@ -1,5 +1,5 @@ - type: entity - parent: [MobObserverBase, InventoryBase] + parent: [MobObserverBase, InventoryBase, CP14MobMagical] id: AdminObserver name: admin observer categories: [ HideSpawnMenu ] @@ -89,6 +89,7 @@ # range: 500 #- type: StationLimitedNetwork - type: CP14SkillScanner + - type: CP14PriceScanner - type: CP14ZLevelMover - type: Thieving stripTimeReduction: 9999 diff --git a/Resources/Prototypes/Entities/Mobs/Player/observer.yml b/Resources/Prototypes/Entities/Mobs/Player/observer.yml index cb0cfdb693..211b7297ae 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/observer.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/observer.yml @@ -68,6 +68,7 @@ radius: 6 castShadows: false enabled: false + - type: CP14ZLevelMover # proto for player ghosts specifically - type: entity