public static void JoinToGame(this PlayerModel player, ITournamentGameModel gameModel) { var _gameModel = gameModel; //Tranzakcja dołączenia do gry player.User.GameJoinTransaction(gameModel.TournamentModel.EntryCurrency, gameModel.TournamentModel.EntryPayment); var tournamentPlayer = new TournamentPlayerModel() { PlaceID = 0, Player = player, }; //Dołączenie do listy graczy, jesli gracz nie mial rezerwacji i jest to mozliwe _gameModel.TournamentModel.PlayersList.Add(tournamentPlayer); }
/// <summary> /// Funkcja otryzmuje gracza ktorego musi umiescic na odpowiednim stole dziala tylko gdy gracz stolu NIE POSIADA /// </summary> public void TournamentPlacemenet(TournamentPlayerModel player) { //Sprawdzamy czy gracz jest umieszczony juz na stole, jesli jest to nie dodajemy go nigdzie if (GameList.Select(c => c.GameTableModel).Any(c => c.PlayersList.Any(p => p.User.ID == player.Player.User.ID))) { return; } //Sprawdzamy czy gdzies jest wolne miejsce, jesli nie tworzymy nowy stol var playerTable = GameList.Select(c => c.GameTableModel).FirstOrDefault(c => c.PlayersList.Count() < c.Seats); if (playerTable == null) { //Tworzy nowy stol na liscie stolow do gry playerTable = new TableModel() { Blind = 2m, Currency = Enums.CurrencyType.VIRTUAL, Game = Enums.PokerGameType.Holdem, Limit = Enums.LimitType.NoLimit, Name = GameModel.TournamentModel.Name + " #" + GameModel.TournamentModel.TableList.Count(), Type = Enums.TableType.Tournament, Seats = 9, ActionTimer = 5000, }; this.CreateGame(playerTable); GameModel.TournamentModel.TableList.Add(playerTable); } //Zajmujemy miejsce player.Player.Table = playerTable; player.Player.Seat = playerTable.FreeSeats().First(); playerTable.PlayersList.Add(player.Player); //Otwieramy nowe okno z gra if (player.Player.User.IsOnline()) { player.Player.User.GetClient().OnTableOpenWindow(playerTable); } }