ds_list_is_map 함수 설명
ds_list_is_map
함수는 주어진 DS 리스트의 특정 위치에 DS 맵이 저장되어 있는지를 확인하는 기능을 제공합니다. 만약 해당 위치에 DS 맵 ID가 존재한다면, 함수는 true
를 반환하고, 그렇지 않으면 false
를 반환합니다. 이 함수는 ds_list_mark_as_map
함수를 사용하여 수동으로 마크된 맵만 감지합니다.
문법
ds_list_is_map(id, pos);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
id | DS List | 확인할 리스트의 핸들 |
pos | Real | 리스트 내에서 확인할 위치 |
반환값
- Boolean: 위치에 DS 맵이 존재하면
true
, 그렇지 않으면false
예제
var size = ds_list_size(ships);
for (var i = 0; i < size; i++) {
if (ds_list_is_map(ships, i)) {
||
||
}
}
ds_list_destroy(ships);
위의 코드는 DS 리스트를 순회하며 각 항목이 맵 ID를 포함하고 있는지를 확인합니다. 만약 포함하고 있다면 해당 맵을 파괴하고, 루프가 끝난 후 메인 리스트를 파괴합니다.
활용 예제
예제 1: 맵이 있는지 확인 후 처리하기
var my_list = ds_list_create();
var my_map = ds_map_create();
ds_list_add(my_list, my_map);
ds_list_mark_as_map(my_list, 0);
if (ds_list_is_map(my_list, 0)) {
show_message("맵이 존재합니다.");
}
예제 2: 여러 맵을 포함한 리스트에서 맵 삭제하기
var list_of_maps = ds_list_create();
for (var i = 0; i < 5; i++) {
var new_map = ds_map_create();
ds_list_add(list_of_maps, new_map);
ds_list_mark_as_map(list_of_maps, i);
}
// 모든 맵 삭제
for (var j = 0; j < ds_list_size(list_of_maps); j++) {
if (ds_list_is_map(list_of_maps, j)) {
||
||
}
}
ds_list_destroy(list_of_maps);
예제 3: 리스트에서 맵과 일반 데이터 구분하기
var mixed_list = ds_list_create();
ds_list_add(mixed_list, "일반 데이터");
var map_data = ds_map_create();
ds_list_add(mixed_list, map_data);
ds_list_mark_as_map(mixed_list, 1);
for (var k = 0; k < ds_list_size(mixed_list); k++) {
if (ds_list_is_map(mixed_list, k)) {
show_message("인덱스 " + string(k) + "에 맵이 있습니다.");
} else {
show_message("인덱스 " + string(k) + "는 일반 데이터입니다.");
}
}
이와 같은 예제들을 통해 ds_list_is_map
함수를 다양한 상황에서 활용할 수 있습니다.