Blast door/shutter, timer and or gate device linking fixes (#16347)
This commit is contained in:
@@ -500,15 +500,31 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem
|
||||
if (!configurator.ActiveDeviceLink.HasValue || !configurator.DeviceLinkTarget.HasValue)
|
||||
return;
|
||||
|
||||
if (HasComp<DeviceLinkSourceComponent>(configurator.ActiveDeviceLink))
|
||||
if (HasComp<DeviceLinkSourceComponent>(configurator.ActiveDeviceLink) && HasComp<DeviceLinkSinkComponent>(configurator.DeviceLinkTarget))
|
||||
{
|
||||
_deviceLinkSystem.RemoveSinkFromSource(configurator.ActiveDeviceLink.Value, configurator.DeviceLinkTarget.Value);
|
||||
UpdateLinkUiState(uid, configurator.ActiveDeviceLink.Value, configurator.DeviceLinkTarget.Value);
|
||||
_deviceLinkSystem.RemoveSinkFromSource(
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
configurator.DeviceLinkTarget.Value
|
||||
);
|
||||
|
||||
UpdateLinkUiState(
|
||||
uid,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
configurator.DeviceLinkTarget.Value
|
||||
);
|
||||
}
|
||||
else if (HasComp<DeviceLinkSourceComponent>(configurator.DeviceLinkTarget))
|
||||
else if (HasComp<DeviceLinkSourceComponent>(configurator.DeviceLinkTarget) && HasComp<DeviceLinkSinkComponent>(configurator.ActiveDeviceLink))
|
||||
{
|
||||
_deviceLinkSystem.RemoveSinkFromSource(configurator.DeviceLinkTarget.Value, configurator.ActiveDeviceLink.Value);
|
||||
UpdateLinkUiState(uid, configurator.DeviceLinkTarget.Value, configurator.ActiveDeviceLink.Value);
|
||||
_deviceLinkSystem.RemoveSinkFromSource(
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
configurator.ActiveDeviceLink.Value
|
||||
);
|
||||
|
||||
UpdateLinkUiState(
|
||||
uid,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
configurator.ActiveDeviceLink.Value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -517,15 +533,33 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem
|
||||
if (!configurator.ActiveDeviceLink.HasValue || !configurator.DeviceLinkTarget.HasValue)
|
||||
return;
|
||||
|
||||
if (TryComp(configurator.ActiveDeviceLink, out DeviceLinkSourceComponent? activeSource))
|
||||
if (TryComp(configurator.ActiveDeviceLink, out DeviceLinkSourceComponent? activeSource) && TryComp(configurator.DeviceLinkTarget, out DeviceLinkSinkComponent? targetSink))
|
||||
{
|
||||
_deviceLinkSystem.ToggleLink(args.Session.AttachedEntity, configurator.ActiveDeviceLink.Value, configurator.DeviceLinkTarget.Value, args.Source, args.Sink, activeSource);
|
||||
_deviceLinkSystem.ToggleLink(
|
||||
args.Session.AttachedEntity,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
args.Source, args.Sink,
|
||||
activeSource, targetSink);
|
||||
|
||||
UpdateLinkUiState(uid, configurator.ActiveDeviceLink.Value, configurator.DeviceLinkTarget.Value, activeSource);
|
||||
}
|
||||
else if (TryComp(configurator.DeviceLinkTarget, out DeviceLinkSourceComponent? targetSource))
|
||||
else if (TryComp(configurator.DeviceLinkTarget, out DeviceLinkSourceComponent? targetSource) && TryComp(configurator.ActiveDeviceLink, out DeviceLinkSinkComponent? activeSink))
|
||||
{
|
||||
_deviceLinkSystem.ToggleLink(args.Session.AttachedEntity, configurator.DeviceLinkTarget.Value, configurator.ActiveDeviceLink.Value, args.Source, args.Sink, targetSource);
|
||||
UpdateLinkUiState(uid, configurator.DeviceLinkTarget.Value, configurator.ActiveDeviceLink.Value, targetSource);
|
||||
_deviceLinkSystem.ToggleLink(
|
||||
args.Session.AttachedEntity,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
args.Source, args.Sink,
|
||||
targetSource, activeSink
|
||||
);
|
||||
|
||||
UpdateLinkUiState(
|
||||
uid,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
targetSource
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -537,15 +571,41 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem
|
||||
if (!configurator.ActiveDeviceLink.HasValue || !configurator.DeviceLinkTarget.HasValue)
|
||||
return;
|
||||
|
||||
if (TryComp(configurator.ActiveDeviceLink, out DeviceLinkSourceComponent? activeSource))
|
||||
if (TryComp(configurator.ActiveDeviceLink, out DeviceLinkSourceComponent? activeSource) && TryComp(configurator.DeviceLinkTarget, out DeviceLinkSinkComponent? targetSink))
|
||||
{
|
||||
_deviceLinkSystem.SaveLinks(args.Session.AttachedEntity, configurator.ActiveDeviceLink.Value, configurator.DeviceLinkTarget.Value, args.Links, activeSource);
|
||||
UpdateLinkUiState(uid, configurator.ActiveDeviceLink.Value, configurator.DeviceLinkTarget.Value, activeSource);
|
||||
_deviceLinkSystem.SaveLinks(
|
||||
args.Session.AttachedEntity,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
args.Links,
|
||||
activeSource,
|
||||
targetSink
|
||||
);
|
||||
|
||||
UpdateLinkUiState(
|
||||
uid,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
activeSource
|
||||
);
|
||||
}
|
||||
else if (TryComp(configurator.DeviceLinkTarget, out DeviceLinkSourceComponent? targetSource))
|
||||
else if (TryComp(configurator.DeviceLinkTarget, out DeviceLinkSourceComponent? targetSource) && TryComp(configurator.ActiveDeviceLink, out DeviceLinkSinkComponent? activeSink))
|
||||
{
|
||||
_deviceLinkSystem.SaveLinks(args.Session.AttachedEntity, configurator.DeviceLinkTarget.Value, configurator.ActiveDeviceLink.Value, args.Links, targetSource);
|
||||
UpdateLinkUiState(uid, configurator.DeviceLinkTarget.Value, configurator.ActiveDeviceLink.Value, targetSource);
|
||||
_deviceLinkSystem.SaveLinks(
|
||||
args.Session.AttachedEntity,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
args.Links,
|
||||
targetSource,
|
||||
activeSink
|
||||
);
|
||||
|
||||
UpdateLinkUiState(
|
||||
uid,
|
||||
configurator.DeviceLinkTarget.Value,
|
||||
configurator.ActiveDeviceLink.Value,
|
||||
targetSource
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -587,7 +647,7 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem
|
||||
|
||||
_popupSystem.PopupCursor(Loc.GetString(resultText), args.Session, PopupType.Medium);
|
||||
_uiSystem.TrySetUiState(
|
||||
component.Owner,
|
||||
uid,
|
||||
NetworkConfiguratorUiKey.Configure,
|
||||
new DeviceListUserInterfaceState(
|
||||
_deviceListSystem.GetDeviceList(component.ActiveDeviceList.Value)
|
||||
|
||||
Reference in New Issue
Block a user