public Program()
        {
            subsystemManager        = new SubsystemManager(this);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            // Add subsystems
            AutopilotSubsystem autopilotSubsystem = new AutopilotSubsystem();
            IntelSubsystem     intelSubsystem     = new IntelSubsystem();
            DockingSubsystem   dockingSubsystem   = new DockingSubsystem(intelSubsystem);

            LocustCombatSystem combatSubsystem = new LocustCombatSystem();

            subsystemManager.AddSubsystem("autopilot", autopilotSubsystem);
            subsystemManager.AddSubsystem("docking", dockingSubsystem);
            subsystemManager.AddSubsystem("intel", intelSubsystem);
            subsystemManager.AddSubsystem("combat", combatSubsystem);

            AgentSubsystem           agentSubsystem         = new AgentSubsystem(intelSubsystem, AgentClass.Bomber);
            UndockFirstTaskGenerator undockingTaskGenerator = new UndockFirstTaskGenerator(this, autopilotSubsystem, dockingSubsystem);

            undockingTaskGenerator.AddTaskGenerator(new WaypointTaskGenerator(this, autopilotSubsystem));
            undockingTaskGenerator.AddTaskGenerator(new DockTaskGenerator(this, autopilotSubsystem, dockingSubsystem));

            undockingTaskGenerator.AddTaskGenerator(new LocustAttackTaskGenerator(this, combatSubsystem, autopilotSubsystem, agentSubsystem));

            agentSubsystem.AddTaskGenerator(undockingTaskGenerator);
            agentSubsystem.AddTaskGenerator(new SetHomeTaskGenerator(this, dockingSubsystem));
            subsystemManager.AddSubsystem("agent", agentSubsystem);

            subsystemManager.DeserializeManager(Storage);
        }
