示例#1
0
        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;
                }
            }
        }
示例#2
0
 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;
     }
 }
示例#3
0
        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;
                }
            }
        }
示例#4
0
 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;
         }
     }
 }
示例#8
0
        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;
            }
        }
示例#9
0
 public override void InnerDoorAction(ExtendedDoor door)
 {
     base.InnerDoorAction(door);
 }
示例#10
0
 public override void OuterDoorAction(ExtendedDoor door)
 {
     base.OuterDoorAction(door);
 }