게시판 제목 잘보고 올리세요 일반게시판에 홍보글 보이면 바로 회원 차단입니다

리마전 소스질문입니다.

컨텐츠 정보

본문

public ArrayList<L1Object> getVisibleObjects(L1Object object, int radius) {

L1Map map = object.getMap();

Point pt = object.getLocation();

ArrayList<L1Object> result = null;


if(radius < 0)

result = new ArrayList<L1Object>(19 * 8);

else if(radius == 0)

result = new ArrayList<L1Object>(2);

else

result = new ArrayList<L1Object>(radius * 8);

if (map.getId() <= MAX_MAP_ID) {

Collection<L1Object> col = _visibleObjects[map.getId()].values();

for (L1Object element : col) {

if (element == null || element.equals(object)) {

continue;

}

if (map != element.getMap()) {

continue;

}


if (radius == -1) {

if (pt.isInScreen(element.getLocation())) {

result.add(element);

}

} else if (radius == 0) {

if (pt.isSamePoint(element.getLocation())) {

result.add(element);

}

} else {

if (pt.getTileLineDistance(element.getLocation()) <= radius) {

result.add(element);

}

}

}

}


return result;

}



파란색으로 색칠부분 소스저 숫자가 무슨뜻인지 설명해주실분있나요?

관련자료

댓글 3
profile_image

빨강이쁜이님의 댓글

ArrayList<L1Object> result = null; // 배열변수 선언



if(radius < 0) //  radius 파라미터로 받은값이 0보다 작으면

result = new ArrayList<L1Object>(19 * 8);  // 배열의 값을 19 곱하기 8 로 초기화함

else if(radius == 0) // radius 파라미터로 받은 값이 0과 같으면

result = new ArrayList<L1Object>(2); // 배열을 0,1,2 (3개 0부터 시작하기때문) 초기화함

else // radius 0 이 아니면

result = new ArrayList<L1Object>(radius * 8); // radius 파라미터로 받은 값의 곱하기 8
profile_image

쭹이님의 댓글

저는 개초보지만 그냥 재생각데로라면 멥하고 레디우스 나오는거 보니 npc 하고 반경 즉 근처의 무언가 있을때 의 조건 문인거같네요
곱하기 들어간건 왠지 맵의 타일값인거같기도 하고 가로세로 곱
profile_image

노딤님의 댓글

radius가 0보다 작은 음수라면 멀리까지 인식합니다.
멀리까지 인식하기때문에 19 * 8이라는 공간을 준비합니다.

radius가 0이라면 자기 자신만 인식합니다.
그래서 2라는 작은 공간만 준비합니다.

radius가 0보다 크다면 조금 더 멀리 인식합니다.
0보다 클때는 radius에 8을 곱한 만큼의 공간을 준비합니다.

즉, radius값이 0보다 작거나/같거나/큰 경우에 따라서 각기 다른 오브젝트 공간을 준비하는 로직입니다.
전체 5 / 1 페이지
번호
제목
이름

포인트 랭킹


알림 0