Exemple #2
0
        public Program()
        {
            subsystemManager        = new SubsystemManager(this, null);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            // Add subsystems
            // Intel system setup
            IIntelProvider intelSubsystem;

            intelSubsystem = new IntelSubsystem();

            subsystemManager.AddSubsystem("intel", (ISubsystem)intelSubsystem);

            //// Looking Glass Setup
            //LookingGlassNetworkSubsystem lookingGlassNetwork = new LookingGlassNetworkSubsystem(intelSubsystem);
            //subsystemManager.AddSubsystem("lookingglass", lookingGlassNetwork);
            //
            //// Hangar system setup
            //HangarSubsystem hangarSubsystem = new HangarSubsystem(intelSubsystem);
            //subsystemManager.AddSubsystem("hangar", hangarSubsystem);
            //
            //// Seeing-Eye scanner setup
            subsystemManager.AddSubsystem("scanner", new ScannerNetworkSubsystem(intelSubsystem, "SE"));
            //
            //// Inventory system setup
            //InventoryManagerSubsystem inventorySubsystem = new InventoryManagerSubsystem();
            //inventorySubsystem.RegisterRequester(hangarSubsystem);
            //subsystemManager.AddSubsystem("inventory", inventorySubsystem);
            //
            //// Command system setup
            //TextCommandSubsystem textCommandSubsystem = new TextCommandSubsystem(intelSubsystem);
            //subsystemManager.AddSubsystem("command", textCommandSubsystem);

            subsystemManager.DeserializeManager(Storage);
        }
        public Program()
        {
            Context                 = new ExecutionContext(this);
            subsystemManager        = new SubsystemManager(Context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            AutopilotSubsystem         = new AutopilotSubsystem();
            AutopilotSubsystem.Persist = true;

            IntelSubsystem      = new IntelSubsystem();
            Context.IntelSystem = IntelSubsystem;

            CombatSubsystem     = new HornetCombatSubsystem(IntelSubsystem);
            LookingGlassNetwork = new LookingGlassNetworkSubsystem(IntelSubsystem, "LG", false, false);
            AgentSubsystem      = new AgentSubsystem(IntelSubsystem, AgentClass.None);
            TaskGenerator       = new HornetAttackTaskGenerator(this, CombatSubsystem, AutopilotSubsystem, AgentSubsystem, null, IntelSubsystem);
            AgentSubsystem.AddTaskGenerator(TaskGenerator);
            TaskGenerator.HornetAttackTask.FocusedTarget = true;
            CombatLoaderSubsystem = new CombatLoaderSubsystem("Fermi Cargo", "Combat Supplies");
            TorpedoSubsystem      = new TorpedoSubsystem(IntelSubsystem);

            ScannerSubsystem = new ScannerNetworkSubsystem(IntelSubsystem);
            LookingGlassNetwork.AddPlugin("combat", new LookingGlass_Fermi(this));

            subsystemManager.AddSubsystem("autopilot", AutopilotSubsystem);
            subsystemManager.AddSubsystem("intel", IntelSubsystem);
            subsystemManager.AddSubsystem("combat", CombatSubsystem);
            subsystemManager.AddSubsystem("agent", AgentSubsystem);
            subsystemManager.AddSubsystem("scanner", ScannerSubsystem);
            subsystemManager.AddSubsystem("lookingglass", LookingGlassNetwork);
            subsystemManager.AddSubsystem("torpedo", TorpedoSubsystem);
            subsystemManager.AddSubsystem("loader", CombatLoaderSubsystem);

            subsystemManager.DeserializeManager(Storage);
        }
        public Program()
        {
            subsystemManager        = new SubsystemManager(this);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            SensorSubsystem             = new ScannerNetworkSubsystem(IntelProvider, "SE", 100, 0);
            HummingbirdCommandSubsystem = new HummingbirdCommandSubsystem(IntelProvider, SensorSubsystem);

            subsystemManager.AddSubsystem("intel", IntelProvider);
            subsystemManager.AddSubsystem("sensor", SensorSubsystem);
            subsystemManager.AddSubsystem("hummingbird", HummingbirdCommandSubsystem);

            subsystemManager.DeserializeManager(Storage);
        }
Exemple #5
0
        public Program()
        {
            subsystemManager        = new SubsystemManager(this);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            // Add subsystems
            subsystemManager.AddSubsystem("autopilot", new AutopilotSubsystem());
            subsystemManager.AddSubsystem("docking", new DockingSubsystem());

            IntelSlaveSubsystem subsystem = new IntelSlaveSubsystem();

            subsystemManager.AddSubsystem("intel", subsystem);
            subsystemManager.AddSubsystem("sensor", new LookingGlass(subsystem));
            subsystemManager.DeserializeManager(Storage);
        }
Exemple #6
0
        public Program()
        {
            subsystemManager            = new SubsystemManager(this, null, false);
            subsystemManager.OutputMode = OutputMode.Debug;
            Runtime.UpdateFrequency     = UpdateFrequency.Update1;

            GridTerminalSystem.GetBlocksOfType <IMyTerminalBlock>(null, CollectBlocks);

            if (Cockpit != null)
            {
                Drive = new AtmoDrive(Cockpit, 5, Me);
            }

            if (Drive != null)
            {
                Drive.MaxAngleDegrees = 1;
                subsystemManager.AddSubsystem("autopilot", Drive);
            }
            else
            {
                Runtime.UpdateFrequency = UpdateFrequency.None;
                Echo("CANNOT FIND COCKPIT TAGGED [SPINMINER]");
            }

            ParseConfigs();
        }
Exemple #7
0
        public Program()
        {
            Context = new ExecutionContext(this);

            subsystemManager        = new SubsystemManager(Context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            AutopilotSubsystem  = new AutopilotSubsystem();
            IntelSubsystem      = new IntelSubsystem();
            Context.IntelSystem = IntelSubsystem;

            MiningSubsystem     = new HoneybeeMiningSystem();
            LookingGlassNetwork = new LookingGlassNetworkSubsystem(IntelSubsystem, "LG", false, false);
            AgentSubsystem      = new AgentSubsystem(IntelSubsystem, AgentClass.Fighter);
            MonitorSubsystem    = new MonitorSubsystem(IntelSubsystem);
            var loader  = new CombatLoaderSubsystem("Pascal Cargo", "Base Cargo");
            var docking = new DockingSubsystem(IntelSubsystem, loader);

            ScannerSubsystem = new ScannerNetworkSubsystem(IntelSubsystem);
            LookingGlassNetwork.AddPlugin("combat", new LookingGlass_Pascal(this));


            subsystemManager.AddSubsystem("indicator", new StatusIndicatorSubsystem(docking, IntelSubsystem));

            subsystemManager.AddSubsystem("autopilot", AutopilotSubsystem);
            subsystemManager.AddSubsystem("intel", IntelSubsystem);
            subsystemManager.AddSubsystem("mining", MiningSubsystem);
            subsystemManager.AddSubsystem("scanner", ScannerSubsystem);
            subsystemManager.AddSubsystem("lookingglass", LookingGlassNetwork);
            subsystemManager.AddSubsystem("monitor", MonitorSubsystem);
            subsystemManager.AddSubsystem("loader", loader);
            subsystemManager.AddSubsystem("docking", docking);

            var MiningTaskGenerator  = new HoneybeeMiningTaskGenerator(this, MiningSubsystem, AutopilotSubsystem, AgentSubsystem, null, null, null, IntelSubsystem, MonitorSubsystem);
            var HomingTaskGenerator  = new SetHomeTaskGenerator(this, docking);
            var DockingTaskGenerator = new DockTaskGenerator(this, AutopilotSubsystem, docking);

            AgentSubsystem.AddTaskGenerator(MiningTaskGenerator);
            AgentSubsystem.AddTaskGenerator(HomingTaskGenerator);
            AgentSubsystem.AddTaskGenerator(DockingTaskGenerator);

            subsystemManager.AddSubsystem("agent", AgentSubsystem);

            subsystemManager.DeserializeManager(Storage);
        }
        public Program()
        {
            Context = new ExecutionContext(this);

            subsystemManager        = new SubsystemManager(Context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            IntelSubsystem      = new IntelSubsystem();
            Context.IntelSystem = IntelSubsystem;

            TorpedoSubsystem = new HoverTorpedoSubsystem(IntelSubsystem);
            ScannerSubsystem = new ScannerNetworkSubsystem(IntelSubsystem);
            subsystemManager.AddSubsystem("intel", IntelSubsystem);
            subsystemManager.AddSubsystem("scanner", ScannerSubsystem);
            subsystemManager.AddSubsystem("torpedo", TorpedoSubsystem);

            subsystemManager.DeserializeManager(Storage);
        }
        public Program()
        {
            Context                 = new ExecutionContext(this);
            subsystemManager        = new SubsystemManager(Context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            // Add subsystems
            // AutopilotSubsystem autopilotSubsystem = new AutopilotSubsystem();
            IntelSubsystem intelSubsystem = new IntelSubsystem();

            Context.IntelSystem = intelSubsystem;

            TacMapSubsystem tacMapSubsystem = new TacMapSubsystem(intelSubsystem);

            // subsystemManager.AddSubsystem("autopilot", autopilotSubsystem);
            subsystemManager.AddSubsystem("intel", intelSubsystem);
            subsystemManager.AddSubsystem("tacmap", tacMapSubsystem);

            subsystemManager.DeserializeManager(Storage);
        }
        public Program()
        {
            subsystemManager        = new SubsystemManager(this);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            // Add subsystems
            CombatLoaderSubsystem loaderSystem = new CombatLoaderSubsystem("Welder Cargo", "Base Cargo");

            subsystemManager.AddSubsystem("loader", loaderSystem);

            subsystemManager.DeserializeManager(Storage);
        }
Exemple #11
0
        public Program()
        {
            context = new ExecutionContext(this);

            iniParser.Clear();
            iniParser.TryParse(context.Reference.CustomData);


            subsystemManager        = new SubsystemManager(context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            IntelSubsystem IntelProvider = new IntelSubsystem();

            SensorSubsystem = new ScannerNetworkSubsystem(IntelProvider);

            subsystemManager.AddSubsystem("intel", IntelProvider);
            subsystemManager.AddSubsystem("sensor", SensorSubsystem);
            AtmoDrive drive = new AtmoDrive(IntelProvider.Controller, 5, context.Reference);

            drive.MaxAngleDegrees = 20;
            subsystemManager.AddSubsystem("autopilot", drive);
            subsystemManager.AddSubsystem("MACCAP", new MACCombatAutopilotSubsystem(drive, IntelProvider));
            subsystemManager.DeserializeManager(Storage);
        }
Exemple #12
0
        public Raven(IMyRemoteControl reference, MyGridProgram program)
        {
            Controller = reference;
            Context    = new ExecutionContext(program, reference);

            SubsystemManager = new SubsystemManager(Context);
            Drive            = new AtmoDrive(Controller);
            CombatLoaderSubsystem loaderSubsystem = new CombatLoaderSubsystem("Drone Cargo", "Drone Store");

            IntelSubsystem intelSubsystem = new IntelSubsystem();

            Context.IntelSystem = intelSubsystem;

            DockingSubsystem         dockingSubsystem       = new DockingSubsystem(intelSubsystem, loaderSubsystem);
            StatusIndicatorSubsystem indicatorSubsystem     = new StatusIndicatorSubsystem(dockingSubsystem, intelSubsystem);
            MonitorSubsystem         monitorSubsystem       = new MonitorSubsystem(intelSubsystem);
            AgentSubsystem           agentSubsystem         = new AgentSubsystem(intelSubsystem, AgentClass.Fighter);
            UndockFirstTaskGenerator undockingTaskGenerator = new UndockFirstTaskGenerator(program, Drive, dockingSubsystem);
            ScannerNetworkSubsystem  scannerSubsystem       = new ScannerNetworkSubsystem(intelSubsystem);
            HornetCombatSubsystem    combatSubsystem        = new HornetCombatSubsystem(intelSubsystem);

            SubsystemManager.AddSubsystem("autopilot", Drive);
            SubsystemManager.AddSubsystem("docking", dockingSubsystem);
            SubsystemManager.AddSubsystem("intel", intelSubsystem);
            SubsystemManager.AddSubsystem("monitor", monitorSubsystem);
            SubsystemManager.AddSubsystem("combat", combatSubsystem);
            SubsystemManager.AddSubsystem("indicator", indicatorSubsystem);
            SubsystemManager.AddSubsystem("loader", loaderSubsystem);

            undockingTaskGenerator.AddTaskGenerator(new WaypointTaskGenerator(program, Drive));
            undockingTaskGenerator.AddTaskGenerator(new DockTaskGenerator(program, Drive, dockingSubsystem));
            undockingTaskGenerator.AddTaskGenerator(new HornetAttackTaskGenerator(program, combatSubsystem, Drive, agentSubsystem, monitorSubsystem, intelSubsystem));

            agentSubsystem.AddTaskGenerator(undockingTaskGenerator);
            agentSubsystem.AddTaskGenerator(new SetHomeTaskGenerator(program, dockingSubsystem));

            SubsystemManager.AddSubsystem("agent", agentSubsystem);
            SubsystemManager.AddSubsystem("scanner", scannerSubsystem);
        }
Exemple #13
0
//         {
//             { MyItemType.MakeComponent("SteelPlate"), 87} ,
//             { MyItemType.MakeComponent("Construction"), 47} ,
//             { MyItemType.MakeComponent("LargeTube"), 5} ,
//             { MyItemType.MakeComponent("Motor"), 10} ,
//             { MyItemType.MakeComponent("Computer"), 37} ,
//             { MyItemType.MakeComponent("MetalGrid"), 4} ,
//             { MyItemType.MakeComponent("SmallTube"), 14} ,
//             { MyItemType.MakeComponent("InteriorPlate"), 2} ,
//             { MyItemType.MakeComponent("Girder"), 1} ,
//             { MyItemType.MakeComponent("Explosives"), 2} ,
//             { MyItemType.MakeComponent("PowerCell"), 2} ,
//         };
        public Program()
        {
            Context                 = new ExecutionContext(this);
            subsystemManager        = new SubsystemManager(Context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            GridTerminalSystem.GetBlocksOfType <IMyTerminalBlock>(null, CollectBlocks);
            AutopilotSubsystem          = new AtmoDrive(Controller, 5, Me);
            AutopilotSubsystem.FullAuto = false;

            IntelSubsystem      = new IntelSubsystem();
            Context.IntelSystem = IntelSubsystem;

            CombatSubsystem     = new HornetCombatSubsystem(IntelSubsystem, false);
            LookingGlassNetwork = new LookingGlassNetworkSubsystem(IntelSubsystem, "LG", false, false);
            AgentSubsystem      = new AgentSubsystem(IntelSubsystem, AgentClass.None);
            TaskGenerator       = new HornetAttackTaskGenerator(this, CombatSubsystem, AutopilotSubsystem, AgentSubsystem, null, IntelSubsystem);
            AgentSubsystem.AddTaskGenerator(TaskGenerator);
            TaskGenerator.HornetAttackTask.FocusedTarget = true;
            CombatLoaderSubsystem = new CombatLoaderSubsystem();
            //DockingSubsystem = new DockingSubsystem(IntelSubsystem, CombatLoaderSubsystem);
            TorpedoSubsystem = new TorpedoSubsystem(IntelSubsystem);

            ScannerSubsystem = new ScannerNetworkSubsystem(IntelSubsystem);
            LookingGlassNetwork.AddPlugin("combat", new LookingGlass_Fermi(this));

            subsystemManager.AddSubsystem("autopilot", AutopilotSubsystem);
            subsystemManager.AddSubsystem("intel", IntelSubsystem);
            subsystemManager.AddSubsystem("combat", CombatSubsystem);
            subsystemManager.AddSubsystem("agent", AgentSubsystem);
            subsystemManager.AddSubsystem("scanner", ScannerSubsystem);
            subsystemManager.AddSubsystem("lookingglass", LookingGlassNetwork);
            subsystemManager.AddSubsystem("loader", CombatLoaderSubsystem);
//            subsystemManager.AddSubsystem("docking", DockingSubsystem);
            subsystemManager.AddSubsystem("torpedo", TorpedoSubsystem);

            subsystemManager.DeserializeManager(Storage);

            ParseConfigs();
        }
Exemple #14
0
        public Program()
        {
            context = new ExecutionContext(this);

            iniParser.Clear();
            iniParser.TryParse(context.Reference.CustomData);


            subsystemManager        = new SubsystemManager(context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            IntelSubsystem IntelProvider = new IntelSubsystem();

            SensorSubsystem = new ScannerNetworkSubsystem(IntelProvider);

            subsystemManager.AddSubsystem("intel", IntelProvider);
            subsystemManager.AddSubsystem("sensor", SensorSubsystem);
            subsystemManager.AddSubsystem("turret", new TurretSubsystem(IntelProvider));
            subsystemManager.AddSubsystem("loader", new CombatLoaderSubsystem());
            subsystemManager.AddSubsystem("utility", new UtilitySubsystem());

            if (iniParser.Get("RoverMSM", "Hover").ToBoolean(false))
            {
                var helidrive = new HeliDriveSubsystem();
                subsystemManager.AddSubsystem("heli", helidrive);

                if (iniParser.Get("RoverMSM", "heliCAP").ToBoolean(false))
                {
                    subsystemManager.AddSubsystem("heliCAP", new HeliCombatAutopilotSubsystem(helidrive, IntelProvider));
                }
            }

            if (iniParser.Get("RoverMSM", "Landpedo").ToBoolean(false))
            {
                subsystemManager.AddSubsystem("landpedo", new LandpedoSubsystem(IntelProvider));
            }

            subsystemManager.DeserializeManager(Storage);
        }
        public Program()
        {
            subsystemManager        = new SubsystemManager(this);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            // Add subsystems
            IntelSubsystem intelSubsystem = new IntelSubsystem();

            subsystemManager.AddSubsystem("intel", intelSubsystem);
            AutopilotSubsystem autopilotSubsystem = new AutopilotSubsystem();

            subsystemManager.AddSubsystem("autopilot", autopilotSubsystem);
            DockingSubsystem dockingSubsystem = new DockingSubsystem(intelSubsystem);

            subsystemManager.AddSubsystem("docking", dockingSubsystem);
            MonitorSubsystem monitorSubsystem = new MonitorSubsystem(intelSubsystem);

            subsystemManager.AddSubsystem("monitor", monitorSubsystem);

            // LookingGlass setup
            LookingGlassNetworkSubsystem lookingGlassNetwork = new LookingGlassNetworkSubsystem(intelSubsystem, "LG", false, false);

            subsystemManager.AddSubsystem("lookingglass", lookingGlassNetwork);

            // Agent setup
            AgentSubsystem agentSubsystem = new AgentSubsystem(intelSubsystem, AgentClass.Drone);

            intelSubsystem.MyAgent = agentSubsystem;
            UndockFirstTaskGenerator undockingTaskGenerator = new UndockFirstTaskGenerator(this, autopilotSubsystem, dockingSubsystem);

            undockingTaskGenerator.AddTaskGenerator(new WaypointTaskGenerator(this, autopilotSubsystem));
            undockingTaskGenerator.AddTaskGenerator(new DockTaskGenerator(this, autopilotSubsystem, dockingSubsystem));
            agentSubsystem.AddTaskGenerator(undockingTaskGenerator);
            agentSubsystem.AddTaskGenerator(new SetHomeTaskGenerator(this, dockingSubsystem));

            subsystemManager.AddSubsystem("agent", agentSubsystem);

            subsystemManager.AddSubsystem("indicator", new StatusIndicatorSubsystem(dockingSubsystem, intelSubsystem));

            subsystemManager.DeserializeManager(Storage);
        }
Exemple #16
0
        public Program()
        {
            Context = new ExecutionContext(this);

            subsystemManager        = new SubsystemManager(Context);
            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            // Add subsystems
            AutopilotSubsystem autopilotSubsystem = new AutopilotSubsystem();
            IntelSubsystem     intelSubsystem     = new IntelSubsystem();

            Context.IntelSystem = intelSubsystem;

            DockingSubsystem     dockingSubsystem = new DockingSubsystem(intelSubsystem);
            HoneybeeMiningSystem miningSubsystem  = new HoneybeeMiningSystem();
            MonitorSubsystem     monitorSubsystem = new MonitorSubsystem(intelSubsystem);

            subsystemManager.AddSubsystem("autopilot", autopilotSubsystem);
            subsystemManager.AddSubsystem("docking", dockingSubsystem);
            subsystemManager.AddSubsystem("intel", intelSubsystem);
            subsystemManager.AddSubsystem("mining", miningSubsystem);
            subsystemManager.AddSubsystem("monitor", monitorSubsystem);

            AgentSubsystem agentSubsystem = new AgentSubsystem(intelSubsystem, AgentClass.Miner);

            UndockFirstTaskGenerator undockingTaskGenerator = new UndockFirstTaskGenerator(this, autopilotSubsystem, dockingSubsystem);

            undockingTaskGenerator.AddTaskGenerator(new WaypointTaskGenerator(this, autopilotSubsystem));
            DockTaskGenerator dockTaskGenerator = new DockTaskGenerator(this, autopilotSubsystem, dockingSubsystem);

            undockingTaskGenerator.AddTaskGenerator(dockTaskGenerator);

            agentSubsystem.AddTaskGenerator(undockingTaskGenerator);
            agentSubsystem.AddTaskGenerator(new SetHomeTaskGenerator(this, dockingSubsystem));
            agentSubsystem.AddTaskGenerator(new HoneybeeMiningTaskGenerator(this, miningSubsystem, autopilotSubsystem, agentSubsystem, dockingSubsystem, dockTaskGenerator, undockingTaskGenerator, intelSubsystem, monitorSubsystem));
            subsystemManager.AddSubsystem("agent", agentSubsystem);

            subsystemManager.AddSubsystem("indicator", new StatusIndicatorSubsystem(dockingSubsystem, intelSubsystem));

            subsystemManager.DeserializeManager(Storage);
        }
Exemple #17
0
        public Hornet(IMyTerminalBlock reference, ExecutionContext context)
        {
            Context = context;

            SubsystemManager = new SubsystemManager(context);

            AutopilotSubsystem autopilotSubsystem = new AutopilotSubsystem();
            IntelSubsystem     intelSubsystem     = new IntelSubsystem();

            Context.IntelSystem = intelSubsystem;

            DockingSubsystem         dockingSubsystem       = new DockingSubsystem(intelSubsystem);
            HornetCombatSubsystem    combatSubsystem        = new HornetCombatSubsystem(intelSubsystem);
            MonitorSubsystem         monitorSubsystem       = new MonitorSubsystem(intelSubsystem);
            StatusIndicatorSubsystem indicatorSubsystem     = new StatusIndicatorSubsystem(dockingSubsystem, intelSubsystem);
            AgentSubsystem           agentSubsystem         = new AgentSubsystem(intelSubsystem, AgentClass.Fighter);
            UndockFirstTaskGenerator undockingTaskGenerator = new UndockFirstTaskGenerator(context.Program, autopilotSubsystem, dockingSubsystem);
            ScannerNetworkSubsystem  scannerSubsystem       = new ScannerNetworkSubsystem(intelSubsystem);

            SubsystemManager.AddSubsystem("autopilot", autopilotSubsystem);
            SubsystemManager.AddSubsystem("docking", dockingSubsystem);
            SubsystemManager.AddSubsystem("intel", intelSubsystem);
            SubsystemManager.AddSubsystem("combat", combatSubsystem);
            SubsystemManager.AddSubsystem("monitor", monitorSubsystem);
            SubsystemManager.AddSubsystem("indicator", indicatorSubsystem);

            undockingTaskGenerator.AddTaskGenerator(new WaypointTaskGenerator(context.Program, autopilotSubsystem));
            undockingTaskGenerator.AddTaskGenerator(new DockTaskGenerator(context.Program, autopilotSubsystem, dockingSubsystem));
            undockingTaskGenerator.AddTaskGenerator(new HornetAttackTaskGenerator(context.Program, combatSubsystem, autopilotSubsystem, agentSubsystem, monitorSubsystem, intelSubsystem));

            agentSubsystem.AddTaskGenerator(undockingTaskGenerator);
            agentSubsystem.AddTaskGenerator(new SetHomeTaskGenerator(context.Program, dockingSubsystem));

            SubsystemManager.AddSubsystem("agent", agentSubsystem);
            SubsystemManager.AddSubsystem("scanner", new ScannerNetworkSubsystem(intelSubsystem));
        }
        public Program()
        {
            Context          = new ExecutionContext(this);
            subsystemManager = new SubsystemManager(Context);

            Runtime.UpdateFrequency = UpdateFrequency.Update1;

            ParseConfigs();

            // Add subsystems
            // Intel system setup
            IntelSubsystem intelSubsystem = new IntelSubsystem(1);

            Context.IntelSystem = intelSubsystem;

            subsystemManager.AddSubsystem("intel", intelSubsystem);
            LookingGlassNetworkSubsystem lookingGlassNetwork = null;

            // Looking Glass Setup
            if (LookingGlass)
            {
                lookingGlassNetwork = new LookingGlassNetworkSubsystem(intelSubsystem, "LG", !FixedLookingGlass, ThrusterLookingGlass);
                subsystemManager.AddSubsystem("lookingglass", lookingGlassNetwork);
                lookingGlassNetwork.AddPlugin("command", new LookingGlassPlugin_Command());
                lookingGlassNetwork.AddPlugin("lidar", new LookingGlassPlugin_Lidar());
            }

            // Hangar system setup
            HangarSubsystem hangarSubsystem = new HangarSubsystem(intelSubsystem);

            subsystemManager.AddSubsystem("hangar", hangarSubsystem);

            ScannerNetworkSubsystem scannerSubsystem = null;

            // Seeing-Eye scanner setup
            if (Scanner)
            {
                scannerSubsystem = new ScannerNetworkSubsystem(intelSubsystem, "SE");
                subsystemManager.AddSubsystem("scanner", scannerSubsystem);
            }

            TorpedoSubsystem torpedoSubsystem = null;

            // Torpedo system setup
            if (Torpedos)
            {
                torpedoSubsystem = new TorpedoSubsystem(intelSubsystem);
                subsystemManager.AddSubsystem("torpedo", torpedoSubsystem);
            }


            lookingGlassNetwork?.AddPlugin("combat", new LookingGlassPlugin_Combat(torpedoSubsystem, hangarSubsystem, scannerSubsystem));
            lookingGlassNetwork?.ActivatePlugin(DefaultLookingGlassPlugin);

            //
            // Command system setup
            TacticalCommandSubsystem tacticalSubsystem = new TacticalCommandSubsystem(intelSubsystem);

            subsystemManager.AddSubsystem("command", tacticalSubsystem);

            // Black ops
            // ECMInterfaceSubsystem ECM = new ECMInterfaceSubsystem(intelSubsystem);
            // subsystemManager.AddSubsystem("ECM", ECM);

            subsystemManager.AddSubsystem("loader", new CombatLoaderSubsystem(CombatLoaderCargo, CombatCargoStore));

            subsystemManager.DeserializeManager(Storage);
        }