Ejemplo n.º 1
0
        private void ToStreet(object obj)
        {
            if (obj == null)
            {
                return;
            }

            StopTimer(null);

            if (Enum.TryParse(obj.ToString(), out Street outStreet))
            {
                var streetState = TableStateList.FirstOrDefault(x => x.CurrentStreet == outStreet);

                if (streetState != null)
                {
                    if (outStreet <= Street.Preflop)
                    {
                        PlayersCollection.Where(x => x.IsFinished && TableStateList.Any(t => t.ActivePlayer.Name == x.Name)).ForEach(x => x.IsFinished = false);
                    }

                    StateIndex = TableStateList.IndexOf(streetState);

                    UpdatePlayersEquityWin(TableStateList.FirstOrDefault(x => x.CurrentStreet == outStreet)); //update equity win property of all players
                }
            }
        }
Ejemplo n.º 2
0
        private void RefreshBoard(decimal[] equities, Street street)
        {
            foreach (ReplayerTableState replayerTableState in TableStateList.Where(st => st.CurrentStreet == street))
            {
                try
                {
                    _playerInState = PlayersCollection.FirstOrDefault(u => u.Name == replayerTableState.CurrentAction.PlayerName);
                    if (_playerInState != null &&
                        ActivePlayerHasHoleCard.FirstOrDefault(x => x.PlayerName == replayerTableState.CurrentAction.PlayerName) != null &&
                        replayerTableState.CurrentAction != null &&
                        ActivePlayerHasHoleCard.Count > 1)
                    {
                        replayerTableState.ActivePlayer.EquityWin = equities[ActivePlayerHasHoleCard.IndexOf(ActivePlayerHasHoleCard.FirstOrDefault(x => x.PlayerName == replayerTableState.CurrentAction.PlayerName))];
                    }
                    else
                    {
                        replayerTableState.ActivePlayer.EquityWin = -1;
                    }


                    ReplayerPlayerViewModel.CopyEquityWin(replayerTableState.ActivePlayer, _playerInState);
                }
                catch (Exception ex)
                {
                    LogProvider.Log.Error(typeof(Converter), $"Player with name '{replayerTableState.CurrentAction.PlayerName}' has not been found in PlayerCollection in method RefreshBoard in ReplayerViewModel class", ex);
                }
            }
        }
Ejemplo n.º 3
0
        private void ToStart(object obj)
        {
            StopTimer(null);

            PlayersCollection.Where(x => x.IsFinished && TableStateList.Any(t => t.ActivePlayer.Name == x.Name)).ForEach(x => x.IsFinished = false);
            StateIndex = 0;
        }
 public async Task CreatePlayer(Player player)
 {
     try
     {
         await PlayersCollection.InsertOneAsync(player);
     }
     catch (Exception e)
     {
         logger.Error(e, "Failed to create player {0}.", player.Id);
     }
 }
Ejemplo n.º 5
0
        private void ToEnd(object obj)
        {
            StopTimer(null);

            ResetPlayersPot(PlayersCollection);
            PlayersCollection.Where(x => !x.IsFinished && TableStateList.Any(t => t.ActivePlayer.Name == x.Name && t.ActivePlayer.IsFinished)).ForEach(x => x.IsFinished = true);
            StateIndex = TableStateList.Count - 1;

            ReplayerTableState replayerTableStateBeforeSummary = TableStateList.FirstOrDefault(x => x.CurrentStreet == Street.Summary);

            UpdatePlayersEquityWin(replayerTableStateBeforeSummary); //added in order to update equity state for winning actions when we go to the end of TableStateList
        }
        public async Task UpdatePlayer(Player player)
        {
            try
            {
                var builder = Builders <Player> .Filter;
                var filter  = builder.Eq(e => e.Id, player.Id);

                await PlayersCollection.ReplaceOneAsync(filter, player);
            }
            catch (Exception e)
            {
                logger.Error(e, "Failed to save player {0}.", player.Id);
            }
        }
Ejemplo n.º 7
0
        //public void SelectedPlayers()
        //{
        //    _mvxMessenger.Publish<SelectedPlayersMessage>(new SelectedPlayersMessage(this, PlayersCollection));
        //}

        void SelectedPlayer(PlayerViewModel player)
        {
            player.IsSelected = !player.IsSelected;

            if (PlayersCollection.Where(p => p.IsSelected).Count() > 0)
            {
                IsPlayerSelected = true;
                Title            = string.Format("{0} selected", PlayersCollection.Where(p => p.IsSelected).Count());
            }
            else
            {
                IsPlayerSelected = false;
                Title            = "Players";
            }
        }
        public async Task <Player> GetPlayer(Guid playerId)
        {
            try
            {
                var builder = Builders <Player> .Filter;
                var filter  = builder.Eq(e => e.Id, playerId);

                return(await PlayersCollection.Find(filter).FirstOrDefaultAsync());
            }
            catch (Exception e)
            {
                logger.Error(e, "Failed to get player {0}.", playerId);
                return(null);
            }
        }
        public async Task <List <Player> > GetAccountPlayers(ulong steamId, int worldServerIdentifier = 101)
        {
            try
            {
                var builder = Builders <Player> .Filter;
                var filter  = builder.Eq(e => e.SteamId, steamId) & builder.Eq(e => e.WorldServerIdentifier, worldServerIdentifier);

                return(await PlayersCollection.Find(filter).ToListAsync());
            }
            catch (Exception e)
            {
                logger.Error(e, "Failed to get account players for {0}:{1}.", steamId, worldServerIdentifier);
                return(new List <Player>());
            }
        }
