Example #1
0
        private DiscordEmbedBuilder BuildGameFoundMessage(InhouseGame inhouseGame, InhouseQueue inhouseQueue)
        {
            var blueWinrate  = CalculateBlueSideWinrate(inhouseGame);
            var embedBuilder = new DiscordEmbedBuilder();

            embedBuilder.Title       = "📢Game found📢";
            embedBuilder.Description = $"Blue side expected winrate is {blueWinrate.ToString("0.0")}%\n" +
                                       "If you are ready to play, press âś…\n" +
                                       "If you cannot play, press ❌\n" +
                                       "Recheck if it didn't work the first time";
            var bluePlayers       = inhouseGame.InhousePlayers.Where(x => x.PlayerSide == PlayerSide.Blue).OrderBy(x => x.PlayerRole);
            var bluePlayersString = "";

            foreach (var bluePlayer in bluePlayers)
            {
                bluePlayersString += $"{inhouseQueue.Emojis[bluePlayer.PlayerRole]}{_statusEmojis[bluePlayer.PlayerStatus]}{bluePlayer.Player.DisplayName}\n";
            }
            var redPlayers       = inhouseGame.InhousePlayers.Where(x => x.PlayerSide == PlayerSide.Red).OrderBy(x => x.PlayerRole);
            var redPlayersString = "";

            foreach (var redPlayer in redPlayers)
            {
                redPlayersString += $"{inhouseQueue.Emojis[redPlayer.PlayerRole]}{_statusEmojis[redPlayer.PlayerStatus]}{redPlayer.Player.DisplayName}\n";
            }
            embedBuilder.AddField("BLUE", bluePlayersString, true);
            embedBuilder.AddField("RED", redPlayersString, true);

            return(embedBuilder);
        }
Example #2
0
        public void SetByInhouseQueue(InhouseQueue inhouseQueue)
        {
            var oldInhouseDb = _dbset.FirstOrDefault(x => x.ChannelId == inhouseQueue.ChannelId);

            if (oldInhouseDb != null)
            {
                oldInhouseDb.TopEmoji  = inhouseQueue.Emojis[PlayerRole.Top];
                oldInhouseDb.JglEmoji  = inhouseQueue.Emojis[PlayerRole.Jgl];
                oldInhouseDb.MidEmoji  = inhouseQueue.Emojis[PlayerRole.Mid];
                oldInhouseDb.BotEmoji  = inhouseQueue.Emojis[PlayerRole.Bot];
                oldInhouseDb.SupEmoji  = inhouseQueue.Emojis[PlayerRole.Sup];
                oldInhouseDb.FillEmoji = inhouseQueue.Emojis[PlayerRole.Fill];
                _dbset.Update(oldInhouseDb);
                return;
            }

            var inhouseDb = new InhouseDb
            {
                ChannelId = inhouseQueue.ChannelId,
                TopEmoji  = inhouseQueue.Emojis[PlayerRole.Top],
                JglEmoji  = inhouseQueue.Emojis[PlayerRole.Jgl],
                MidEmoji  = inhouseQueue.Emojis[PlayerRole.Mid],
                BotEmoji  = inhouseQueue.Emojis[PlayerRole.Bot],
                SupEmoji  = inhouseQueue.Emojis[PlayerRole.Sup],
                FillEmoji = inhouseQueue.Emojis[PlayerRole.Fill]
            };

            _dbset.Add(inhouseDb);
        }
Example #3
0
 private void SetUpQueues()
 {
     InhouseQueues = new List <InhouseQueue>();
     InhouseGames  = new List <InhouseGame>();
     try
     {
         var uow      = _db.UnitOfWork();
         var inhouses = uow.Inhouses.GetAll();
         foreach (var inhouse in inhouses)
         {
             var inhouseQueue = new InhouseQueue(inhouse.ChannelId);
             inhouseQueue.Emojis[PlayerRole.Top]  = inhouse.TopEmoji;
             inhouseQueue.Emojis[PlayerRole.Jgl]  = inhouse.JglEmoji;
             inhouseQueue.Emojis[PlayerRole.Mid]  = inhouse.MidEmoji;
             inhouseQueue.Emojis[PlayerRole.Bot]  = inhouse.BotEmoji;
             inhouseQueue.Emojis[PlayerRole.Sup]  = inhouse.SupEmoji;
             inhouseQueue.Emojis[PlayerRole.Fill] = inhouse.FillEmoji;
             InhouseQueues.Add(inhouseQueue);
         }
     }
     catch (Exception ex)
     {
         AegisLog.Log(ex.Message, ex);
     }
 }
