Esempio n. 1
0
 public MagicService(SlackService slackService, TrueSkillService trueSkillService, MagicContext context, ILogger <MagicService> logger)
 {
     this.slackService     = slackService;
     this.trueSkillService = trueSkillService;
     this.context          = context;
     this.logger           = logger;
 }
Esempio n. 2
0
        private void handlePlayers(Command command, String channel)
        {
            StringBuilder sb = new StringBuilder();

            // List players if nothing else is supplied with the players command
            if (command.Parameters.Count == 0)
            {
                var players = context.Players.ToList();

                sb.Append("*List of players:*\n");

                foreach (var player in players)
                {
                    sb.Append($"> {player.Name}\n");
                }

                slackService.SendMessage(sb.ToString(), channel);

                return;
            }
            // Add player(s)
            else if (command.Parameters[0].ToLower().Equals("add"))
            {
                command.Parameters.Remove(command.Parameters.FirstOrDefault(x => x.ToLower().Equals("add")));

                if (command.Parameters.Count == 0)
                {
                    slackService.SendMessage("I need one or more people to add.", channel);
                }
                else
                {
                    var defaultRating = TrueSkillService.GetDefaultRating();

                    sb.Append($"*Adding players:*\n");

                    foreach (var playerName in command.Parameters)
                    {
                        if (context.Players.Where(x => x.Name.ToLower().Equals(playerName.ToLower())).FirstOrDefault() == null)
                        {
                            Player player = new Player()
                            {
                                Name = playerName
                            };
                            context.Players.Add(player);

                            context.SaveChanges();

                            sb.Append($"> ..adding {playerName}.\n");
                        }
                        else
                        {
                            sb.Append($"> ..skipping {playerName} since I already know him.\n");
                        }
                    }

                    slackService.SendMessage(sb.ToString(), channel);
                }
            }
            else if (command.Parameters[0].ToLower().Equals("stats"))
            {
                GameMode gameMode = command.GameMode;

                if (gameMode == null)
                {
                    gameMode = context.GameModes.Where(x => x.ShortName.Equals("ffa")).First();
                }

                var rankings = context.Ratings.Where(x => x.GameMode.Equals(gameMode)).Include(x => x.Player).Include(x => x.Deck).OrderByDescending(x => x.ConservativeRating)?.ToList();

                if (rankings == null || rankings.Count == 0)
                {
                    slackService.SendMessage($"No ratings found for {gameMode.Name}.", channel);
                    return;
                }

                sb.Append($"*{gameMode.Name} rankings:*\n");

                int i = 1;
                foreach (var ranking in rankings)
                {
                    sb.Append($"> {i++}: {ranking.Player.Name}'s {ranking.Deck.DeckName} (R={ranking.ConservativeRating.ToString("#.#")} | μ={ranking.Mean.ToString("#.#")} | σ={ranking.StandardDeviation.ToString("#.#")})\n");
                }

                slackService.SendMessage(sb.ToString(), channel);
            }
            else
            {
                slackService.SendMessage("This doesn't make a lot of sense to me.", channel);
            }
        }