override public bool Equals(Object otherObj) { if (!(otherObj is GridCellKey)) { return(false); } GridCellKey other = (GridCellKey)otherObj; return(row == other.row && col == other.col); }
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); }