public override void InnerDoorAction(ExtendedDoor door) { base.InnerDoorAction(door); if (AirlockState == AirlockState2.Neutral) { //If opening, request everything to close. if (door.door.Status == DoorStatus.Opening && !door.ProgramOpening) { outerOpenRequest = true; Depressurize(false); //Set to false while inner doors are open. SendLockRequest(components.inner); SendLockRequest(components.outer); AirlockState = AirlockState2.AwatingTotalLock; } } if (AirlockState == AirlockState2.InnerOpen) { if (InnerOpenCount <= 0) { Depressurize(true); //timeout = components.P.Time + TimeSpan.FromSeconds(components.secondsBeforeTimeout); timeout = components.P.Time + ventDeadline; startOxygenLevel = components.extendedVents[0].GetOxygenLevel(); AirlockState = AirlockState2.Depressurizing; } } }
private void DoorAction(ExtendedDoor me, ExtendedDoor other) { if (me.door.Status == DoorStatus.Opening && other.door.Status == DoorStatus.Opening) { //Something is f****d, close the doors. Has two people attempted to use the same airlock at the same time? me.door.CloseDoor(); other.door.CloseDoor(); } else if (me.door.Status == DoorStatus.Opening && !me.ProgramOpening) { if (!other.isManualDoor) { openRequest = true; } other.door.Enabled = false; } else if (me.door.Status == DoorStatus.Closed && other.door.Enabled == false && openRequest) { openRequest = false; other.door.Enabled = true; me.door.Enabled = false; other.ProgramOpen(); } else if (me.door.Status == DoorStatus.Closed && other.door.Status == DoorStatus.Closed) { me.door.Enabled = true; other.door.Enabled = true; } }
public override void OuterDoorAction(ExtendedDoor door) { base.OuterDoorAction(door); if (AirlockState == AirlockState2.Neutral) { //If opening, request everything to close. if (door.door.Status == DoorStatus.Opening && !door.ProgramOpening) { innerOpenRequest = true; SendLockRequest(components.inner); SendLockRequest(components.outer); AirlockState = AirlockState2.AwatingTotalLock; } } if (AirlockState == AirlockState2.OuterOpen) { if (OuterOpenCount <= 0) { EnableDoors(components.inner, true); AirlockState = AirlockState2.Neutral; } } }
public TinyAirlock(Program p, ExtendedDoor door1, ExtendedDoor door2) { P = p; this.door1 = door1; this.door2 = door2; door1.Subscribe(Door1Action); door2.Subscribe(Door2Action); }
public virtual void InnerDoorAction(ExtendedDoor door) { if (door.door.Status == DoorStatus.Opening) { InnerOpenCount++; } else if (door.door.Status == DoorStatus.Closed) { InnerOpenCount--; } }
public void InnerFunc(ExtendedDoor door) { innerChange = true; if (door.door.Status == DoorStatus.Opening) { innerOpen++; EnableDoors(outer, false); } if (door.door.Status == DoorStatus.Closed) { innerOpen--; } }
public void OuterSoloFunc(ExtendedDoor door) { outerChange = true; if (door.door.Status == DoorStatus.Opening) { for (int i = 0; i < outer.Length; i++) { if (outer[i] != door) { outer[i].door.Enabled = false; } } } if (door.door.Status == DoorStatus.Closed) { for (int i = 0; i < outer.Length; i++) { outer[i].door.Enabled = true; } } }
public AirlockComponents(Program p, ExtendedDoor outer, ExtendedDoor inner, ExtendedAirvent extendedVents) { P = p; this.outer = new List <ExtendedDoor> { outer }; this.inner = new List <ExtendedDoor> { inner }; this.extendedVents = new List <ExtendedAirvent> { extendedVents }; secondsBeforeTimeout = (float)P.settings[ID.Timeout].Value; neutral = (Color)P.settings[ID.DefaultLampColor].Value; working = (Color)P.settings[ID.ChangingLampColor].Value; float temp = (float)P.settings[ID.OxygenDifference].Value / 100; if (temp <= 1 && temp >= 0) { oxygenDifferenceRequired = temp; } }
public override void InnerDoorAction(ExtendedDoor door) { base.InnerDoorAction(door); }
public override void OuterDoorAction(ExtendedDoor door) { base.OuterDoorAction(door); }