private bool handleHomeMovement( BoardPiece piece, PieceMovementData movementData, ref List <MovePath> result) { if (piece.boardPosition.type != PositionType.HOME) { return(false); } int ownerIndex = piece.ownerIndex; bool startingPegValid = true; BoardPosition startingPeg = _board.GetStartingPosition(ownerIndex); BoardPiece blockingPiece; if (_board.IsPositionOccupied(startingPeg, out blockingPiece)) { startingPegValid = !blockingPiece.justLeftHome; } if (startingPegValid) { MovePath path = new MovePath(); path.Add(startingPeg); result.Add(path); } return(result.Count > 0); }
public bool GetValidPaths(BoardPiece piece, CardData card, ref List <MovePath> result) { Assert.IsNotNull(piece); Assert.IsNotNull(card); Assert.IsNotNull(result); for (int i = 0; i < card.pieceMovementList.Length; ++i) { PieceMovementData moveData = card.pieceMovementList[i]; //Lots of work to do here! GetValidPaths(piece, moveData, ref result); } return(result.Count > 0); }
public static CardData CreateFromJToken(JToken cardToken) { CardData result = new CardData(); JsonUtility.FromJsonOverwrite(cardToken.ToString(), result); JArray movementArray = JArray.Parse(cardToken.SelectToken("moveType").ToString()); PieceMovementData[] pieceMovementList = new PieceMovementData[movementArray.Count]; for (int i = 0; i < movementArray.Count; ++i) { pieceMovementList[i] = JsonUtility.FromJson <PieceMovementData>(movementArray[i].ToString()); } result.pieceMovementList = pieceMovementList; return(result); }
private bool handleNormalMovement( BoardPiece piece, PieceMovementData movementData, ref List <MovePath> result) { bool hasPath = false; int movementDistance = movementData.value; if (piece.boardPosition.type == PositionType.HOME) { hasPath = false; } else { hasPath = getPathList(movementDistance, piece, movementData.type == MoveType.FORWARDS, ref result); } return(hasPath); }
public bool GetValidPaths(BoardPiece piece, PieceMovementData moveData, ref List <MovePath> result) { Assert.IsNotNull(piece); Assert.IsNotNull(moveData); Assert.IsNotNull(result); bool hasPath = false; string moveType = moveData.type; switch (moveType) { case MoveType.FORWARDS: case MoveType.BACKWARDS: hasPath = handleNormalMovement(piece, moveData, ref result); break; case MoveType.LEAVE_BASE: hasPath = handleHomeMovement(piece, moveData, ref result); break; } return(hasPath); }