Beispiel #1
0
        public override void placeSelected(BoardVector pos)
        {
            switch (_currentChessVidMode)
            {
            case SHOW_PLACE:
                checkStaleMate();
                if (showMovePoint(pos))
                {
                    _currentChessVidMode = SELECT_PLACE;
                }
                break;

            case SELECT_PLACE:
                if (selectMovePoint(pos))
                {
                    _actionPoint -= 2;
                    checkNext();
                }
                break;

            case STAY_HOME:
                if (stayHome(pos))
                {
                    _actionPoint--;
                    checkNext();
                }
                break;
            }
        }
Beispiel #2
0
        public bool stayHome(BoardVector pos)
        {
            var piece = Info.Board.getPiece(pos);

            if (piece == null || piece.getOwner().getId() != getCurrentPlayer().getId())
            {
                return(false);
            }

            if (piece.hasAttribute <StayHomeAttribute>())
            {
                var stayHome = piece.getAttribute <StayHomeAttribute>();
                if (stayHome.IsStayHome)
                {
                    stayHome.outHome();
                }
                else
                {
                    stayHome.stayHome();
                }

                return(true);
            }

            return(false);
        }
Beispiel #3
0
 public MoveInfo(BoardVector direction, int moveAmounts, bool isEndless = false, bool isJump = false)
 {
     this.direction   = direction;
     this.moveAmounts = moveAmounts;
     this.isEndless   = isEndless;
     this.isJump      = isJump;
 }
Beispiel #4
0
        bool placeProcess(BoardVector pos)
        {
            var piece = Info.Board.getPiece(pos);

            if (piece == null)
            {
                return(false);
            }

            if (piece.hasAttribute <CoVidAttribute>() && piece.hasAttribute <StayHomeAttribute>())
            {
                CoVidAttributeUtil.influenceCheck(Info.Board, pos, getTurn());

                var attr = piece.getAttribute <CoVidAttribute>();
                attr.updateTurn(getTurn());

                if (attr.isDeadByCoVid())
                {
                    Info.Board.takePiece(pos);
                }

                var stayHome = piece.getAttribute <StayHomeAttribute>();

                var id = piece.getOwner().getId();
                if (attr.getStage() == 0 && !stayHome.IsStayHome)
                {
                    _unInfluencedPoses[id].Add(pos);
                }

                stayHome.updateTurn();
            }

            return(false);
        }
Beispiel #5
0
        public override void placeSelected(BoardVector pos)
        {
            if (_gamePlayer == null)
            {
                _gamePlayer = info.getFirstPlayer();
            }

            switch (_currentMode)
            {
            case ScmMode.SHOW_MOVE_POINT:
                checkStaleMate();
                if (showMovePoint(pos))
                {
                    _currentMode = ScmMode.SELECT_MOVE_POINT;
                }
                break;

            case ScmMode.SELECT_MOVE_POINT:
                if (selectMovePoint(pos))
                {
                    _currentMode = ScmMode.SHOW_MOVE_POINT;
                    updateTurn();
                }

                break;
            }
        }
Beispiel #6
0
        public void moveTo(Vector2 boardStart, Vector2 squareLength, BoardVector nextPos, float screenScaleRate)
        {
            var deltaVec = new Vector2(
                getRealDeltaPos(squareLength.x, nextPos.x, screenScaleRate),
                getRealDeltaPos(squareLength.y, nextPos.y, screenScaleRate));

            var realVec = boardStart + deltaVec;

            moveTo(realVec);
        }
Beispiel #7
0
        protected bool selectMovePoint(BoardVector pos)
        {
            if (!_currentMovePoints.Contains(pos))
            {
                return(false);
            }

            info.Board.movePiece(_selectingPos, pos);
            cancelMove();
            return(true);
        }
Beispiel #8
0
        bool checkPos(BoardVector pos)
        {
            var piece = Info.Board.getPiece(pos);

            if (piece == null || piece.getOwner().getId() != getCurrentPlayer().getId())
            {
                return(false);
            }

            if (chessMoveSystem.getMovablePos(info, pos).Count > 0)
            {
                _staleMate = false;
                return(true);
            }

            return(false);
        }
