/// <summary> /// 更新する /// </summary> public void Update() { Dirs.Clear(); Files.Clear(); LogFiles.Clear(); Dirs.AddRange(Directory.GetDirectories(FolderFullPath)); Files.AddRange(Directory.GetDirectories(FolderFullPath)); if (Directory.Exists(logFolderPath) && File.Exists(GetLogFilePath(0))) { LogFiles.AddRange(Directory.GetFiles(logFolderPath)); LogFiles.Sort(); string firstLogFile = GetLogFilePath(0); string lastLogFile = GeLastWriteLogFile(); FFXIVLog[] f_logs = FFXIVLogFileReader.GetLogsFromFile(firstLogFile); FFXIVLog[] l_logs = FFXIVLogFileReader.GetLogsFromFile(lastLogFile); //最後にログインした時間をログから設定 LastLoginTimeFromLogFile = f_logs[0].TimeStampServerTime.Add(new TimeSpan(9, 0, 0));//ログファイルの時間はGMTなので+9時間 //最後にプレイした時間をログから設定 LastPlayTimeFromLogFile = l_logs[l_logs.Length - 1].TimeStampServerTime.Add(new TimeSpan(9, 0, 0)); //サーバー名 for (int i = 0; i < 999; i++) { if (f_logs[i].LogBody.StartsWith(":Welcome to ")) { ServerName = f_logs[0].LogBody.Substring(":Welcome to ".Length).Replace(" !", ""); break; } } //キャラ名取得 FF14LogParser ar = new FF14LogParser(); foreach (FFXIVLog log in f_logs) { ar.Add(log); FFXIVLogDataSet.ActorRow[] arows = (FFXIVLogDataSet.ActorRow[])ar.ds.Actor.Select("IsMe = True"); if (arows.Length > 0) { CharacterName = arows[0].Name; break; } } if (CharacterName == "") { foreach (FFXIVLog log in l_logs) { ar.Add(log); FFXIVLogDataSet.ActorRow[] arows = (FFXIVLogDataSet.ActorRow[])ar.ds.Actor.Select("IsMe = True"); if (arows.Length > 0) { CharacterName = arows[0].Name; break; } } } } }
private void LoadDemoData() { FFXIVLogFileReader fr = new FFXIVLogFileReader(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log")); demoLogs = fr.GetLogs(); demoIndex = 0; lastSeconds = demoLogs[0].TotalSeconds; //foreach (FFXIVLog log in demoLogs) //{ // actionreport.Add(log); //} timer1.Start(); }
private void ファイルからインポートToolStripMenuItem_Click(object sender, EventArgs e) { FF14FastReport.OpenGameLogFolderForm frm = new FF14FastReport.OpenGameLogFolderForm(); if (frm.ShowDialog(this) == DialogResult.OK) { FFXIVLogFileReader fr = new FFXIVLogFileReader(frm.SelectedFolder); FF14LogParser actionReport = new FF14LogParser(); foreach (FFXIVLog log in fr.GetLogs()) { actionReport.Add(log); } bindingSource1.DataSource = actionReport.ds; bindingSource1.DataMember = "Anaylzed"; } }
/// <summary> /// ログを読みこむ /// </summary> /// <returns></returns> public FFXIVLog[] GetLogs() { List <FFXIVLog> loglist = new List <FFXIVLog>(); int i = 0; //00000015 string logfile = Path.Combine(FolderPath, i.ToString("X8") + ".log"); while (File.Exists(logfile)) { FFXIVLog[] logs = FFXIVLogFileReader.GetLogsFromFile(logfile); if (loglist.Count > 0 && logs[0].TimeStampServerTime < loglist[loglist.Count - 1].TimeStampServerTime) { break; } loglist.AddRange(logs); i++; logfile = Path.Combine(FolderPath, i.ToString("X8") + ".log"); } return(loglist.ToArray()); }
private void ログのインポートToolStripMenuItem_Click(object sender, EventArgs e) { try { FF14FastReport.OpenGameLogFolderForm frm = new FF14FastReport.OpenGameLogFolderForm(); if (frm.ShowDialog(this) == DialogResult.OK) { if (Directory.Exists(frm.SelectedFolder)) { FFXIVLogFileReader fr = new FFXIVLogFileReader(frm.SelectedFolder); FF14LogParser _ar = new FF14LogParser(); FFXIVLog[] logs = fr.GetLogs(); SetStatus(logs.Length + "行のログを解析しています。"); Application.DoEvents(); System.Threading.ThreadStart ts = () => { foreach (FFXIVLog log in logs) { _ar.Add(log); } }; System.Threading.Thread th = new System.Threading.Thread(ts); th.Start(); while (th.IsAlive) { SetProgress(100 * _ar.ds.Anaylzed.Count / logs.Length, true); Application.DoEvents(); System.Threading.Thread.Sleep(100); } SetProgress(0, false); SetStatus("読み込みが完了しました"); Application.DoEvents(); actionReport = _ar; データ範囲指定ToolStripMenuItem_Click(this, null); } } } catch { MessageBox.Show("ログファイルの読み込みに失敗しました。"); } }
/// <summary> /// ゲームクライアントが保存したログファイルの読み込み /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void fFXIVで保存されたログからインポートIToolStripMenuItem_Click(object sender, EventArgs e) { if (OpenLogFolderBrowserDialog.ShowDialog() == DialogResult.OK) { FFXIVLogFileReader filereader = new FFXIVLogFileReader(OpenLogFolderBrowserDialog.SelectedPath); int count = 0; foreach (FFXIVLog log in filereader.GetLogs()) { if(IsVisibleLog(log)) { AddLog(log); } count++; if (count > 1000) break; } } }