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;
|
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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user