Example #1
0
        public static string Parse(string msg, List<Rank> tree, Rank rank, EconomyPlayer plr)
        {
            var parsers = new Dictionary<string, object>()
            {
                {"%CUR_INDEX%", (rank.GetIndex(tree) + 1)},
                {"%CUR_NAME%", rank.name},
                {"%CUR_GROUP%", rank.group},
                {"%CUR_PARENT%", rank.parentgroup},
                {"%CUR_COST%", rank.Cost().ToLongString()},
                {"%MAX%", tree.Count.ToString()},
                {"%NEXT_INDEX%", (rank.FindNext().GetIndex(tree) + 1)},
                {"%NEXT_NAME%", rank.FindNext().name},
                {"%NEXT_GROUP%", rank.FindNext().group},
                {"%NEXT_COST%", rank.FindNext().Cost().ToLongString()},
                {"%CURLEFT%", new Money(rank.FindNext().Cost() - plr.BankAccount.Balance).ToLongString(true)},
                {"%BALANCE%", plr.BankAccount.Balance.ToLongString(true)}

            };

            string parsed = msg;

            foreach (var wc in parsers)
            {
                if (parsed.Contains(wc.Key))
                    parsed = parsed.Replace(wc.Key, wc.Value.ToString());
            }

            return parsed;
        }
Example #2
0
        public static Tuple <string, Money> Parse(string message, List <Rank> tree, Rank rank, IBankAccount account)
        {
            if (String.IsNullOrEmpty(message))
            {
                throw new ArgumentNullException("message cannot be null or empty.");
            }
            if (tree == null)
            {
                throw new ArgumentNullException("tree cannot be null.");
            }
            if (rank == null)
            {
                throw new ArgumentNullException("rank cannot be null.");
            }
            if (account == null)
            {
                throw new ArgumentNullException("account cannot be null.");
            }

            Money remainder    = 0;
            var   replacements = new Dictionary <string, object>();

            #region Old Tags
            replacements.Add("%CUR_INDEX%", rank.GetIndex(tree) + 1);
            replacements.Add("%CUR_NAME%", rank.name);
            replacements.Add("%CUR_GROUP%", rank.group);
            replacements.Add("%CUR_PARENT%", rank.parentgroup);
            replacements.Add("%CUR_COST%", rank.Cost().ToLongString());
            replacements.Add("%MAX%", tree.Count);
            if (!Utils.IsLastRankInLine(rank, tree))
            {
                replacements.Add("%NEXT_INDEX%", rank.FindNext().GetIndex(tree) + 1);
                replacements.Add("%NEXT_NAME%", rank.FindNext().name);
                replacements.Add("%NEXT_GROUP%", rank.FindNext().group);

                remainder = rank.FindNext().Cost() - account.Balance;
                replacements.Add("%CURLEFT%", remainder.ToLongString(true));
            }
            replacements.Add("%BALANCE%", account.Balance.ToLongString(true));
            #endregion

            #region New Replacement System
            replacements.Add("$rankindex", rank.GetIndex(tree) + 1);
            replacements.Add("$rankname", rank.name);
            replacements.Add("$rankgroup", rank.group);
            replacements.Add("$rankparent", rank.parentgroup);
            replacements.Add("$rankcost", rank.Cost().ToLongString());
            replacements.Add("$rankcount", tree.Count);
            if (!Utils.IsLastRankInLine(rank, tree))
            {
                replacements.Add("$nextindex", rank.FindNext().GetIndex(tree) + 1);
                replacements.Add("$nextname", rank.FindNext().name);
                replacements.Add("$nextgroup", rank.FindNext().group);

                Money cost = rank.FindNext().Cost();
                replacements.Add("$nextcost", cost.ToLongString());

                remainder = cost - account.Balance;
                replacements.Add("$remainder", remainder.ToLongString(true));
            }
            replacements.Add("$balance", account.Balance.ToLongString(true));
            #endregion

            //var parsers = new Dictionary<string, object>()
            //{
            //	{"%CUR_INDEX%", (rank.GetIndex(tree) + 1)},
            //	{"%CUR_NAME%", rank.name},
            //	{"%CUR_GROUP%", rank.group},
            //	{"%CUR_PARENT%", rank.parentgroup},
            //	{"%CUR_COST%", rank.Cost().ToLongString()},
            //	{"%MAX%", tree.Count.ToString()},
            //	{"%NEXT_INDEX%", rank.FindNext() != null ? (rank.FindNext().GetIndex(tree) + 1).ToString() : ""},
            //	{"%NEXT_NAME%", rank.FindNext().name},
            //	{"%NEXT_GROUP%", rank.FindNext().group},
            //	{"%NEXT_COST%", rank.FindNext().Cost().ToLongString()},
            //	{"%CURLEFT%", curleft.ToLongString(true)},
            //	{"%BALANCE%", account.Balance.ToLongString(true)}

            //};

            string parsed = message;

            foreach (var wc in replacements)
            {
                try
                {
                    if (parsed.Contains(wc.Key))
                    {
                        parsed = parsed.Replace(wc.Key, wc.Value.ToString());
                    }
                }
                catch (Exception ex)
                {
                    TShock.Log.ConsoleError(
                        "[AutoRank] Exception at 'MsgParser.Parse2': {0}\nCheck logs for details.",
                        ex.Message);
                    TShock.Log.Error(ex.ToString());
                }
            }

            return(Tuple.Create(parsed, remainder));
        }