Exemple #1
0
        public string GetPartyAsString()
        {
            string message = "";

            var    groups         = PartyDice.GroupBy(g => g.Name).OrderByDescending(g => g.Count()).Select(g => new { Key = g.Key, Count = g.Count() });
            int    companionCount = 0;
            string companionName  = "";

            if (groups.Count() == 1)
            {
                companionCount = groups.First().Count;
                companionName  = groups.First().Key;
                if (companionCount > 1)
                {
                    companionName = companionName == "thief" ? "thieves" : $"{companionName}s";
                }
                message = $"{companionCount} {companionName}";
            }
            else if (groups.Count() == 2)
            {
                List <string> formattedGroups = new List <string>();
                foreach (var item in groups)
                {
                    companionCount = item.Count;
                    companionName  = item.Key;
                    if (companionCount > 1)
                    {
                        companionName = companionName == "thief" ? "thieves" : $"{companionName}s";
                    }
                    formattedGroups.Add($"{companionCount} {companionName}");
                }
                message = $"{formattedGroups[0]} and {formattedGroups[1]}";
            }
            else if (groups.Count() > 2)
            {
                for (int i = 0; i < groups.Count(); i++)
                {
                    companionCount = groups.ElementAt(i).Count;
                    companionName  = groups.ElementAt(i).Key;
                    if (companionCount > 1)
                    {
                        companionName = companionName == "thief" ? "thieves" : $"{companionName}s";
                    }
                    message += (i == groups.Count() - 1) ? $"and {companionCount} {companionName}" : $"{companionCount} {companionName}, ";
                }
            }
            else
            {
                message = "no companions";
            }

            return(message);
        }