private bool DropReleasesCheck(
            PieceEV pieceToDrop,
            Vector2 location,
            PlayerColor playerColor,
            PieceSide side,
            HandPieceEV handPiece,
            DropCheckmateLevel recursionLevel,
            IEntitiesDB entitiesDB)
        {
            bool returnValue;

            PieceEV?topPieceAtLocation = pieceFindService.FindTopPieceByLocation(location, entitiesDB);

            pieceSetService.SetTopOfTowerToFalse(topPieceAtLocation, entitiesDB);

            int tier = topPieceAtLocation.HasValue ? topPieceAtLocation.Value.Tier.Tier + 1 : 1;

            pieceSetService.SetPieceLocationAndTier(pieceToDrop, location, tier, entitiesDB);
            pieceSetService.SetPiecePlayerOwner(pieceToDrop, playerColor, entitiesDB);
            pieceSetService.SetPieceSide(pieceToDrop, side, entitiesDB);
            handService.DecrementHandPiece(ref handPiece);

            PlayerColor enemyPlayerColor = TurnService.CalcOtherTurnPlayer(playerColor);

            returnValue = DropCheckmateNotViolated(
                pieceToDrop,
                location,
                playerColor,
                side,
                handPiece,
                recursionLevel,
                entitiesDB);

            if (returnValue)
            {
                returnValue = !checkService.IsCommanderInCheck(playerColor, entitiesDB);
            }

            handService.IncrementHandPiece(ref handPiece);
            pieceSetService.SetPieceLocationToHandLocation(pieceToDrop, entitiesDB);

            if (topPieceAtLocation.HasValue)
            {
                pieceSetService.SetTopOfTower(topPieceAtLocation.Value, entitiesDB);
            }

            return(returnValue);
        }
        private void MoveCapturePieceToOtherPlayersHand(PieceEV pieceCaptured)
        {
            // Remove piece from player hand
            TurnEV      currentTurn = turnService.GetCurrentTurnEV(entitiesDB);
            HandPieceEV handPiece   = handService.FindHandPiece(
                pieceCaptured.Piece.Front,
                pieceCaptured.Piece.Back,
                currentTurn.TurnPlayer.PlayerColor,
                entitiesDB);

            handService.DecrementHandPiece(ref handPiece);

            // Add piece to other player's hand
            PlayerColor opponent = TurnService.CalcOtherTurnPlayer(currentTurn.TurnPlayer.PlayerColor);

            handService.AddPieceToHand(pieceCaptured, entitiesDB, opponent);
        }
Esempio n. 3
0
 private void UpdateHandPiece(ref HandPieceEV handPiece)
 {
     handService.DecrementHandPiece(ref handPiece);
 }