/// <summary> /// Create a cluster browser object which stores the databases in the specified directory. /// </summary> public ClusterBrowser() { this.InitializeComponent(); this.status = new StatusWriter(this.statuslabel, this.statusStrip, this.Status); BackgroundWorker queueWorker = new BackgroundWorker(); this.queue = new BackgroundWorkQueue(queueWorker, null, null); this.completeJobsList = new List <ClusterJobInformation>(); this.refreshTimer = new Timer(); this.refreshTimer.Interval = 30000; // 30 seconds this.refreshTimer.Tick += this.refreshTimer_Tick; this.toolStripMenuItem_job.Enabled = false; this.clusterJobs = new DGVData <ClusterJobInformation>(); this.filteredDataGridView.SetDataSource(this.clusterJobs); this.filteredDataGridView.DataGridView.Columns["IsUnavailable"].Visible = false; this.filteredDataGridView.DataGridView.Columns["Cluster"].Visible = false; this.filteredDataGridView.DataGridView.Columns["Name"].FillWeight = 50; this.filteredDataGridView.DataGridView.Columns["Status"].FillWeight = 10; this.filteredDataGridView.ViewChanged += this.filteredDataGridView_ViewChanged; #region TOOLTIPS //ToolTip help = new ToolTip(); //help.SetToolTip(this.combo_cluster, "Cluster whose jobs are visualized (or a \"Cache\" cluster with previously seen data)."); //help.SetToolTip(this.autoRefreshToolStripMenuItem, "Select to refresh the cluster view every 30 seconds."); #endregion this.Status("Please pick a cluster.", StatusKind.OK); }
private void Initialize(bool textFile, string header) { this.Text = header; this.status = new StatusWriter(this.toolStripStatusLabel_status, this.statusStrip, this.Status); this.canceled = false; if (textFile) { this.shownText = new DGVData <TextFileLine>(); this.filteredDataGridView.SetDataSource(this.shownText); // ReSharper disable PossibleNullReferenceException this.filteredDataGridView.DataGridView.Columns["Line"].FillWeight = 5; this.filteredDataGridView.DataGridView.Columns["Line"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; this.contextMenuStrip.Enabled = false; } else { this.shownLogLines = new DGVData <PositionedDryadLogEntry>(); this.filteredDataGridView.SetDataSource(this.shownLogLines); foreach (string s in new string[] { "Malformed", "IsError", "OriginalLogLine", "File", "LineNo" }) { this.filteredDataGridView.DataGridView.Columns[s].Visible = false; } this.filteredDataGridView.DataGridView.Columns["Timestamp"].DefaultCellStyle.Format = "HH:mm:ss.fff"; // ReSharper restore PossibleNullReferenceException } this.filteredDataGridView.DataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader; this.filteredDataGridView.DataGridView.AllowUserToResizeColumns = true; this.filteredDataGridView.DataGridView.Columns[this.filteredDataGridView.DataGridView.Columns.Count - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
/// <summary> /// Thread principal /// </summary> private void LaunchProcess() { StatusWriter writer = new StatusWriter(StatusFilePath); // Chargement du fichiers HTML des status /* Lancement des threads */ TeamspeakThread.Start(); VanillaThread.Start(); FTBThread.Start(); FTPThread.Start(); CounterThread.Start(); /* Boucle infini */ while (this.CanRun) { System.Threading.Thread.Sleep(Timer * 1000); // On sleep le thread avec le temps donné Debug.WriteLine("Ecriture dans le html"); bool vanilla = VanillaState, ftb = FTBState, ts = TeamspeakState, ftp = FTPState, csgo = CounterStrikeState; string map = CounterStrikeMap; writer.WriteStatus(vanilla, ftb, ts, ftp, csgo, map); } }
/// <summary> /// 将当前 <see cref="Status"/> 实例的值编码为可被酷Q使用的 Base64 字符串。 /// </summary> /// <returns>编码后的 Base64 字符串。</returns> public string Encode() { using var writer = new StatusWriter(); writer.Write(this); return(writer.GetBase64()); }
public IEnumerator <bool> Init() { control = GridTerminalSystem.GetBlockWithName(controllerName) as IMyShipController; if (control == null) { Echo($"no shipcontroller found with name {controllerName}!"); yield return(false); } List <IMyTextPanel> lcds = new List <IMyTextPanel>(); GridTerminalSystem.GetBlocksOfType(lcds, x => x.CustomName.Contains(lcdStatusTag)); statusWriter = new StatusWriter(lcds); targetTracker = new EntityTracking_Module(GTSUtils, control, null); foreach (var tracker in targetTracker.ObjectTrackers) { var turretTracker = tracker as TurretTracking; if (turretTracker != null) { turretTracker.earlyReturn = true; } } targetTracker.onEntityDetected += OnEntityDetected; gridCannonTargeting = new PhysicsTargeting(control, ingameTime, maxProjectileVel); gridCannonTargeting.onRoutineFinish += OnTargetSolvedRotor; gridCannonTargeting.onRoutineFail += OnTargetingFailRotor; gridCannonTargeting.onTargetTimeout += OnTargetTimeoutRotor; missileCannonTargeting = new PhysicsTargeting(control, ingameTime, maxMissileVel); missileCannonTargeting.onRoutineFinish += OnTargetSolvedMissile; missileCannonTargeting.onRoutineFail += OnTargetingFailMissile; missileCannonTargeting.onTargetTimeout += OnTargetTimeoutMissile; missileCannonTargeting.IgnoreGravity = true; missileCannonTargeting.ForwardAccel = maxMissileAccel; basicTargeting = new QuarticTargeting(Vector3D.Zero, Vector3D.Zero, maxGatlingBulletVel); switch (groupType) { case "BlockGroup": List <IMyBlockGroup> groups = new List <IMyBlockGroup>(); GridTerminalSystem.GetBlockGroups(groups, x => x.Name.Contains(rotorTurretGroupTag)); foreach (var group in groups) { AddRotorTurret(group); yield return(true); } groups.Clear(); GridTerminalSystem.GetBlockGroups(groups, x => x.Name.Contains(gatlingTurretGroupTag)); foreach (var group in groups) { AddGatlingTurret(group); yield return(true); } groups.Clear(); GridTerminalSystem.GetBlockGroups(groups, x => x.Name.Contains(missileTurretGroupTag)); foreach (var group in groups) { AddMissileTurret(group); yield return(true); } break; case "NameTag": List <IMyMotorStator> rotors = new List <IMyMotorStator>(); GridTerminalSystem.GetBlocksOfType(rotors, x => x.CustomName.Contains(rotorTurretGroupTag)); foreach (var stator in rotors) { AddRotorTurret(stator); yield return(true); } rotors.Clear(); GridTerminalSystem.GetBlocksOfType(rotors, x => x.CustomName.Contains(gatlingTurretGroupTag)); foreach (var stator in rotors) { AddGatlingTurret(stator); yield return(true); } rotors.Clear(); GridTerminalSystem.GetBlocksOfType(rotors, x => x.CustomName.Contains(missileTurretGroupTag)); foreach (var stator in rotors) { AddMissileTurret(stator); yield return(true); } break; case "Any": List <IMyBlockGroup> groupsA = new List <IMyBlockGroup>(); GridTerminalSystem.GetBlockGroups(groupsA, x => x.Name.Contains(rotorTurretGroupTag)); foreach (var group in groupsA) { AddRotorTurret(group); yield return(true); } groupsA.Clear(); GridTerminalSystem.GetBlockGroups(groupsA, x => x.Name.Contains(gatlingTurretGroupTag)); foreach (var group in groupsA) { AddGatlingTurret(group); yield return(true); } groupsA.Clear(); GridTerminalSystem.GetBlockGroups(groupsA, x => x.Name.Contains(missileTurretGroupTag)); foreach (var group in groupsA) { AddMissileTurret(group); yield return(true); } List <IMyMotorStator> rotorsA = new List <IMyMotorStator>(); GridTerminalSystem.GetBlocksOfType(rotorsA, x => x.CustomName.Contains(rotorTurretGroupTag)); foreach (var stator in rotorsA) { AddRotorTurret(stator); yield return(true); } rotorsA.Clear(); GridTerminalSystem.GetBlocksOfType(rotorsA, x => x.CustomName.Contains(gatlingTurretGroupTag)); foreach (var stator in rotorsA) { AddGatlingTurret(stator); yield return(true); } rotorsA.Clear(); GridTerminalSystem.GetBlocksOfType(rotorsA, x => x.CustomName.Contains(missileTurretGroupTag)); foreach (var stator in rotorsA) { AddMissileTurret(stator); yield return(true); } break; } statusWriter.UpdateCannonCount(rotorTurretGroups.Count, 0, 0); initialized = true; }
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; }