public void Move_RoughTerrain_UnitStationary(MoveAction.Direction direction, int x, int y)
        {
            //Setup
            var unit = CreateUnit();

            unit.Setup(u => u.Location).Returns(new Point(5, 5));
            var newLocation = new Point(x, y);

            var state = CreateStateMock(CreateUnitList(unit));

            state.Setup(s => s.Geography.GetTerrainAt(newLocation)).Returns(Geography.Terrain.ROUGH);
            AddUnitToState(unit, state);


            var action = new MoveAction(direction);
            UnitActionCollection actions = new UnitActionCollection();

            actions.AddAction(unit.Object.Id, action);

            var subject = new ActionExecutor(state.Object);


            //Act
            subject.Execute(actions);

            //Assert
            //Moved in the correct direction
            unit.Verify(u => u.Move(newLocation), Times.Never);
        }
示例#2
0
        private void MoveUnit(Unit unit, MoveAction.Direction moveDirection)
        {
            Point newLocation = unit.Location;

            switch (moveDirection)
            {
            case MoveAction.Direction.NORTH:
                newLocation.Offset(0, -1);
                break;

            case MoveAction.Direction.EAST:
                newLocation.Offset(1, 0);
                break;

            case MoveAction.Direction.SOUTH:
                newLocation.Offset(0, 1);
                break;

            case MoveAction.Direction.WEST:
                newLocation.Offset(-1, 0);
                break;
            }
            if (State.Geography.GetTerrainAt(newLocation) == Geography.Terrain.NORMAL)
            {
                unit.Move(newLocation);
            }
        }