Beispiel #9
0
        public override List <BoardVector> getMovablePos(GameInfo info, BoardVector piecePos)
        {
            var  piece          = info.Board.getPiece(piecePos);
            bool useModMoveInfo = false;

            List <MoveInfo> movableInfo = new List <MoveInfo>();

            if (piece.hasAttribute <StayHomeAttribute>())
            {
                var stayHomeAttr = piece.getAttribute <StayHomeAttribute>();
                if (stayHomeAttr.IsStayHome)
                {
                    movableInfo    = stayHomeAttr.getStayHomeMoveInfo();
                    useModMoveInfo = true;
                }
            }

            if (!useModMoveInfo && piece.hasAttribute <CoVidAttribute>())
            {
                var coVidAttr = piece.getAttribute <CoVidAttribute>();
                if (coVidAttr.useModifiedMoveInfo())
                {
                    movableInfo    = coVidAttr.getModifiedMoveInfo();
                    useModMoveInfo = true;
                }
            }

            if (useModMoveInfo)
            {
                var id         = piece.getOwner().getId();
                var dir        = info.getPlayer(id).FrontDirection;
                var allMovable = new List <BoardVector>();
                foreach (var moveInfo in movableInfo)
                {
                    allMovable.AddRange(BoardUtil.getInfoPos(moveInfo, dir, piecePos, info.Board, id));
                }

                return(allMovable);
            }

            return(base.getMovablePos(info, piecePos));
        }
Beispiel #10
0
        public static void influenceCheck(Board board, BoardVector pos, int turn)
        {
            var piece = board.getPiece(pos);

            if (piece == null || !piece.hasAttribute <CoVidAttribute>())
            {
                return;
            }

            var coVid = piece.getAttribute <CoVidAttribute>();

            if (coVid.getStage() <= 0)
            {
                return;
            }

            var id            = piece.getOwner().getId();
            var influenceInfo = coVid.getInfluenceInfo(turn);

            var influenceList = influenceInfo.getInfluenceDir();

            foreach (var influenceDir in influenceList)
            {
                if (influenceInfo.willInfluence())
                {
                    var influencePos = pos + influenceDir;

                    if (board.getStatus(id, influencePos) == SquareStatus.ALLY)
                    {
                        var influencePiece = board.getPiece(influencePos);

                        if (influencePiece.hasAttribute <CoVidAttribute>())
                        {
                            var attr = influencePiece.getAttribute <CoVidAttribute>();
                            attr.influenced(turn);
                        }
                    }
                }
            }
        }
Beispiel #11
0
        protected bool showMovePoint(BoardVector pos)
        {
            var board = info.Board;
            var piece = board.getPiece(pos);

            if (piece == null || piece.getOwner().getId() != _gamePlayer.getId())
            {
                return(false);
            }

            var movable = chessMoveSystem.getMovablePos(info, pos);

            if (movable.Count == 0)
            {
                return(false);
            }

            _currentMovePoints = movable;
            _selectingPos      = pos;

            boardVisual.reset();
            boardVisual.highLightAll(_currentMovePoints);
            return(true);
        }
Beispiel #12
0
 public abstract void turnEndCheck(BoardVector currPos);
Beispiel #13
0
 public bool canMoveTwice(BoardVector currPos)
 {
     return(currPos == _startPos);
 }
Beispiel #14
0
 public void setStartPos(BoardVector startPos)
 {
     _startPos = startPos;
 }
Beispiel #15
0
 public static Vector2 Vector2Scale(this BoardVector boardVector, Vector2 scale)
 {
     return(new Vector2(boardVector.horizontal * scale.x, boardVector.vertical * scale.y));
 }
Beispiel #16
0
 public abstract List <BoardVector> getMovablePos(GameInfo info, BoardVector piecePos);
Beispiel #17
0
 public abstract void placeSelected(BoardVector pos);
Beispiel #18
0
 public virtual void takePiece(BoardVector tookPos)
 {
     _chessPlayer.setPieceNum(_chessPlayer.getPieceNum() - 1);
     Destroy(gameObject);
 }
Beispiel #19
0
 public void highLight(BoardVector pos)
 {
     _boards[pos.x][pos.y].color = highLightColor;
 }
Beispiel #20
0
 public override void turnEndCheck(BoardVector currPos)
 {
     //NONE
 }
Beispiel #21
0
 public static Vector2 AsVector2(this BoardVector boardVector)
 {
     return(new Vector2(boardVector.horizontal, boardVector.vertical));
 }
Beispiel #22
0
 public void unHighLight(BoardVector pos)
 {
     _boards[pos.x][pos.y].color = _colors[pos.x][pos.y];
 }
Beispiel #23
0
 public override void takePiece(BoardVector tookPos)
 {
     getOwner().kingTaken();
     base.takePiece(tookPos);
 }