public void setMasqueradesAs(string type) { masqueradesAs = type; switch (masqueradesAs) { case "pawn": mModel = ModelSelector.getModel(mPlayer == Color.WHITE ? ModelSelector.Pieces.WHITE_PAWN : ModelSelector.Pieces.BLACK_PAWN); break; case "rook": mModel = ModelSelector.getModel(mPlayer == Color.WHITE ? ModelSelector.Pieces.WHITE_ROOK : ModelSelector.Pieces.BLACK_ROOK); break; case "knight": mModel = ModelSelector.getModel(mPlayer == Color.WHITE ? ModelSelector.Pieces.WHITE_KNIGHT : ModelSelector.Pieces.BLACK_KNIGHT); break; case "bishop": mModel = ModelSelector.getModel(mPlayer == Color.WHITE ? ModelSelector.Pieces.WHITE_BISHOP : ModelSelector.Pieces.BLACK_BISHOP); break; case "queen": mModel = ModelSelector.getModel(mPlayer == Color.WHITE ? ModelSelector.Pieces.WHITE_QUEEN : ModelSelector.Pieces.BLACK_QUEEN); break; case "king": mModel = ModelSelector.getModel(mPlayer == Color.WHITE ? ModelSelector.Pieces.WHITE_KING : ModelSelector.Pieces.BLACK_KING); break; } }
private Model selectModel(int curX, int curY) { Model lightCube = ModelSelector.getModel(ModelSelector.Pieces.LIGHT_SQUARE); Model darkCube = ModelSelector.getModel(ModelSelector.Pieces.DARK_SQUARE); Model greenSquare = ModelSelector.getModel(ModelSelector.Pieces.GREEN_SQUARE); Model redSquare = ModelSelector.getModel(ModelSelector.Pieces.RED_SQUARE); switch (mBoardSquares[curX, curY]) { case BoardSquare.CAN_TAKE: return(redSquare); case BoardSquare.CAN_MOVE: return(greenSquare); default: if (curX % 2 == 0) { if (curY % 2 == 0) { return(lightCube); } else { return(darkCube); } } else { if (curY % 2 == 0) { return(darkCube); } else { return(lightCube); } } } }
private void initialize(ContentManager _content, Color _player, Piece _type, Vector2 _position, string _masqueradeType) { mType = _type; mPlayer = _player; content = _content; masqueradesAs = _masqueradeType; switch (masqueradesAs) { case "pawn": mModel = ModelSelector.getModel(_player == Color.WHITE ? ModelSelector.Pieces.WHITE_PAWN : ModelSelector.Pieces.BLACK_PAWN); break; case "rook": mModel = ModelSelector.getModel(_player == Color.WHITE ? ModelSelector.Pieces.WHITE_ROOK : ModelSelector.Pieces.BLACK_ROOK); break; case "knight": mModel = ModelSelector.getModel(_player == Color.WHITE ? ModelSelector.Pieces.WHITE_KNIGHT : ModelSelector.Pieces.BLACK_KNIGHT); break; case "bishop": mModel = ModelSelector.getModel(_player == Color.WHITE ? ModelSelector.Pieces.WHITE_BISHOP : ModelSelector.Pieces.BLACK_BISHOP); break; case "queen": mModel = ModelSelector.getModel(_player == Color.WHITE ? ModelSelector.Pieces.WHITE_QUEEN : ModelSelector.Pieces.BLACK_QUEEN); break; case "king": mModel = ModelSelector.getModel(_player == Color.WHITE ? ModelSelector.Pieces.WHITE_KING : ModelSelector.Pieces.BLACK_KING); break; } mPosition = _position; }
public void Draw() { if (mDetectionResult != null) { if ((mBoardMarker != null)) { Microsoft.Xna.Framework.Matrix boardMat = mBoardMarker.Transformation.ToXnaMatrix(), selectorMat = mDetectionResult.Transformation.ToXnaMatrix(), boardMat_inv; boardMat_inv = Microsoft.Xna.Framework.Matrix.Invert(boardMat); Vector3 position = new Vector3(0, 0, 0); Vector3 direction = new Vector3(0, -1, -1); position = Vector3.Transform(position, selectorMat * boardMat_inv); //direction = Vector3.Transform(direction, selectorMat * boardMat_inv); position = position / 31; //direction = direction / 31; //System.Diagnostics.Debug.WriteLine(position); Vector3 boardCoord = (position + direction * position.Z) + new Vector3(8.5f, 8.5f, 0); int x = (int)(boardCoord.X < 5 ? (4 - boardCoord.X) * -1 : boardCoord.X - 4), y = (int)(boardCoord.Y < 5 ? (4 - boardCoord.Y) * -1 : boardCoord.Y - 4); if ((x >= 0) && (x <= 7) && (y >= 0) && (y <= 7)) { // Selection is on board if (mPosition != new Vector2(x, y)) { // Selection has changed selectedSince = DateTime.Now; mPosition.X = x; mPosition.Y = y; mSelected = false; } else { // Selection has been held DateTime time = DateTime.Now; long elapsedTicks = time.Ticks - selectedSince.Ticks; TimeSpan elapsedSpan = new TimeSpan(elapsedTicks); if (elapsedSpan.TotalSeconds > 2.0) { // Selection has been held 1 second //mSelected = true; selectedSince = DateTime.Now; GameState state = GameState.getInstance(); state.setSelected(mPosition); } } } direction = direction * 15; ModelDrawer.DrawLine(mBoardMarker, position, position + direction); ModelDrawer.Draw(mBoardMarker, ModelSelector.getModel(ModelSelector.Pieces.RED_SQUARE), x, y, 0.2); } } }