Пример #1
0
        void Main()
        {
            IMyDoor        door1   = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door1");
            IMyDoor        door2   = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door2");
            IMyDoor        door3   = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door3");
            IMyDoor        door4   = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door4");
            IMyDoor        door5   = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door5");
            IMySensorBlock sensor1 = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("Sensor1");
            IMySensorBlock sensor2 = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("Sensor1");
            IMySensorBlock sensor3 = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("Sensor1");
            IMySensorBlock sensor4 = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("Sensor1");
            IMySensorBlock sensor5 = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("Sensor1");

            if (sensor1.DetectPlayers == true &&
                door1.Open == false &&
                door2.Open == false &&
                door3.Open == false &&
                door4.Open == false &&
                door5.Open == false)
            {
                door1.GetActionWithName("Open_On").Apply(door1);
            }
            else if (sensor2.DetectPlayers == true &&
                     door1.Open == true &&
                     door2.Open == false &&
                     door3.Open == false &&
                     door4.Open == false &&
                     door5.Open == false)
            {
                door2.GetActionWithName("Open_On").Apply(door2);
            }
            else if (sensor3.DetectPlayers == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == false &&
                     door4.Open == false &&
                     door5.Open == false)
            {
                door3.GetActionWithName("Open_On").Apply(door3);
            }
            else if (sensor4.DetectPlayers == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == false &&
                     door5.Open == false)
            {
                door4.GetActionWithName("Open_On").Apply(door4);
            }
            else if (sensor5.DetectPlayers == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == false)
            {
                door5.GetActionWithName("Open_On").Apply(door5);
            }
            else
            {
                door1.GetActionWithName("Open_Off").Apply(door1);
                door2.GetActionWithName("Open_Off").Apply(door2);
                door3.GetActionWithName("Open_Off").Apply(door3);
                door4.GetActionWithName("Open_Off").Apply(door4);
                door5.GetActionWithName("Open_Off").Apply(door5);
            }
        }
