public void RecordMoves(IEnumerable <Move> moves)
 {
     foreach (Move move in moves)
     {
         AllMoves.Add(move);
     }
 }
Ejemplo n.º 2
0
 public void AddMove(Move move)
 {
     IsLastMoveMonomino = move.PieceVariant.Squares.Length == 1;
     Board.PlacePiece(move, CurrentPlayerColor);
     CurrentPlayerHand.Remove(move);
     AllMoves.Add(move);
 }
Ejemplo n.º 3
0
        public void RecordMove(Move move)
        {
            Models.Utils.Log($"{_roundId}|{move.Player.Position}-{move.Player.Name} made a move:{move.Decision.DecisionType}-{move.Decision.ChipsAdded}");
            var decisionPlayer = Players.First(p => p.Equals(move.Player));

            if (move.Decision.DecisionType != DecisionType.Ante)
            {
                decisionPlayer.SetPolled();
            }

            decisionPlayer.ChipsBetByStage[StageEnum] += move.Decision.ChipsAdded;

            MostChipsBetByRound[StageEnum] = Players.Max(p => p.ChipsBetByStage[StageEnum]);

            switch (move.Decision.DecisionType)
            {
            case DecisionType.Raise:
            case DecisionType.Reraise:
                foreach (var player in Players)
                {
                    if (!player.Equals(decisionPlayer))
                    {
                        player.ResetPolled();
                    }
                }
                break;

            case DecisionType.Fold:
                decisionPlayer.Fold();
                break;

            case DecisionType.AllIn:
                decisionPlayer.AllIn();
                break;
            }

            AllMoves.Add(move);

            switch (StageEnum)
            {
            case StageEnum.Preflop:
                PreflopMoves.Add(move);
                break;

            case StageEnum.Flop:
                FlopMoves.Add(move);
                break;

            case StageEnum.Turn:
                TurnMoves.Add(move);
                break;

            case StageEnum.River:
                RiverMoves.Add(move);
                break;

            default:
                throw new InvalidOleVariantTypeException($"Move not accepted in {StageEnum}");
            }
        }
Ejemplo n.º 4
0
 private Move(string name, Type type, MoveCategory category, int attackPower,
              Action <Pokémon, Pokémon> additionalEffects)
 {
     Name        = name;
     AttackType  = type;
     Category    = category;
     AttackPower = attackPower;
     AllMoves.Add(this);
 }
Ejemplo n.º 5
0
        protected virtual void TryMove(bool backInTime = false, bool send_events = true)
        {
            BoardPosition   captureOnTheIsle;
            IChessItemModel killed_chess;
            bool            tryMoveResult = BoardKit.TryMoveChessItem(CurrentPlayer.Side, PreviousSelectedPosition, CurrentSelectedPosition, out captureOnTheIsle, out killed_chess);

            if (tryMoveResult)
            {
                AllMoves.Add(new FigureMove(PreviousSelectedPosition, CurrentSelectedPosition, killed_chess, CurrentPlayer.Side));

                PreviousPlayer = Players[currentPlayerIndex];
                if (++currentPlayerIndex >= Players.Count)
                {
                    currentPlayerIndex = 0;
                }
                CurrentPlayer = Players[currentPlayerIndex];
            }

            //If move is ready
            if (tryMoveResult)
            {
                var prev_item = BoardKit.GetFigureFromBoard(PreviousSelectedPosition);
                var curr_item = BoardKit.GetFigureFromBoard(CurrentSelectedPosition);


                if (!prev_item.IsNullObject && !curr_item.IsNullObject)
                {
                    LastPlayerAction = PlayerAction.Move;
                    if (send_events)
                    {
                        OnChanged_Invoke(PreviousPlayer.Side);
                    }
                }
                else
                {
                    LastPlayerAction = PlayerAction.MoveAndKill;
                    if (send_events)
                    {
                        OnChanged_Invoke(PreviousPlayer.Side);
                    }
                }

                CurrentSelectedPosition  = BoardPosition.None;
                PreviousSelectedPosition = BoardPosition.None;
                if (send_events)
                {
                    CheckForCheckAndMate(send_events);
                }
            }
            else
            {
                CurrentSelectedPosition  = PreviousSelectedPosition;
                PreviousSelectedPosition = BoardPosition.None;
            }
        }
