Example #1
0
        /// <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);
        }
Example #2
0
        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;
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
 /// <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;
        }
Example #6
0
        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;
        }