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(); }
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("バトル終了"); } }
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"]; }
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; } } }