Example #1
0
        public static bool TryParse(string s, out ChallengeRank cr)
        {
            cr = ChallengeRank.None;
            if (s.Contains(ProgressResources.Troublesome, System.StringComparison.OrdinalIgnoreCase))
            {
                cr = ChallengeRank.Troublesome;
            }
            if (s.Contains(ProgressResources.Dangerous, System.StringComparison.OrdinalIgnoreCase))
            {
                cr = ChallengeRank.Dangerous;
            }
            if (s.Contains(ProgressResources.Formidable, System.StringComparison.OrdinalIgnoreCase))
            {
                cr = ChallengeRank.Formidable;
            }
            if (s.Contains(ProgressResources.Extreme, System.StringComparison.OrdinalIgnoreCase))
            {
                cr = ChallengeRank.Extreme;
            }
            if (s.Contains(ProgressResources.Epic, System.StringComparison.OrdinalIgnoreCase))
            {
                cr = ChallengeRank.Epic;
            }

            return(cr != ChallengeRank.None);
        }
        private async Task BuildProgressTrackerPostAsync(ChallengeRank cr, string ThingToTrack, IUserMessage messageToEdit = null)
        {
            if (messageToEdit == null)
            {
                var tracker = new ProgressTrackerInfo(cr, ThingToTrack);
                messageToEdit = ReplyAsync(embed: tracker.BuildEmbed() as Embed).Result;
            }
            else
            {
                var tracker = new ProgressTrackerInfo().PopulateFromMessage(messageToEdit, cr);
                await messageToEdit.ModifyAsync(msg =>
                {
                    msg.Content = string.Empty;
                    msg.Embed   = tracker.BuildEmbed() as Embed;
                });
            }

            await messageToEdit.RemoveAllReactionsAsync();

            _ = Task.Run(async() =>
            {
                await messageToEdit.AddReactionAsync(DecreaseEmoji);
                await messageToEdit.AddReactionAsync(IncreaseEmoji);
                await messageToEdit.AddReactionAsync(FullEmoji);
                await messageToEdit.AddReactionAsync(RollEmoji);
                await messageToEdit.AddReactionAsync(new Emoji(GenericReactions.recreatePostEmoji));
            }).ConfigureAwait(false);

            return;
        }
Example #3
0
        public ProgressTrackerInfo PopulateFromMessage(IUserMessage message, ChallengeRank challengeRank = ChallengeRank.None)
        {
            var embed = message.Embeds.FirstOrDefault();

            if (embed == null)
            {
                throw new NullReferenceException();
            }

            if (challengeRank == ChallengeRank.None && !Enum.TryParse(embed.Fields.FirstOrDefault(f => f.Name == DifficultyFieldTitle).Value, out challengeRank))
            {
                throw new ArgumentException("Unknown progress tracker post format, unable to parse difficulty");
            }

            Rank = challengeRank;

            if (embed.Footer.HasValue)
            {
                Ticks = (Int32.TryParse(embed.Footer.Value.Text.Replace(ProgressResources.Ticks, "").Replace(":", ""), out int temp)) ? temp : 0;
            }
            Description  = embed.Description;
            this.IconUrl = embed.Thumbnail?.Url;

            return(this);
        }
        public async Task ProgressTrackerCommand([Remainder] string TrackerArgs)
        {
            //TODO this all needs to be reworked for globalization
            string[]      splitArgs   = TrackerArgs.Split(' ');
            string        NameOfTrack = TrackerArgs;
            ChallengeRank difficulty  = ChallengeRank.None;

            if (Enum.TryParse(Enum.GetNames(typeof(ChallengeRank)).FirstOrDefault(cr => ProgressTrackerInfo.HasMatchingChallengeRank(cr, splitArgs)), out difficulty))
            {
                NameOfTrack = Regex.Replace(NameOfTrack, difficulty.ToString(), string.Empty, RegexOptions.IgnoreCase);
            }

            if (difficulty == ChallengeRank.None)
            {
                await CreateTrackerHelper(NameOfTrack);
            }
            else
            {
                await BuildProgressTrackerPostAsync(difficulty, NameOfTrack);
            }
        }
Example #5
0
        public ProgressTracker(IUserMessage message, ChallengeRank challengeRank = ChallengeRank.None)
        {
            var embed = message.Embeds.FirstOrDefault(item => item.Title == ProgressResources.Progress_Tracker);

            if (embed == null)
            {
                return;
            }

            if (challengeRank == ChallengeRank.None && !Enum.TryParse(embed.Fields.FirstOrDefault(f => f.Name == ProgressResources.Difficulty).Value, out challengeRank))
            {
                throw new ArgumentException("Unknown progress tracker post format, unable to parse difficulty");
            }

            Rank = challengeRank;

            if (embed.Footer.HasValue)
            {
                Ticks = (Int32.TryParse(embed.Footer.Value.Text.Replace(ProgressResources.Ticks, "").Replace(":", ""), out int temp)) ? temp : 0;
            }
            Title = embed.Description;
        }
Example #6
0
 public ProgressTracker(ChallengeRank ChallengeRank, string title, int startingTicks = 0)
 {
     Rank  = ChallengeRank;
     Title = title;
     Ticks = startingTicks;
 }
Example #7
0
 public ProgressTrackerInfo(ChallengeRank ChallengeRank, string description, int startingTicks = 0)
 {
     Rank        = ChallengeRank;
     Description = description;
     Ticks       = startingTicks;
 }