private void Undock(DockingComponent dock) { if (dock.DockedWith == null) { DebugTools.Assert(false); _sawmill.Error($"Tried to undock {(dock).Owner} but not docked with anything?"); return; } if (TryComp(dock.Owner, out DoorComponent? doorA)) { doorA.ChangeAirtight = true; _doorSystem.TryClose(doorA.Owner, doorA); } if (TryComp(dock.DockedWith, out DoorComponent? doorB)) { doorB.ChangeAirtight = true; _doorSystem.TryClose(doorB.Owner, doorB); } var recentlyDocked = EnsureComp <RecentlyDockedComponent>(dock.Owner); recentlyDocked.LastDocked = dock.DockedWith.Value; recentlyDocked = EnsureComp <RecentlyDockedComponent>(dock.DockedWith.Value); recentlyDocked.LastDocked = dock.DockedWith.Value; Cleanup(dock); }
private void OnSignalReceived(EntityUid uid, DoorSignalControlComponent component, SignalReceivedEvent args) { if (!TryComp(uid, out DoorComponent? door)) { return; } if (args.Port == component.OpenPort) { if (door.State != DoorState.Open) { _doorSystem.TryOpen(uid, door); } } else if (args.Port == component.ClosePort) { if (door.State != DoorState.Closed) { _doorSystem.TryClose(uid, door); } } else if (args.Port == component.TogglePort) { _doorSystem.TryToggleDoor(uid, door); } }
public void Undock(DockingComponent dock) { if (dock.DockedWith == null) { return; } if (TryComp <AirlockComponent>(dock.Owner, out var airlockA)) { airlockA.SetBoltsWithAudio(false); } if (TryComp <AirlockComponent>(dock.DockedWith, out var airlockB)) { airlockB.SetBoltsWithAudio(false); } if (TryComp(dock.Owner, out DoorComponent? doorA)) { doorA.ChangeAirtight = true; _doorSystem.TryClose(doorA.Owner, doorA); } if (TryComp(dock.DockedWith, out DoorComponent? doorB)) { doorB.ChangeAirtight = true; _doorSystem.TryClose(doorB.Owner, doorB); } if (!Deleted(dock.Owner)) { var recentlyDocked = EnsureComp <RecentlyDockedComponent>(dock.Owner); recentlyDocked.LastDocked = dock.DockedWith.Value; } if (!Deleted(dock.DockedWith.Value)) { var recentlyDocked = EnsureComp <RecentlyDockedComponent>(dock.DockedWith.Value); recentlyDocked.LastDocked = dock.DockedWith.Value; } Cleanup(dock); }
private void SetDockBolts(EntityUid uid, bool enabled) { foreach (var(_, door, xform) in EntityQuery <DockingComponent, AirlockComponent, TransformComponent>(true)) { if (xform.ParentUid != uid) { continue; } _doors.TryClose(door.Owner); door.SetBoltsWithAudio(enabled); } }