public void EnterQueue() // Добавляет игрока в очередь { var name = ContextPlayerName; if (name == null) { return; } var user = PendingPlayers.FirstOrDefault(x => x.Name != name); if (user != null) { var session = new Session(hubContext, new Player() { Name = name }, user); Sessions.Add(session); PendingPlayers.Remove(user); } else if (!PendingPlayers.Any(x => x.Name == name) && !Sessions.Any(x => x.Player1.Name == name || x.Player2.Name == name)) { PendingPlayers.Add(new Player() { Name = name }); } else { return; } }
protected virtual void OfferNewGame(Mobile from) { PendingPlayers.Add(from); State = BoardGameState.Pending; from.SendGump(new OfferNewGameGump(from, this, true)); }
protected virtual void OfferRecruiting(Mobile from) { if (PendingPlayers.IndexOf(from) == -1) { if (PendingPlayers.Count < CurrentMaxPlayers) { PendingPlayers.Add(from); from.SendGump(new OfferNewGameGump(from, this, false)); } else { from.SendMessage("This game has enough players attempting to start a game. Please try again later."); } } else { from.SendGump(new AwaitRecruitmentGump(from, this)); } }