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