private void UpdateQueues()
 {
     lastQueueUpdate = DateTime.Now;
     using (var db = new ZkDataContext())
     {
         var oldQueues = PossibleQueues;
         PossibleQueues = queueConfigs.Select(x =>
         {
             MatchMakerSetup.Queue queue = new MatchMakerSetup.Queue();
             if (oldQueues.Exists(y => y.Name == x.Name))
             {
                 queue = oldQueues.Find(y => y.Name == x.Name);
             }
             var oldmaps             = queue.Maps;
             queue.Name              = x.Name;
             queue.Description       = x.Description;
             queue.MinSize           = x.MinSize;
             queue.MaxSize           = x.MaxSize;
             queue.MaxPartySize      = x.MaxPartySize;
             queue.EloCutOffExponent = x.EloCutOffExponent;
             queue.Game              = server.Game;
             queue.Mode              = x.Mode;
             queue.Maps              =
                 db.Resources
                 .Where(x.MapSelector)
                 .Select(y => y.InternalName)
                 .ToList();
             queue.SafeMaps = queue.Maps.Where(y => oldmaps.Contains(y)).ToList();
             return(queue);
         }).ToList();
     }
 }
Example #2
0
 public ProposedBattle(int size,
                       PlayerEntry initialPlayer,
                       MatchMakerSetup.Queue queue,
                       double eloCutOffExponent,
                       List <PlayerEntry> allPlayers)
 {
     Size      = size;
     owner     = initialPlayer;
     QueueType = queue;
     this.eloCutOffExponent = eloCutOffExponent;
     widthMultiplier        = Math.Max(1.0, 1.0 + (Size - 4) * 0.1);
     AddPlayer(initialPlayer, allPlayers);
 }
Example #3
0
        private string PickMap(MatchMakerSetup.Queue queue)
        {
            Random        r = new Random();
            List <string> candidates;

            if (DateTime.Now.Subtract(lastQueueUpdate).TotalSeconds > MapModChangePauseSeconds)
            {
                candidates = queue.Maps;
            }
            else
            {
                candidates = queue.SafeMaps;
            }
            return(candidates.Count == 0 ? "" : candidates[r.Next(candidates.Count)]);
        }