private void PasteStats(PastePlayerStatsMessage obj) { if (DamageTracker == null) { return; } var playerStatsSequence = DamageTracker.StatsByUser.OrderByDescending(playerStats => playerStats.Dealt.Damage).TakeWhile(x => x.Dealt.Damage > 0); const int maxLength = 300; var sb = new StringBuilder(); bool first = true; string body = SettingsHelper.Instance.Settings.DpsPasteFormat; if (body.Contains('@')) { var splitter = body.Split(new[] { '@' }, 2); var placeHolder = new DamageTrackerFormatter(DamageTracker, FormatHelpers.Invariant); sb.Append(placeHolder.Replace(splitter[0])); body = splitter[1]; } foreach (var playerInfo in playerStatsSequence) { var placeHolder = new PlayerStatsFormatter(playerInfo, _teraData, FormatHelpers.Invariant); var playerText = first ? "" : " | "; playerText += placeHolder.Replace(body); if (sb.Length + playerText.Length > maxLength) { break; } sb.Append(playerText); first = false; } if (sb.Length > 0) { var text = sb.ToString(); var isActive = ProcessHelper.Instance.IsTeraActive; if (isActive.HasValue && isActive.Value) { //send text input to Tera ProcessHelper.Instance.SendString(text); } //copy to clipboard in case user wants to paste outside of Tera Application.Current.Dispatcher.Invoke(() => Clipboard.SetDataObject(text)); } }
private void PasteStats(PastePlayerStatsMessage obj) { if (DamageTracker == null) return; var playerStatsSequence = DamageTracker.StatsByUser.OrderByDescending(playerStats => playerStats.Dealt.Damage).TakeWhile(x => x.Dealt.Damage > 0); const int maxLength = 300; var sb = new StringBuilder(); bool first = true; foreach (var playerInfo in playerStatsSequence) { var placeHolder = new PlayerStatsFormatter(playerInfo, FormatHelpers.Invariant); var playerText = first ? "" : " | "; playerText += placeHolder.Replace(SettingsHelper.Instance.Settings.DpsPasteFormat); if (sb.Length + playerText.Length > maxLength) break; sb.Append(playerText); first = false; } if (sb.Length > 0) { var text = sb.ToString(); if (ProcessHelper.Instance.IsTeraActive) { //send text input to Tera ProcessHelper.Instance.SendString(text); } //copy to clipboard in case user wants to paste outside of Tera Application.Current.Dispatcher.Invoke(() => Clipboard.SetDataObject(text)); } }
private void PasteStats(PastePlayerStatsMessage obj) { if (DamageTracker == null) return; var playerStatsSequence = DamageTracker.StatsByUser.OrderByDescending(playerStats => playerStats.Dealt.Damage).TakeWhile(x => x.Dealt.Damage > 0); const int maxLength = 300; var sb = new StringBuilder(); bool first = true; foreach (var playerInfo in playerStatsSequence) { var placeHolder = new PlayerStatsFormatter(playerInfo, FormatHelpers.Invariant); var playerText = first ? "" : " | "; if (playerInfo.Player.Class != PlayerClass.Mystic && playerInfo.Player.Class != PlayerClass.Priest) { playerText += placeHolder.Replace(SettingsHelper.Instance.Settings.DpsDmgPasteFormat); } if (playerInfo.Player.Class == PlayerClass.Mystic || playerInfo.Player.Class == PlayerClass.Priest) { playerText += "HealStat: " + playerInfo.Player.Name + " HPS:" + playerInfo.Dealt.Hps + "(" + playerInfo.Dealt.Heal + ") — " + playerInfo.Dealt.HealFraction.ToString("P1").Replace(" ", string.Empty); } if (sb.Length + playerText.Length > maxLength) break; sb.Append(playerText); first = false; } if (sb.Length > 0) { var text = sb.ToString(); var isActive = ProcessHelper.Instance.IsTeraActive; if (isActive.HasValue && isActive.Value) { //send text input to Tera ProcessHelper.Instance.SendString(text); } //copy to clipboard in case user wants to paste outside of Tera Application.Current.Dispatcher.Invoke(() => Clipboard.SetDataObject(text)); } }