Exemplo n.º 1
0
        public bool IsPlatformSafe(TrackedPlatform platform)
        {
            double displacement = CalculatePlatformDisplacement(platform);

            gridProgramRef.Echo("Platform displacement = {displacement}");
            gridProgramRef.Echo("X1: {platform.X1} X2: {platform.X2}");
            gridProgramRef.Echo("Y1: {platform.Y1} Y2: {platform.Y2}");
            return(false);
        }
Exemplo n.º 2
0
        public double CalculatePlatformDisplacement(TrackedPlatform platform)
        {
            List <double> distancelist = new List <double>
            {
                platform.X1,
                platform.X2,
                platform.Y1,
                platform.Y2
            };

            distancelist.Sort();
            return(distancelist[3] - distancelist[0]);
        }
Exemplo n.º 3
0
        public void Main(string arguments, UpdateType updateSource)
        {
            if (arguments == "i")
            {
                GridProgram       = new GridProgramRef(GridTerminalSystem, null, Echo, Me);
                GridProgram.Utils = new UtilsClass(GridProgram);
                BlueprintDefinitions.Initialize(GridProgram);
                Echo("Initialized blueprint definitions.");
                Echo($"{BlueprintDefinitions.blueprints.Count} definitions loaded.");
                projectionController = new ProjectionController(GridProgram, "Projector", ProjectorState.Unpowered);
                projectionController.SetProjectorState(ProjectorState.Powered);
                if (!projectionController.Projector.IsProjecting)
                {
                    Echo("Projector wasn't projecting.");
                    return;
                }
                Dictionary <string, int> components = projectionController.GetRequiredComponents();
                foreach (KeyValuePair <string, int> kvp in components)
                {
                    Echo($"{kvp.Key}: {kvp.Value}");
                }
            }
            if (arguments == "a")
            {
                List <IMyAssembler> assemblers = new List <IMyAssembler>();
                GridTerminalSystem.GetBlocksOfType(assemblers);
                IMyAssembler   assembler = assemblers[0];
                IMyTextPanel   textpanel = GridTerminalSystem.GetBlockWithName("TXTPNL") as IMyTextPanel;
                MyDefinitionId id        = MyDefinitionId.Parse("MyObjectBuilder_BlueprintDefinition/BulletproofGlass");
                assembler.AddQueueItem(id, 1.0);
                return;
            }
            if (arguments == "p")
            {
                IMyTextPanel textpanel = GridTerminalSystem.GetBlockWithName("TXTPNL") as IMyTextPanel;
                textpanel.WriteText(projectionController.Projector.DetailedInfo);
                return;
            }
            if (arguments == "m")
            {
                return;
            }
            switch (internal_state)
            {
            case 0:
                // config
                try
                {
                    GridProgram          = new GridProgramRef(GridTerminalSystem, null, Echo, Me);
                    GridProgram.Utils    = new UtilsClass(GridProgram);
                    platformMotor        = new PlatformMotor(GridProgram, "Pistons", new MotorConfig(0.05f, 10f, 0.05f, MotorExtendType.POSITIVE));
                    platformTracker      = new PlatformTracker(new TrackerConfig(GridProgram, "Camera X1", "Camera X2", "Camera Y1", "Camera Y2", 370), GridProgram);
                    welderController     = new WelderController(GridProgram, new WelderConfig("Welders", WelderState.Unpowered));
                    cargoController      = new CargoController(GridProgram, true);
                    projectionController = new ProjectionController(GridProgram, "Projector", ProjectorState.Unpowered);
                    platformTracker.EnableRaycast();
                    internal_state = 1;
                }
                catch (Exception ex)
                {
                    Echo($"Execution halted, safeguard violation raised in {ex.TargetSite}: {ex.Message}");
                }
                break;

            case 1:
                try
                {
                    platformMotor.SetMotorState(MotorState.Extend);
                    internal_state = 2;
                }
                catch (Exception ex)
                {
                    Echo($"Execution halted, safeguard violation raised in {ex.TargetSite}: {ex.Message}");
                }
                break;

            case 2:
                try
                {
                    TrackedPlatform tp = platformTracker.Track();
                    platformTracker.IsPlatformSafe(tp);
                }
                catch (Exception ex)
                {
                    Echo($"Execution halted, safeguard violation raised in {ex.TargetSite}: {ex.Message}");
                }
                break;
            }
        }