Пример #2
0
        /// <summary>
        /// If a sensor is activated
        /// </summary>
        private void If_Activated()
        {
            IMyDoor door = null;

            for (int i = 0; i < sensors.Count; i++)
            {
                if (sensors [i].IsActive)
                {
                    string [] data = sensors [i].CustomData.Split(':');     //  The custom data string seperated by ':'

                    if (data.Length <= 1)
                    {
                        errorFLAG = 4;
                        errorText = $"Custom data on ({sensors [i].CustomName}) is missing custom data";
                        break;
                    }

                    string pressureInfo = Is_Under_Pressure(data [0]);      //  will see if the room is pressurized or not

                    if (pressureInfo == "Error")
                    {
                        errorFLAG = 4;
                        errorText = $"({data [0]}) has no vents.\n Check custom data on each vent\n for the Airlock";
                        break;
                    }

                    for (int j = 0; j < doors.Count; j++)
                    {
                        if (sensors [i].CustomData == doors [j].CustomData)     //  If sensor and door mhas matching custom data
                        {
                            door = doors [j];

                            if (data [1] == "Inside")   //  If the sensors custom data includes "Inside"
                            {
                                errorFLAG = 0;

                                if (pressureInfo == "100.00%" && pressureInfo != "0.00%" && pressureInfo != "Not pressurized") //  If the room is 100% pressurized; Open door
                                {
                                    door.GetActionWithName("OnOff_On").Apply(door);                                            //  Turn door on

                                    if (door.Status != DoorStatus.Opening || door.Status != DoorStatus.Open)                   //  If the door is not open or opening; Open door
                                    {
                                        door.OpenDoor();
                                    }
                                }
                                break;
                            }
                            else if (data [1] == "Outside")     //  If the sensors custom data include "Outside"
                            {
                                //errorText = $"(Info) - pressureInfo";

                                errorFLAG = 0;

                                if (pressureInfo == "0.00%" && pressureInfo != "100.00%" || pressureInfo == "Not pressurized") //  If the room not pressuzrized; Open door
                                {
                                    door.GetActionWithName("OnOff_On").Apply(door);                                            //  Turn door on

                                    if (door.Status != DoorStatus.Opening || door.Status != DoorStatus.Open)                   //  If door is not open or opening; Open door
                                    {
                                        door.OpenDoor();
                                    }
                                }
                                break;
                            }
                            else
                            {
                                errorFLAG = 4;
                                errorText = $"({data [0]}) has erros. Activated sensor does not include \"Inside\" or \"Outside\"";
                                break;
                            }
                        }
                    }

                    if (door == null)
                    {
                        errorFLAG = 4;
                        errorText = $"No Custom data on airlock doors is matching sensor ({sensors [i].CustomName})";
                    }
                    break;
                }
            }
        }
        void Main()
        {
            /****************
            * DOOR VARIABLES
            * **************/
            IMyDoor door1 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door1");
            IMyDoor door2 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door2");
            IMyDoor door3 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door3");
            IMyDoor door4 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door4");
            IMyDoor door5 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door5");
            IMyDoor door6 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door6");
            IMyDoor door7 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door7");
            IMyDoor door8 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door8");
            IMyDoor door9 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door9");

            /****************
            * SENSOR VARIABLES
            * **************/

            IMySensorBlock sensor1     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorBlack");
            IMySensorBlock sensor2     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorBlue");
            IMySensorBlock sensor3     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorCyan");
            IMySensorBlock sensor4     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorGreen");
            IMySensorBlock sensor5     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorLBlue");
            IMySensorBlock sensor6     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorOrange");
            IMySensorBlock sensor7     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorPink");
            IMySensorBlock sensor8     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorWhite");
            IMySensorBlock sensor9     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorYellow");
            IMySensorBlock resetSensor = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorReset");

            /****************
            * ROTOR VARIABLES
            * **************/

            IMyMotorStator blackRotor     = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("BlackRotor");
            IMyMotorStator blueRotor      = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("BlueRotor");
            IMyMotorStator cyanRotor      = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("CyanRotor");
            IMyMotorStator greenRotor     = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("GreenRotor");
            IMyMotorStator lightBlueRotor = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("LightBlueRotor");
            IMyMotorStator orangeRotor    = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("OrangeRotor");
            IMyMotorStator pinkRotor      = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("PinkRotor");
            IMyMotorStator whiteRotor     = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("WhiteRotor");
            IMyMotorStator yellowRotor    = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("YellowRotor");

            /****************
            * SPOTLIGHT VARIABLES
            * **************/

            IMyReflectorLight spotlightBlack     = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightBlack");
            IMyReflectorLight spotlightBlue      = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightBlue");
            IMyReflectorLight spotlightCyan      = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightCyan");
            IMyReflectorLight spotlightGreen     = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightGreen");
            IMyReflectorLight spotlightLightBlue = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightLightBlue");
            IMyReflectorLight spotlightOrange    = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightOrange");
            IMyReflectorLight spotlightPink      = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightPink");
            IMyReflectorLight spotlightWhite     = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightWhite");
            IMyReflectorLight spotlightYellow    = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightYellow");


            //SUCCESS
            //Black door
            if (sensor1.IsActive == true &&
                door1.Open == false &&
                door2.Open == false &&
                door3.Open == false &&
                door4.Open == false &&
                door5.Open == false &&
                door6.Open == false &&
                door7.Open == false &&
                door8.Open == false &&
                door9.Open == false)
            {
                door1.GetActionWithName("Open_On").Apply(door1);
                sensor1.GetActionWithName("OnOff_Off").Apply(sensor1);
                blueRotor.GetActionWithName("ResetVelocity").Apply(blueRotor);
                spotlightBlue.GetActionWithName("IncreaseBlink Interval").Apply(spotlightBlue);
                resetSensor.GetActionWithName("OnOff_On").Apply(resetSensor);


                for (int i = 0; i < 6; i += 3)
                {
                    blackRotor.GetActionWithName("IncreaseVelocity").Apply(blackRotor);
                }
                spotlightBlack.GetActionWithName("DecreaseBlink Interval").Apply(spotlightBlack);
            }

            //Blue door
            else if (sensor2.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == false &&
                     door3.Open == false &&
                     door4.Open == false &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door2.GetActionWithName("Open_On").Apply(door2);
                sensor2.GetActionWithName("OnOff_Off").Apply(sensor2);
                cyanRotor.GetActionWithName("ResetVelocity").Apply(cyanRotor);
                spotlightCyan.GetActionWithName("IncreaseBlink Interval").Apply(spotlightCyan);

                for (int i = 0; i < 6; i += 3)
                {
                    blueRotor.GetActionWithName("IncreaseVelocity").Apply(blueRotor);
                }
                spotlightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightBlue);
            }

            //Cyan door
            else if (sensor3.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == false &&
                     door4.Open == false &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door3.GetActionWithName("Open_On").Apply(door3);
                sensor3.GetActionWithName("OnOff_Off").Apply(sensor3);
                greenRotor.GetActionWithName("ResetVelocity").Apply(greenRotor);
                spotlightGreen.GetActionWithName("IncreaseBlink Interval").Apply(spotlightGreen);

                for (int i = 0; i < 6; i += 3)
                {
                    cyanRotor.GetActionWithName("IncreaseVelocity").Apply(cyanRotor);
                }
                spotlightCyan.GetActionWithName("DecreaseBlink Interval").Apply(spotlightCyan);
            }

            //Green door
            else if (sensor4.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == false &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door4.GetActionWithName("Open_On").Apply(door4);
                sensor4.GetActionWithName("OnOff_Off").Apply(sensor4);
                lightBlueRotor.GetActionWithName("ResetVelocity").Apply(lightBlueRotor);
                spotlightLightBlue.GetActionWithName("IncreaseBlink Interval").Apply(spotlightLightBlue);

                for (int i = 0; i < 6; i += 3)
                {
                    greenRotor.GetActionWithName("IncreaseVelocity").Apply(greenRotor);
                }
                spotlightGreen.GetActionWithName("DecreaseBlink Interval").Apply(spotlightGreen);
            }

            //Light blue door
            else if (sensor5.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door5.GetActionWithName("Open_On").Apply(door5);
                sensor5.GetActionWithName("OnOff_Off").Apply(sensor5);
                orangeRotor.GetActionWithName("ResetVelocity").Apply(orangeRotor);
                spotlightOrange.GetActionWithName("IncreaseBlink Interval").Apply(spotlightOrange);

                for (int i = 0; i < 6; i += 3)
                {
                    lightBlueRotor.GetActionWithName("IncreaseVelocity").Apply(lightBlueRotor);
                }
                spotlightLightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightLightBlue);
            }

            //Orange door
            else if (sensor6.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door6.GetActionWithName("Open_On").Apply(door6);
                sensor6.GetActionWithName("OnOff_Off").Apply(sensor6);
                pinkRotor.GetActionWithName("ResetVelocity").Apply(pinkRotor);
                spotlightPink.GetActionWithName("IncreaseBlink Interval").Apply(spotlightPink);

                for (int i = 0; i < 6; i += 3)
                {
                    orangeRotor.GetActionWithName("IncreaseVelocity").Apply(orangeRotor);
                }
                spotlightOrange.GetActionWithName("DecreaseBlink Interval").Apply(spotlightOrange);
            }

            //Pink rotor
            else if (sensor7.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == true &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door7.GetActionWithName("Open_On").Apply(door7);
                sensor7.GetActionWithName("OnOff_Off").Apply(sensor7);
                whiteRotor.GetActionWithName("ResetVelocity").Apply(whiteRotor);
                spotlightWhite.GetActionWithName("IncreaseBlink Interval").Apply(spotlightWhite);

                for (int i = 0; i < 6; i += 3)
                {
                    pinkRotor.GetActionWithName("IncreaseVelocity").Apply(pinkRotor);
                }
                spotlightPink.GetActionWithName("DecreaseBlink Interval").Apply(spotlightPink);
            }

            //White rotor
            else if (sensor8.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == true &&
                     door7.Open == true &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door8.GetActionWithName("Open_On").Apply(door8);
                sensor8.GetActionWithName("OnOff_Off").Apply(sensor8);
                yellowRotor.GetActionWithName("ResetVelocity").Apply(yellowRotor);
                spotlightYellow.GetActionWithName("IncreaseBlink Interval").Apply(spotlightYellow);

                for (int i = 0; i < 6; i += 3)
                {
                    whiteRotor.GetActionWithName("IncreaseVelocity").Apply(whiteRotor);
                }
                spotlightWhite.GetActionWithName("DecreaseBlink Interval").Apply(spotlightWhite);
            }

            //Yellow door
            else if (sensor9.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == true &&
                     door7.Open == true &&
                     door8.Open == true &&
                     door9.Open == false)
            {
                door9.GetActionWithName("Open_On").Apply(door9);
                sensor9.GetActionWithName("OnOff_Off").Apply(sensor9);

                for (int i = 0; i < 6; i += 3)
                {
                    yellowRotor.GetActionWithName("IncreaseVelocity").Apply(yellowRotor);
                }
                spotlightYellow.GetActionWithName("DecreaseBlink Interval").Apply(spotlightYellow);
            }

            //FAILURE
            else
            {
                //Reset doors
                door1.GetActionWithName("Open_Off").Apply(door1);
                door2.GetActionWithName("Open_Off").Apply(door2);
                door3.GetActionWithName("Open_Off").Apply(door3);
                door4.GetActionWithName("Open_Off").Apply(door4);
                door5.GetActionWithName("Open_Off").Apply(door5);
                door6.GetActionWithName("Open_Off").Apply(door6);
                door7.GetActionWithName("Open_Off").Apply(door7);
                door8.GetActionWithName("Open_Off").Apply(door8);
                door9.GetActionWithName("Open_Off").Apply(door9);

                //Reset sensors
                sensor1.GetActionWithName("OnOff_On").Apply(sensor1);
                sensor2.GetActionWithName("OnOff_On").Apply(sensor2);
                sensor3.GetActionWithName("OnOff_On").Apply(sensor3);
                sensor4.GetActionWithName("OnOff_On").Apply(sensor4);
                sensor5.GetActionWithName("OnOff_On").Apply(sensor5);
                sensor6.GetActionWithName("OnOff_On").Apply(sensor6);
                sensor7.GetActionWithName("OnOff_On").Apply(sensor7);
                sensor8.GetActionWithName("OnOff_On").Apply(sensor8);
                sensor9.GetActionWithName("OnOff_On").Apply(sensor9);

                //Reset rotors
                blackRotor.GetActionWithName("ResetVelocity").Apply(blackRotor);
                blueRotor.GetActionWithName("ResetVelocity").Apply(blueRotor);
                cyanRotor.GetActionWithName("ResetVelocity").Apply(cyanRotor);
                greenRotor.GetActionWithName("ResetVelocity").Apply(greenRotor);
                lightBlueRotor.GetActionWithName("ResetVelocity").Apply(lightBlueRotor);
                orangeRotor.GetActionWithName("ResetVelocity").Apply(orangeRotor);
                pinkRotor.GetActionWithName("ResetVelocity").Apply(pinkRotor);
                whiteRotor.GetActionWithName("ResetVelocity").Apply(whiteRotor);
                yellowRotor.GetActionWithName("ResetVelocity").Apply(yellowRotor);

                for (int i = 0; i < 6; i += 3)
                {
                    blueRotor.GetActionWithName("IncreaseVelocity").Apply(blueRotor);
                    cyanRotor.GetActionWithName("IncreaseVelocity").Apply(cyanRotor);
                    greenRotor.GetActionWithName("IncreaseVelocity").Apply(greenRotor);
                    lightBlueRotor.GetActionWithName("IncreaseVelocity").Apply(lightBlueRotor);
                    orangeRotor.GetActionWithName("IncreaseVelocity").Apply(orangeRotor);
                    pinkRotor.GetActionWithName("IncreaseVelocity").Apply(pinkRotor);
                    whiteRotor.GetActionWithName("IncreaseVelocity").Apply(whiteRotor);
                    yellowRotor.GetActionWithName("IncreaseVelocity").Apply(yellowRotor);
                }

                //Reset spotlights
                spotlightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightBlue);
                spotlightCyan.GetActionWithName("DecreaseBlink Interval").Apply(spotlightCyan);
                spotlightGreen.GetActionWithName("DecreaseBlink Interval").Apply(spotlightGreen);
                spotlightLightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightLightBlue);
                spotlightOrange.GetActionWithName("DecreaseBlink Interval").Apply(spotlightOrange);
                spotlightPink.GetActionWithName("DecreaseBlink Interval").Apply(spotlightPink);
                spotlightWhite.GetActionWithName("DecreaseBlink Interval").Apply(spotlightWhite);
                spotlightYellow.GetActionWithName("DecreaseBlink Interval").Apply(spotlightYellow);

                if (spotlightBlack.BlinkIntervalSeconds < 1.5)
                {
                    spotlightBlack.GetActionWithName("IncreaseBlink Interval").Apply(spotlightBlack);
                }
            }
        }