public void Init() { #region fetchblocks GridTerminalSystemUtils GTS = new GridTerminalSystemUtils(Me, GridTerminalSystem); control = GTS.GetBlockWithNameOnGrid(controllerName) as IMyShipController; mergeBlock = GTS.GetBlockWithNameOnGrid(mergeBlockName) as IMyShipMergeBlock; var antennas = new List <IMyRadioAntenna>(); GTS.GetBlocksOfTypeOnGrid(antennas); #endregion #region initModules if (antennas.Count > 0) { commsHandler = new CommsHandler(this, antennas.First()); } else { commsHandler = new CommsHandler(this, null); } var commands = new Commands(this, commsHandler); commands.RegisterCommands(); EntityTracking_Module.refExpSettings refExp = EntityTracking_Module.refExpSettings.Sensor | EntityTracking_Module.refExpSettings.Turret; targetTracker = new EntityTracking_Module(GTS, control, null, refExp); targetTracker.onEntityDetected += OnTargetFound; controlModule = new ControlModule(GTS, control); proNav = new ProNav(controlModule, 30); missionScheduler = new Scheduler(); payload = new Payload(GTS, backupDetonationEngageDist); #endregion mode = CurrentMode.Idle; initialized = true; Runtime.UpdateFrequency = UpdateFrequency.Update1; }
public Commands(Program P, CommsHandler handler) { this.P = P; this.handler = handler; }
public IEnumerator <bool> ProgramInit() { #region serializer nameSerializer = new INISerializer("HaE MissileBase"); nameSerializer.AddValue("missileTag", x => x, "[HaE Missile]"); nameSerializer.AddValue("siloDoorTag", x => x, "[HaE SiloDoor]"); nameSerializer.AddValue("missileStatusLCDTag", x => x, "[HaE MissileStatus]"); nameSerializer.AddValue("targetingCameraName", x => x, "TargetingCamera"); nameSerializer.AddValue("controllername", x => x, "controller"); nameSerializer.AddValue("IgnoreTag", x => x, "[IgnoreTracker]"); nameSerializer.AddValue("targetingCastLength", x => double.Parse(x), 3000); if (Me.CustomData == "") { string temp = Me.CustomData; nameSerializer.FirstSerialization(ref temp); Me.CustomData = temp; } else { nameSerializer.DeSerialize(Me.CustomData); } yield return(true); #endregion #region fetchblocks GridTerminalSystemUtils GTS = new GridTerminalSystemUtils(Me, GridTerminalSystem); missiles = new MissileManager(GTS, this, missileTag); yield return(true); var antennas = new List <IMyRadioAntenna>(); GTS.GetBlocksOfTypeOnGrid(antennas); yield return(true); var camera = GridTerminalSystem.GetBlockWithName(targetingCameraName) as IMyCameraBlock; var controller = GridTerminalSystem.GetBlockWithName(controllername) as IMyShipController; yield return(true); #endregion #region initModules if (antennas.Count > 0) { commsHandler = new CommsHandler(this, antennas.First()); } else { commsHandler = new CommsHandler(this, null); } var commands = new Commands(this, commsHandler); commands.RegisterCommands(); silos = new MissileSilos(GTS, this, siloDoorTag); yield return(true); if (camera != null && controller != null) { entityTrackingModule = new EntityTracking_Module(GTS, controller, camera, IgnoreTag); ITracking cameraTracker = null; foreach (ITracking tracker in entityTrackingModule.ObjectTrackers) { var camT = tracker as LidarTracking; if (camT != null) { cameraTracker = camT; } } entityTrackingModule.ObjectTrackers.Clear(); entityTrackingModule.ObjectTrackers.Add(cameraTracker); entityTrackingModule.onEntityDetected += OnEntityDetected; } else { Echo($"camera: {camera != null}\ncontroller: {controller != null}"); } yield return(true); var lcds = new List <IMyTextPanel>(); GridTerminalSystem.GetBlocksOfType(lcds, x => x.CustomName.Contains(missileStatusLCDTag)); statusWriter = new StatusWriter(this, lcds); #endregion initialized = true; }