コード例 #1
0
        private void NextActionClickImmobileCaptureModal(ref ClickPieceStepState token)
        {
            var clickState = new ClickImmobileCaptureStepState
            {
                TileReferenceEV = tileService.FindTileEV(token.ClickedPiece.Location.Location, entitiesDB)
            };

            decideClickImmobileCaptureSequence.Next(this, ref clickState, (int)StepAB.A);
        }
コード例 #2
0
        private void NextAction(ModalEV modal, PieceSide answer)
        {
            var dropToken = new DropStepState
            {
                HandPiece       = handService.FindHandPiece(modal.DropFrontBackModal.HandPieceReferenceId, entitiesDB),
                DestinationTile = tileService.FindTileEV(modal.DropFrontBackModal.TileReferenceId, entitiesDB),
                Side            = modal.DropFrontBackModal.Answer.value
            };

            dropModalAnswerSequence.Next(this, ref dropToken);
        }
コード例 #3
0
        public BoardPressStateInfo FindBoardPressStateInfo(IEntitiesDB entitiesDB, ref BoardPressStepState token)
        {
            BoardPressStateInfo returnValue = new BoardPressStateInfo
            {
                piece = pieceFindService.FindPieceEVById(token.PieceEntityId, entitiesDB),
                tile  = tileService.FindTileEVById(token.TileEntityId, entitiesDB),
                pieceAtDestination = null, // If movement-related information is later required
                handPiece          = handService.FindHighlightedHandPiece(entitiesDB)
            };

            if (!returnValue.piece.HasValue &&
                returnValue.tile.HasValue &&
                returnValue.tile.Value.Tile.PieceRefEntityId.HasValue &&
                returnValue.tile.Value.Tile.PieceRefEntityId != 0)    // Find by tile information
            {
                returnValue.piece = pieceFindService.FindPieceEVById(
                    returnValue.tile.Value.Tile.PieceRefEntityId.Value, entitiesDB);
            }

            if (!returnValue.tile.HasValue) // Find by piece information
            {
                returnValue.tile = tileService.FindTileEV(
                    returnValue.piece.Value.Location.Location, entitiesDB);
            }

            if (returnValue.tile.HasValue && !returnValue.piece.HasValue)
            {
                returnValue.piece = pieceFindService.FindTopPieceByLocation(
                    returnValue.tile.Value.Location.Location, entitiesDB);
            }

            if (returnValue.tile.HasValue)
            {
                returnValue.pieceAtDestination = pieceFindService.FindTopPieceByLocation(
                    returnValue.tile.Value.Location.Location, entitiesDB);
            }

            // Movement: Piece is clicked with intention to move a DIFFERENT piece to that tile location
            if (returnValue.tile.HasValue &&
                returnValue.tile.Value.Tile.PieceRefEntityId.HasValue &&
                returnValue.tile.Value.Tile.PieceRefEntityId.Value != 0 &&
                returnValue.piece.HasValue &&
                returnValue.piece.Value.Location.Location == returnValue.tile.Value.Location.Location)
            {
                returnValue.piece = pieceFindService.FindPieceEVById(
                    returnValue.tile.Value.Tile.PieceRefEntityId.Value, entitiesDB);
            }

            return(returnValue);
        }
コード例 #4
0
 private TileEV FindDestinationTile(ModalEV modal)
 {
     return(tileService.FindTileEV(modal.CaptureOrStack.TileReferenceId, entitiesDB));
 }