리마전 소스질문입니다.

경험치랭킹
포인트랭킹
글작성랭킹
댓글작성랭킹
리니지연구소 통계
  • 860(9) 명현재 접속자
  • 9,245 명오늘 방문자
  • 11,106 명어제 방문자
  • 17,525 명최대 방문자
  • 3,640,320 명전체 방문자
  • 491,935 개전체 게시물
  • 54,935 개전체 댓글수
  • 11,778 명전체 회원수
SNS 공유
    Facebook Twitter GooglePlus KakaoStory NaverBand
홍보글은 홍보게시판에만.. 게시판 잘보고 올리세요! 홍보게시판 외에 홍보글 발견시 바로 아이디 차단됩니다!
새글
새댓글
질문게시판

리마전 소스질문입니다.

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;

}



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

채택됨
노딤 04.03 14:32  
radius가 0보다 작은 음수라면 멀리까지 인식합니다.
멀리까지 인식하기때문에 19 * 8이라는 공간을 준비합니다.

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

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

즉, radius값이 0보다 작거나/같거나/큰 경우에 따라서 각기 다른 오브젝트 공간을 준비하는 로직입니다.
3 Comments
빨강이쁜이 04.03 10:30  
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
쭹이 04.03 12:32  
저는 개초보지만 그냥 재생각데로라면 멥하고 레디우스 나오는거 보니 npc 하고 반경 즉 근처의 무언가 있을때 의 조건 문인거같네요
곱하기 들어간건 왠지 맵의 타일값인거같기도 하고 가로세로 곱
노딤 04.03 14:32  
radius가 0보다 작은 음수라면 멀리까지 인식합니다.
멀리까지 인식하기때문에 19 * 8이라는 공간을 준비합니다.

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

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

즉, radius값이 0보다 작거나/같거나/큰 경우에 따라서 각기 다른 오브젝트 공간을 준비하는 로직입니다.
상태 제목