override public bool Equals(Object otherObj)
        {
            if (!(otherObj is GridCellKey))
            {
                return(false);
            }

            GridCellKey other = (GridCellKey)otherObj;

            return(row == other.row && col == other.col);
        }
Example #2
0
        public List <IMove> FindMoves(GridCellKey position, Faction faction, Grid grid)
        {
            List <IMove> moves = new List <IMove>();

            foreach (var rule in rules)
            {
                moves.AddRange(rule.FindMoves(position, faction, grid));
            }

            return(moves);
        }
        public List <IMove> FindMoves(GridCellKey position, Faction faction, Grid grid)
        {
            List <IMove> moves = new List <IMove>();

            List <GridCellKey> pieces = FindPiecesInMove(position, faction, grid);

            if (HasEnoughPiecesForValidMove(pieces))
            {
                AddMove(pieces, faction, moves);
            }

            return(moves);
        }
        public void SetUp()
        {
            view = Substitute.For <BoardView>();
            piecePlacedSignal     = Substitute.For <PiecePlacedSignal>();
            initializeBoardSignal = Substitute.For <InitializeBoardSignal>();

            System.Random r = new System.Random();
            position = new GridCellKey(r.Next(8), r.Next(8));
            faction  = r.NextDouble() > .5 ? Faction.Black : Faction.White;

            go                        = GameObject.CreatePrimitive(PrimitiveType.Cube);
            _instance                 = go.AddComponent <BoardViewMediator>();
            _instance.View            = view;
            _instance.PiecePlaced     = piecePlacedSignal;
            _instance.InitializeBoard = initializeBoardSignal;
        }
        private List <GridCellKey> FindPiecesInMove(GridCellKey position, Faction faction, Grid grid)
        {
            List <GridCellKey> pieces = new List <GridCellKey>();

            pieces.Add(position);
            GridCellKey currentPos = new GridCellKey(position.row + direction.row, position.col + direction.col);

            while (currentPos.row >= 0 && currentPos.row < grid.NumRows && currentPos.col >= 0 && currentPos.col < grid.NumCols)
            {
                Faction curFaction = grid.GetPiece(currentPos.row, currentPos.col);
                if (Faction.None == curFaction)
                {
                    break;
                }
                pieces.Add(new GridCellKey(currentPos.row, currentPos.col));
                if (faction == curFaction)
                {
                    break;
                }
                currentPos.row += direction.row;
                currentPos.col += direction.col;
            }
            return(pieces);
        }
        public void ReturnsMovesFoundByAllRules()
        {
            GridCellKey position = new GridCellKey(2, 2);
            Faction     faction  = Faction.White;
            Grid        grid     = new Grid(8, 8);

            IMove        move0  = Substitute.For <IMove>();
            List <IMove> moves0 = new List <IMove>();

            moves0.Add(move0);
            rule0.FindMoves(position, faction, grid).Returns(moves0);

            IMove        move1  = Substitute.For <IMove>();
            List <IMove> moves1 = new List <IMove>();

            moves1.Add(move1);
            rule1.FindMoves(position, faction, grid).Returns(moves1);

            List <IMove> result = _instance.FindMoves(position, faction, grid);

            Assert.AreEqual(2, result.Count);
            Assert.Contains(move0, result);
            Assert.Contains(move1, result);
        }
 public void HandleBoardInitialized(GridCellKey boardDimensions)
 {
     View.SetBoardDimensions(boardDimensions.row, boardDimensions.col);
 }
 public void HandlePiecePlaced(GridCellKey position, Faction faction)
 {
     View.SetFaction(position.row, position.col, faction);
 }
 private void BuildTestObj(GridCellKey direction)
 {
     _instance = new DirectionalMoveRule(MinimumPiecesToTake, direction);
     _instance.InjectionBinder = injector;
 }
 public DirectionalMoveRule(int minimumPiecesToCapture, GridCellKey direction)
 {
     this.minimumPiecesToCapture = minimumPiecesToCapture;
     this.direction = direction;
 }
 public bool Equals(GridCellKey other)
 {
     return(row == other.row && col == other.col);
 }