/// <summary> /// キャストログを格納する /// </summary> /// <param name="logInfo">ログ情報</param> private void StoreCastStartsUsingLog( LogLineEventArgs logInfo) { var match = StartsUsingRegex.Match(logInfo.logLine); if (!match.Success) { return; } var log = new CombatLog() { TimeStamp = logInfo.detectedTime, Raw = logInfo.logLine, Actor = match.Groups["actor"].ToString(), Action = match.Groups["skill"].ToString() + " の準備動作", LogType = CombatLogType.CastStart }; this.StoreLog(log); }
/// <summary> /// Addedのログを格納する /// </summary> /// <param name="logInfo">ログ情報</param> private void StoreAddedLog( LogLineEventArgs logInfo) { var match = AddedRegex.Match(logInfo.logLine); if (!match.Success) { return; } var log = new CombatLog() { TimeStamp = logInfo.detectedTime, Raw = logInfo.logLine, Actor = match.Groups["actor"].ToString(), Action = "Added", LogType = CombatLogType.Added }; this.StoreLog(log); }
/// <summary> /// キャストログを格納する /// </summary> /// <param name="logInfo">ログ情報</param> private void StoreCastStartsUsingLog( LogLineEventArgs logInfo) { var match = StartsUsingRegex.Match(logInfo.logLine); if (!match.Success) { return; } var log = new CombatLog() { TimeStamp = logInfo.detectedTime, Raw = logInfo.logLine, Actor = match.Groups["actor"].ToString(), Action = $"starts using {match.Groups["skill"].ToString()}", LogType = CombatLogType.CastStart }; if (!this.GetPartyMemberNames().Any(x => x == log.Actor)) { this.StoreLog(log); } }
/// <summary> /// ログを格納する /// </summary> /// <param name="log">ログ</param> private void StoreLog( CombatLog log) { switch (log.LogType) { case CombatLogType.AnalyzeStart: log.LogTypeName = "開始"; break; case CombatLogType.AnalyzeEnd: log.LogTypeName = "終了"; break; case CombatLogType.CastStart: log.LogTypeName = "準備動作"; break; case CombatLogType.Action: log.LogTypeName = "アクション"; break; case CombatLogType.Added: log.LogTypeName = "Added"; break; case CombatLogType.HPRate: log.LogTypeName = "残HP率"; break; } lock (this.CurrentCombatLogList) { // IDを発番する log.ID = this.id; this.id++; // バッファサイズを超えた? if (this.CurrentCombatLogList.Count > (Settings.Default.CombatLogBufferSize * 1.1m)) { // オーバー分を消去する var over = (int)(this.CurrentCombatLogList.Count - Settings.Default.CombatLogBufferSize); this.CurrentCombatLogList.RemoveRange(0, over); } // 経過秒を求める if (this.CurrentCombatLogList.Count > 0) { log.TimeStampElapted = (log.TimeStamp - this.CurrentCombatLogList.First().TimeStamp).TotalSeconds; } else { log.TimeStampElapted = 0; } // アクター別の残HP率をセットする if (this.ActorHPRate.ContainsKey(log.Actor)) { log.HPRate = this.ActorHPRate[log.Actor]; } this.CurrentCombatLogList.Add(log); } }
/// <summary> /// Addedのログを格納する /// </summary> /// <param name="logInfo">ログ情報</param> private void StoreAddedLog( LogLineEventArgs logInfo) { var match = AddedRegex.Match(logInfo.logLine); if (!match.Success) { return; } var log = new CombatLog() { TimeStamp = logInfo.detectedTime, Raw = logInfo.logLine, Actor = match.Groups["actor"].ToString(), Action = "Added", LogType = CombatLogType.Added }; this.StoreLog(log); }
/// <summary> /// キャストログを格納する /// </summary> /// <param name="logInfo">ログ情報</param> private void StoreCastLog( LogLineEventArgs logInfo) { var match = CastRegex.Match(logInfo.logLine); if (!match.Success) { return; } var log = new CombatLog() { TimeStamp = logInfo.detectedTime, Raw = logInfo.logLine, Actor = match.Groups["actor"].ToString(), Action = match.Groups["skill"].ToString() + " の準備動作", LogType = CombatLogType.CastStart }; this.StoreLog(log); }
/// <summary> /// ログを格納する /// </summary> /// <param name="log">ログ</param> private void StoreLog( CombatLog log) { switch (log.LogType) { case CombatLogType.AnalyzeStart: log.LogTypeName = "開始"; break; case CombatLogType.AnalyzeEnd: log.LogTypeName = "終了"; break; case CombatLogType.CastStart: log.LogTypeName = "準備動作"; break; case CombatLogType.Action: log.LogTypeName = "アクション"; break; case CombatLogType.Added: log.LogTypeName = "Added"; break; case CombatLogType.HPRate: log.LogTypeName = "残HP率"; break; } lock (this.CurrentCombatLogList) { // IDを発番する log.ID = this.id; this.id++; // バッファサイズを超えた? if (this.CurrentCombatLogList.Count > (Settings.Default.CombatLogBufferSize * 1.1m)) { // オーバー分を消去する var over = (int)(this.CurrentCombatLogList.Count - Settings.Default.CombatLogBufferSize); this.CurrentCombatLogList.RemoveRange(0, over); } // 経過秒を求める if (this.CurrentCombatLogList.Count > 0) { log.TimeStampElapted = (log.TimeStamp - this.CurrentCombatLogList.First().TimeStamp).TotalSeconds; } else { log.TimeStampElapted = 0; } // アクター別の残HP率をセットする if (this.ActorHPRate.ContainsKey(log.Actor)) { log.HPRate = this.ActorHPRate[log.Actor]; } this.CurrentCombatLogList.Add(log); } }