コード例 #1
0
ファイル: ShellViewModel.cs プロジェクト: Gl0/CasualMeter
        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
ファイル: ShellViewModel.cs プロジェクト: lunyx/CasualMeter
        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));
            }
        }