Ejemplo n.º 10
0
        private ReplayerPlayerViewModel GetActivePlayerForState(ReplayerTableState state)
        {
            if (state.ActivePlayer == null)
            {
                return(null);
            }

            var activePlayer = PlayersCollection.FirstOrDefault(x => x.Name == state.ActivePlayer.Name);

            if (activePlayer != null)
            {
                ReplayerPlayerViewModel.Copy(state.ActivePlayer, activePlayer);
            }

            return(activePlayer);
        }
Ejemplo n.º 11
0
        private void LoadState(int stateIndex)
        {
            if (stateIndex < 0 || stateIndex >= TableStateList.Count)
            {
                return;
            }

            bool isBackward = stateIndex < StateIndex;
            bool isRefreshPlayersRequired = Math.Abs(stateIndex - StateIndex) > 1;
            ReplayerTableState state      = TableStateList[stateIndex];

            UpdatePlayersEquityWin(state);
            CurrentStreet   = state.CurrentStreet;
            CurrentPotValue = state.CurrentPotValue;
            UpdateTotalPot(state.TotalPotValue);

            if (!IsShowHoleCards)
            {
                ProcessPlayersCards();
            }

            ResetLastActivePlayer(isBackward);

            if (isRefreshPlayersRequired)
            {
                UpdatePlayersToState(state);
            }

            if (state.IsStreetChangedAction)
            {
                ResetPlayersPot(PlayersCollection);
                return;
            }

            var activePlayer = GetActivePlayerForState(state);

            if (activePlayer != null)
            {
                if (activePlayer.IsWin)
                {
                    ResetPlayersPot(PlayersCollection.AsQueryable().Where(x => x != activePlayer));
                }

                activePlayer.UpdateChips();
            }
        }
Ejemplo n.º 12
0
        private void ResetLastActivePlayer(bool resetChipsToPreviousState = false)
        {
            var prevActive = PlayersCollection.FirstOrDefault(x => x.IsActive);

            if (prevActive != null)
            {
                prevActive.IsActive     = false;
                prevActive.ActionString = string.Empty;

                if (resetChipsToPreviousState)
                {
                    prevActive.Bank         = prevActive.OldBank;
                    prevActive.ActiveAmount = prevActive.OldAmount;
                    prevActive.UpdateChips();
                    prevActive.IsFinished = false;
                }
            }
        }
Ejemplo n.º 13
0
        private void SetPlayersDefaults()
        {
            PlayersCollection.ForEach(x => x.Reset());

            if (CurrentGame == null)
            {
                return;
            }

            var dealer = CurrentGame.Players.FirstOrDefault(x => x.SeatNumber == CurrentGame.DealerButtonPosition);

            foreach (Player player in CurrentGame.Players)
            {
                int i = GetPlayersSeatNumber(player, CurrentGame.Players, CurrentGame.GameDescription.SeatType.MaxPlayers);

                PlayersCollection[i].Name       = player.PlayerName;
                PlayersCollection[i].IsFinished = false;
                PlayersCollection[i].Bank       = player.StartingStack;

                var anteAction = CurrentGame.HandActions.FirstOrDefault(x => x.HandActionType == HandActionType.ANTE && x.PlayerName == player.PlayerName);

                if (anteAction != null)
                {
                    PlayersCollection[i].Bank -= Math.Abs(anteAction.Amount);
                }

                if (dealer == player)
                {
                    PlayersCollection[i].IsDealer = true;
                }

                if (player.hasHoleCards)
                {
                    bool canHideCards = !IsShowHoleCards && ActivePlayerName != player.PlayerName;

                    PlayersCollection[i].SetCards(player.HoleCards.Select(x => x.CardIntValue).ToArray(), canHideCards);
                    PlayersCollection[i].HideCards();
                }
            }
        }
Ejemplo n.º 14
0
        private ReplayerPlayerViewModel GetActivePlayerLastState(HandAction action)
        {
            ReplayerPlayerViewModel activePlayer;

            string activePlayerName = action.PlayerName;

            ReplayerTableState activePlayerLastState = TableStateList.LastOrDefault(x => x.ActivePlayer != null && x.ActivePlayer.Name == activePlayerName);

            if (activePlayerLastState == null)
            {
                activePlayer = PlayersCollection.LastOrDefault(x => x.Name == activePlayerName);
            }
            else
            {
                activePlayer = activePlayerLastState.ActivePlayer;
            }

            if (activePlayer == null)
            {
                throw new ArgumentNullException(nameof(activePlayer), $"Cannot find player with name: {activePlayerName}");
            }

            return(activePlayer);
        }