Esempio n. 1
0
        private void logReader_Tick(object sender, EventArgs e)
        {
            logReader.Stop();
            foreach (byte[] logdata in logmemoryInfo.GetNewLogsData())
            {
                FFXIVLog log = FFXIVLog.ParseSingleLog(logdata);
                FFXIVLogDataSet.AnaylzedRow row = logParser.Add(log);

                var msg = log.LogBodyReplaceTabCode;
                SetStatus(msg.StartsWith(":") ? msg.Substring(1) : msg);



                ClearActorList(row);
                Mark(log);
                RejectPTMember(log);

                ParseActor(row, ActorType.FROM);
                ParseActor(row, ActorType.TO);

                Display();
            }

            if (logCount < logParser.ds.Anaylzed.Count - 100)
            {
                logCount = logParser.ds.Anaylzed.Count;
            }
            logReader.Start();
        }
Esempio n. 2
0
        private void ClearActorList(FFXIVLogDataSet.AnaylzedRow row)
        {
            if (row.IsPvPStart && !row.IsPvPEnd)
            {
                SetStatus("バトル開始 - リストを初期化しました");
                foreach (string key in actors.Keys)
                {
                    actorsLog[key] = actors[key];
                }
                actors            = new Dictionary <string, PvPActor>();
                targetImage.Image = Properties.Resources.eye;

                dataGridView.Rows.Clear();
            }

            if (row.IsPvPEnd)
            {
                SetStatus("バトル終了");
            }
        }
Esempio n. 3
0
        private TreeElementA(TreeElementA parent, string text, string label)
        {
            this.Text  = text;
            this.Label = label;

            //高速化
            string filter = GetFilter();

            foreach (FFXIVLogDataSet.AnaylzedRow row in parent.ds.Anaylzed.Select(filter))
            {
                FFXIVLogDataSet.AnaylzedRow _row = ds.Anaylzed.NewAnaylzedRow();
                _row.ItemArray = row.ItemArray;
                ds.Anaylzed.AddAnaylzedRow(_row);
            }


            Parent     = parent;
            DataTable  = parent.DataTable;
            CurrentRow = DataTable.NewRow();
            DataTable.Rows.Add(CurrentRow);
            CurrentRow["ParentID"] = parent.CurrentRow["ID"];
        }
Esempio n. 4
0
        private void ParseActor(FFXIVLogDataSet.AnaylzedRow row, ActorType type)
        {
            if (!row.IsFromNull())
            {
                var actorName = type == ActorType.FROM ? row.From : row.To;
                var actor     = logParser.ds.Actor.FindByName(actorName);
                if (actor != null && !FF14LogParser.IsPet(actorName))
                {
                    Regex regex = new Regex(@"(?<name>[A-Z][a-z']+? [A-Z][a-z']+?)");
                    Match match = regex.Match(actorName);
                    if (!match.Success)
                    {
                        return;
                    }
                    var pvpActor = FindOrCreatePvPActor(actorName);
                    if (pvpActor.jobList.Count == 0 && actorsLog.Keys.Contains(actorName))
                    {
                        pvpActor.jobList = actorsLog[actorName].jobList;
                    }

                    if (type == ActorType.FROM && !actor.IsClassJobNull())
                    {
                        if (!row.IsActionNameNull())
                        {
                            if (row.ActionName == "プロテス" || row.ActionName == "ストンスキン")
                            {
                                pvpActor.isHealer = true;
                                actor.ClassJob    = "白魔道士 学者";
                            }
                        }
                        pvpActor.SetJobList(PvPActor.ParseJob(actor.ClassJob));
                    }
                    actors[actorName] = pvpActor;
                }
            }
        }