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
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)
|