You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.9 KiB

var map, access, list, deadend, node1, node2, targetnode, i, index, j, checknode;
AR_Logic()
if ds_exists(global.roommap, 1)
ds_map_destroy(global.roommap)
global.roommap = ds_map_create()
map = global.roommap
access = global.accessnodes
list = global.nodelist
deadend = global.deadendlist
if file_exists("AreaRando/seed.txt")
file_delete("AreaRando/seed.txt")
fid = file_text_open_append("AreaRando/seed.txt")
while (ds_list_size(access) > 0)
{
ds_list_shuffle(access)
node1 = ds_list_find_value(access, 0)
ds_list_delete(access, 0)
if (ds_list_size(list) > 0)
{
ds_list_shuffle(list)
node2 = ds_list_find_value(list, 0)
ds_list_delete(list, 0)
targetnode = node2[0]
for (i = 1; i < array_length_1d(node2); i++)
{
index = -1
for (j = 0; j < ds_list_size(list); j++)
{
checknode = ds_list_find_value(list, j)
if (node2[i] == checknode[0])
{
if (ds_list_find_index(access, checknode[0]) == -1)
{
index = j
ds_list_add(access, checknode[0])
}
}
}
if (index != -1)
ds_list_delete(list, index)
}
}
else if (ds_list_size(deadend) > 0)
{
ds_list_shuffle(deadend)
targetnode = ds_list_find_value(deadend, 0)
ds_list_delete(deadend, 0)
}
else if (ds_list_size(access) > 0)
{
ds_list_shuffle(access)
targetnode = ds_list_find_value(access, 0)
ds_list_delete(access, 0)
}
file_text_write_string(fid, ((string(node1) + "-") + string(targetnode)))
file_text_writeln(fid)
ds_map_add(map, node1, targetnode)
ds_map_add(map, targetnode, node1)
}
file_text_close(fid)
ds_list_destroy(list)
ds_list_destroy(access)
ds_list_destroy(deadend)