Ejemplo n.º 6
0
        public void RecordMove(Move move)
        {
            var decisionPlayer = Players.First(p => p.Equals(move.Player));

            if (move.Decision.DecisionType != DecisionType.Ante)
            {
                decisionPlayer.SetPolled();
            }

            decisionPlayer.ChipsBetByStage[StageEnum] += move.Decision.ChipsAdded;

            MostChipsBetByRound[StageEnum] = Players.Max(p => p.ChipsBetByStage[StageEnum]);

            switch (move.Decision.DecisionType)
            {
            case DecisionType.Raise:
            case DecisionType.Reraise:
                foreach (var player in Players)
                {
                    if (!player.Equals(decisionPlayer))
                    {
                        player.ResetPolled();
                    }
                }
                break;

            case DecisionType.Fold:
                decisionPlayer.Fold();
                break;

            case DecisionType.AllIn:
                decisionPlayer.AllIn();
                break;
            }

            AllMoves.Add(move);

            switch (StageEnum)
            {
            case StageEnum.Preflop:
                PreflopMoves.Add(move);
                break;

            case StageEnum.Flop:
                FlopMoves.Add(move);
                break;

            case StageEnum.Turn:
                TurnMoves.Add(move);
                break;

            case StageEnum.River:
                RiverMoves.Add(move);
                break;

            default:
                throw new InvalidOperationException($"Move not accepted in {StageEnum}");
            }

            if (move.Decision.DecisionType == DecisionType.Raise ||
                move.Decision.DecisionType == DecisionType.Reraise)
            {
                if (StageEnum == StageEnum.Preflop)
                {
                    PreflopRaiser = move.Player;
                }
                CurrentRaiser = move.Player;
            }

            int chipsToCall = MostChipsBetByRound[StageEnum] - move.Player.ChipsBetByStage[StageEnum];

            if (move.Decision.DecisionType == DecisionType.AllIn && move.Decision.ChipsAdded > chipsToCall)
            {
                CurrentRaiser = move.Player;
            }

            if (move.Decision.DecisionType != DecisionType.Check && move.Decision.DecisionType != DecisionType.Fold)
            {
                IsRaised = true;
            }
        }
Ejemplo n.º 7
0
        protected override void TryMove(bool backInTime = false, bool send_events = true)
        {
            BoardPosition   captureOnTheIsle;
            IChessItemModel killed_chess;

            var  prev_item         = BoardKit.GetFigureFromBoard(PreviousSelectedPosition);
            byte prev_item_type    = prev_item.Type;
            bool prev_item_is_null = prev_item.IsNullObject;
            var  curr_item         = BoardKit.GetFigureFromBoard(CurrentSelectedPosition);
            byte curr_item_type    = curr_item.Type;
            bool curr_item_is_null = curr_item.IsNullObject;

            bool tryMoveResult = BoardKit.TryMoveChessItem(CurrentPlayer.Side, PreviousSelectedPosition, CurrentSelectedPosition, out captureOnTheIsle, out killed_chess);

            if (tryMoveResult)
            {
                AllMoves.Add(new FigureMove(PreviousSelectedPosition, CurrentSelectedPosition, killed_chess, CurrentPlayer.Side));

                PreviousPlayer = Players[currentPlayerIndex];
                if (++currentPlayerIndex >= Players.Count)
                {
                    currentPlayerIndex = 0;
                }
                CurrentPlayer = Players[currentPlayerIndex];
            }

            //If move is ready
            if (tryMoveResult)
            {
                if (!prev_item_is_null && !curr_item_is_null)
                {
                    if (prev_item_type == (byte)ClassicChessItemType.king && curr_item_type == (byte)ClassicChessItemType.rook ||
                        prev_item_type == (byte)ClassicChessItemType.rook && curr_item_type == (byte)ClassicChessItemType.king)
                    {
                        TryMakeCastling(backInTime);
                    }
                    else
                    {
                        LastPlayerAction = PlayerAction.MoveAndKill;
                        if (send_events)
                        {
                            OnChanged_Invoke(PreviousPlayer.Side);
                        }
                    }
                }
                else
                {
                    LastPlayerAction = PlayerAction.Move;
                    if (send_events)
                    {
                        OnChanged_Invoke(PreviousPlayer.Side);
                    }
                }

                CurrentSelectedPosition  = BoardPosition.None;
                PreviousSelectedPosition = BoardPosition.None;
                CheckForCheckAndMate(send_events);
            }
            else
            {
                CurrentSelectedPosition  = PreviousSelectedPosition;
                PreviousSelectedPosition = BoardPosition.None;
            }
        }