Example #1
0
        public (string, EmbedBuilder) GetGameMessage(GameResult game, string title = null, params GameFlag[] flags)
        {
            bool usermentions = flags.Contains(GameFlag.usermentions);

            bool gamestate        = flags.Contains(GameFlag.gamestate);
            bool map              = flags.Contains(GameFlag.map);
            bool time             = flags.Contains(GameFlag.time);
            bool lobby            = flags.Contains(GameFlag.lobby);
            bool pickmode         = flags.Contains(GameFlag.pickmode);
            bool submitter        = flags.Contains(GameFlag.submitter);
            bool remainingPlayers = false;
            bool winningteam      = false;
            bool team1            = false;
            bool team2            = false;

            var message = usermentions ? string.Join(" ", game.Queue.Select(x => MentionUtils.MentionUser(x))) : "";

            var embed = new EmbedBuilder
            {
                Color = Color.Blue
            };

            embed.Title = title ?? $"Game #{game.GameId}";
            var desc = "";

            if (time)
            {
                desc += $"**Creation Time:** {game.CreationTime.ToString("dd MMM yyyy")} {game.CreationTime.ToShortTimeString()}\n";
            }

            if (pickmode)
            {
                desc += $"**Pick Mode:** {game.GamePickMode}\n";
            }

            if (lobby)
            {
                desc += $"**Lobby:** {MentionUtils.MentionChannel(game.LobbyId)}\n";
            }

            if (map && game.MapName != null)
            {
                desc += $"**Map:** {game.MapName}\n";
            }

            if (gamestate)
            {
                team1 = true;
                team2 = true;

                switch (game.GameState)
                {
                case GameResult.State.Canceled:
                    desc       += "**State:** Cancelled\n";
                    embed.Color = Color.DarkOrange;
                    break;

                case GameResult.State.Draw:
                    desc       += "**State:** Draw\n";
                    embed.Color = Color.Gold;
                    break;

                case GameResult.State.Picking:
                    remainingPlayers = true;
                    embed.Color      = Color.Magenta;
                    break;

                case GameResult.State.Decided:
                    winningteam = true;
                    embed.Color = Color.Green;
                    break;

                case GameResult.State.Undecided:
                    break;
                }
            }

            if (winningteam)
            {
                var teamInfo = game.GetWinningTeam();
                embed.AddField($"Winning Team, Team #{teamInfo.Item1}", teamInfo.Item2.GetTeamInfo());
                if (teamInfo.Item1 == 1)
                {
                    team1 = false;
                }
                else if (teamInfo.Item1 == 2)
                {
                    team2 = false;
                }
            }

            if (team1)
            {
                embed.AddField("Team 1", game.Team1.GetTeamInfo());
            }

            if (team2)
            {
                embed.AddField("Team 2", game.Team2.GetTeamInfo());
            }

            if (remainingPlayers)
            {
                var remaining = game.GetQueueRemainingPlayers();
                if (remaining.Any())
                {
                    embed.AddField("Remaining Players", string.Join(" ", game.GetQueueRemainingPlayers().Select(MentionUtils.MentionUser)));
                }
            }

            embed.Description = desc;



            return(message, embed);
        }