예제 #1
0
        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));
            }
        }
예제 #2
0
        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));
            }
        }
예제 #3
0
        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));
            }
        }