Fix access configurator debug assert (#34330)

* fix

* greytide fix

* fix admin log

* Dirty
This commit is contained in:
ScarKy0
2025-01-10 01:22:28 +01:00
committed by GitHub
parent abf7f62e6f
commit dd28f17b9a
3 changed files with 17 additions and 17 deletions

View File

@@ -116,10 +116,10 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem
targetLabel = Loc.GetString("access-overrider-window-target-label") + " " + EntityManager.GetComponent<MetaDataComponent>(component.TargetAccessReaderId).EntityName; targetLabel = Loc.GetString("access-overrider-window-target-label") + " " + EntityManager.GetComponent<MetaDataComponent>(component.TargetAccessReaderId).EntityName;
targetLabelColor = Color.White; targetLabelColor = Color.White;
if (!_accessReader.GetMainAccessReader(accessReader, out var accessReaderComponent)) if (!_accessReader.GetMainAccessReader(accessReader, out var accessReaderEnt))
return; return;
var currentAccessHashsets = accessReaderComponent.AccessLists; var currentAccessHashsets = accessReaderEnt.Value.Comp.AccessLists;
currentAccess = ConvertAccessHashSetsToList(currentAccessHashsets).ToArray(); currentAccess = ConvertAccessHashSetsToList(currentAccessHashsets).ToArray();
} }
@@ -210,10 +210,10 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem
return; return;
} }
if (!_accessReader.GetMainAccessReader(component.TargetAccessReaderId, out var accessReader)) if (!_accessReader.GetMainAccessReader(component.TargetAccessReaderId, out var accessReaderEnt))
return; return;
var oldTags = ConvertAccessHashSetsToList(accessReader.AccessLists); var oldTags = ConvertAccessHashSetsToList(accessReaderEnt.Value.Comp.AccessLists);
var privilegedId = component.PrivilegedIdSlot.Item; var privilegedId = component.PrivilegedIdSlot.Item;
if (oldTags.SequenceEqual(newAccessList)) if (oldTags.SequenceEqual(newAccessList))
@@ -242,10 +242,10 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem
var removedTags = oldTags.Except(newAccessList).Select(tag => "-" + tag).ToList(); var removedTags = oldTags.Except(newAccessList).Select(tag => "-" + tag).ToList();
_adminLogger.Add(LogType.Action, LogImpact.Medium, _adminLogger.Add(LogType.Action, LogImpact.Medium,
$"{ToPrettyString(player):player} has modified {ToPrettyString(component.TargetAccessReaderId):entity} with the following allowed access level holders: [{string.Join(", ", addedTags.Union(removedTags))}] [{string.Join(", ", newAccessList)}]"); $"{ToPrettyString(player):player} has modified {ToPrettyString(accessReaderEnt.Value):entity} with the following allowed access level holders: [{string.Join(", ", addedTags.Union(removedTags))}] [{string.Join(", ", newAccessList)}]");
accessReader.AccessLists = ConvertAccessListToHashSet(newAccessList); accessReaderEnt.Value.Comp.AccessLists = ConvertAccessListToHashSet(newAccessList);
Dirty(component.TargetAccessReaderId, accessReader); Dirty(accessReaderEnt.Value);
} }
/// <summary> /// <summary>

View File

@@ -94,11 +94,11 @@ public sealed class GreytideVirusRule : StationEventSystem<GreytideVirusRuleComp
continue; continue;
// use the access reader from the door electronics if they exist // use the access reader from the door electronics if they exist
if (!_access.GetMainAccessReader(airlockUid, out var accessComp)) if (!_access.GetMainAccessReader(airlockUid, out var accessEnt))
continue; continue;
// check access // check access
if (!_access.AreAccessTagsAllowed(accessIds, accessComp) || _access.AreAccessTagsAllowed(virusComp.Blacklist, accessComp)) if (!_access.AreAccessTagsAllowed(accessIds, accessEnt.Value.Comp) || _access.AreAccessTagsAllowed(virusComp.Blacklist, accessEnt.Value.Comp))
continue; continue;
// open and bolt airlocks // open and bolt airlocks

View File

@@ -113,25 +113,25 @@ public sealed class AccessReaderSystem : EntitySystem
return false; return false;
} }
public bool GetMainAccessReader(EntityUid uid, [NotNullWhen(true)] out AccessReaderComponent? component) public bool GetMainAccessReader(EntityUid uid, [NotNullWhen(true)] out Entity<AccessReaderComponent>? ent)
{ {
component = null; ent = null;
if (!TryComp(uid, out AccessReaderComponent? accessReader)) if (!TryComp<AccessReaderComponent>(uid, out var accessReader))
return false; return false;
component = accessReader; ent = (uid, accessReader);
if (component.ContainerAccessProvider == null) if (ent.Value.Comp.ContainerAccessProvider == null)
return true; return true;
if (!_containerSystem.TryGetContainer(uid, component.ContainerAccessProvider, out var container)) if (!_containerSystem.TryGetContainer(uid, ent.Value.Comp.ContainerAccessProvider, out var container))
return true; return true;
foreach (var entity in container.ContainedEntities) foreach (var entity in container.ContainedEntities)
{ {
if (TryComp(entity, out AccessReaderComponent? containedReader)) if (TryComp<AccessReaderComponent>(entity, out var containedReader))
{ {
component = containedReader; ent = (entity, containedReader);
return true; return true;
} }
} }