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(); } }
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); }
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)]); }