Fix access configurator debug assert (#34330)
* fix * greytide fix * fix admin log * Dirty
This commit is contained in:
@@ -116,10 +116,10 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem
|
||||
targetLabel = Loc.GetString("access-overrider-window-target-label") + " " + EntityManager.GetComponent<MetaDataComponent>(component.TargetAccessReaderId).EntityName;
|
||||
targetLabelColor = Color.White;
|
||||
|
||||
if (!_accessReader.GetMainAccessReader(accessReader, out var accessReaderComponent))
|
||||
if (!_accessReader.GetMainAccessReader(accessReader, out var accessReaderEnt))
|
||||
return;
|
||||
|
||||
var currentAccessHashsets = accessReaderComponent.AccessLists;
|
||||
var currentAccessHashsets = accessReaderEnt.Value.Comp.AccessLists;
|
||||
currentAccess = ConvertAccessHashSetsToList(currentAccessHashsets).ToArray();
|
||||
}
|
||||
|
||||
@@ -210,10 +210,10 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_accessReader.GetMainAccessReader(component.TargetAccessReaderId, out var accessReader))
|
||||
if (!_accessReader.GetMainAccessReader(component.TargetAccessReaderId, out var accessReaderEnt))
|
||||
return;
|
||||
|
||||
var oldTags = ConvertAccessHashSetsToList(accessReader.AccessLists);
|
||||
var oldTags = ConvertAccessHashSetsToList(accessReaderEnt.Value.Comp.AccessLists);
|
||||
var privilegedId = component.PrivilegedIdSlot.Item;
|
||||
|
||||
if (oldTags.SequenceEqual(newAccessList))
|
||||
@@ -242,10 +242,10 @@ public sealed class AccessOverriderSystem : SharedAccessOverriderSystem
|
||||
var removedTags = oldTags.Except(newAccessList).Select(tag => "-" + tag).ToList();
|
||||
|
||||
_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);
|
||||
Dirty(component.TargetAccessReaderId, accessReader);
|
||||
accessReaderEnt.Value.Comp.AccessLists = ConvertAccessListToHashSet(newAccessList);
|
||||
Dirty(accessReaderEnt.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -94,11 +94,11 @@ public sealed class GreytideVirusRule : StationEventSystem<GreytideVirusRuleComp
|
||||
continue;
|
||||
|
||||
// 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;
|
||||
|
||||
// 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;
|
||||
|
||||
// open and bolt airlocks
|
||||
|
||||
@@ -113,25 +113,25 @@ public sealed class AccessReaderSystem : EntitySystem
|
||||
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;
|
||||
if (!TryComp(uid, out AccessReaderComponent? accessReader))
|
||||
ent = null;
|
||||
if (!TryComp<AccessReaderComponent>(uid, out var accessReader))
|
||||
return false;
|
||||
|
||||
component = accessReader;
|
||||
ent = (uid, accessReader);
|
||||
|
||||
if (component.ContainerAccessProvider == null)
|
||||
if (ent.Value.Comp.ContainerAccessProvider == null)
|
||||
return true;
|
||||
|
||||
if (!_containerSystem.TryGetContainer(uid, component.ContainerAccessProvider, out var container))
|
||||
if (!_containerSystem.TryGetContainer(uid, ent.Value.Comp.ContainerAccessProvider, out var container))
|
||||
return true;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user