CommandResult IRoverUnit.Rotate(bool clockwise) { RoverFacing newFacing; if (clockwise) { newFacing = Status.Facing == RoverFacing.West ? RoverFacing.North : (RoverFacing)((int)Status.Facing + 1); } else { newFacing = Status.Facing == RoverFacing.North ? RoverFacing.West : (RoverFacing)((int)Status.Facing - 1); } Status = new RoverStatus(Status.Position, newFacing); return(true); }
CommandResult IRoverUnit.MoveTo(MapCoordinates destination) { Status = new RoverStatus(Map.GetPosition(destination), Status.Facing); return(true); }
internal RoverUnit(RoverStatus initialStatus, Map map) { Status = initialStatus; Map = map; CommandModule = new RoverCommandModule(this); }