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);
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
    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);
        }
    }