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; 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)); } }