Example #4
0
        public async Task TestDbStoreRetrieveInhouseAsync()
        {
            using (var Database = new LiteDatabase(@"test.db"))
            {
                var user1 = new Mock <IUser>();
                user1.Setup(u => u.Username).Returns("bob");
                user1.Setup(u => u.Id).Returns(543);

                var input = new InhouseQueue(987, "test");
                input.Players.Add(user1.Object.Id, Player.ToPlayer(user1.Object, 1000));

                var col = Database.GetCollection <InhouseQueue>();

                col.Delete(u => true);
                col.Insert(input);
                col.EnsureIndex(x => x.Name);

                var channelMock = new Mock <IDiscordClient>();
                channelMock.Setup(u => u.GetUserAsync(user1.Object.Id, It.IsAny <CacheMode>(), It.IsAny <RequestOptions>())).Returns(Task.FromResult(user1.Object));

                var output = await InhouseQueue.GetQueueAsync(input.ChannelId, input.Name, channelMock.Object, col);

                Assert.AreEqual(input.ChannelId, output.ChannelId);
                Assert.AreEqual(input.Name, output.Name);
                Assert.AreEqual(input.Players.Count, output.Players.Count);

                foreach (var player in input.Players)
                {
                    Assert.IsTrue(output.Players.ContainsKey(player.Key));
                    Assert.AreEqual(player.Value.Id, output.Players[player.Key].Id);
                    Assert.AreEqual(player.Value.MMR, output.Players[player.Key].MMR);
                }
            }
        }
Example #5
0
        private async Task <InhouseQueue> SetUpEmoji(InhouseQueue inhouseQueue)
        {
            var channel = await _client.GetChannelAsync(inhouseQueue.ChannelId).ConfigureAwait(false);

            var emojis = await channel.Guild.GetEmojisAsync().ConfigureAwait(false);

            inhouseQueue.Emojis[PlayerRole.Top]  = emojis.FirstOrDefault(x => x.Name == "TOP") ?? "TOP:";
            inhouseQueue.Emojis[PlayerRole.Jgl]  = emojis.FirstOrDefault(x => x.Name == "JGL") ?? "JGL:";
            inhouseQueue.Emojis[PlayerRole.Mid]  = emojis.FirstOrDefault(x => x.Name == "MID") ?? "MID:";
            inhouseQueue.Emojis[PlayerRole.Bot]  = emojis.FirstOrDefault(x => x.Name == "BOT") ?? "BOT:";
            inhouseQueue.Emojis[PlayerRole.Sup]  = emojis.FirstOrDefault(x => x.Name == "SUP") ?? "SUP:";
            inhouseQueue.Emojis[PlayerRole.Fill] = emojis.FirstOrDefault(x => x.Name == "FILL") ?? "FILL:";
            return(inhouseQueue);
        }
Example #6
0
        private void RemovePlayerFromQueueGroup(InhouseQueue inhouseQueue, DiscordMember user)
        {
            var queueGroup = inhouseQueue.PlayersInQueue.FirstOrDefault(x => x.Players.Any(y => y.Player.Id == user.Id));

            if (queueGroup == null)
            {
                return;
            }

            queueGroup.Players.RemoveAll(x => x.Player.Id == user.Id);
            if (queueGroup.Players.Count() == 0)
            {
                inhouseQueue.PlayersInQueue.Remove(queueGroup);
            }
        }
Example #7
0
        public async Task SetQueueChannel(DiscordChannel channel)
        {
            var inhouseQueue = InhouseQueues.FirstOrDefault(x => x.ChannelId == channel.Id);

            if (inhouseQueue != null)
            {
                return;
            }

            inhouseQueue = new InhouseQueue(channel.Id);
            inhouseQueue = await SetUpEmoji(inhouseQueue).ConfigureAwait(false);

            var uow = _db.UnitOfWork();

            uow.Inhouses.SetByInhouseQueue(inhouseQueue);
            await uow.SaveAsync().ConfigureAwait(false);

            await channel.SendMessageAsync($"Inhouse Queue added to {channel.Mention}").ConfigureAwait(false);

            InhouseQueues.Add(inhouseQueue);
        }