-
Notifications
You must be signed in to change notification settings - Fork 0
/
schematic_try.gml
83 lines (66 loc) · 1.74 KB
/
schematic_try.gml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
///schematic_try(x,y,required)
/*
Picks a schematic out of bag to place if conditions are met
Arguments:
x - Room anchor X
y - Room anchor Y
required - Required connector counterpart which the room must have to connect
Returns:
None
*/
var file;
var ox,oy;
var tx,ty;
var required;
var scr;
var size_x,size_y;
var roomname;
var scanning = false;
var possible_structs = ds_list_create()
var structure;
var chosen;
var shift;
shift = TILE_SIZE/2
ox = argument0
oy = argument1
required = argument2
roomname = "none"
file = file_text_open_read(working_directory + "save.txt");
// Loop through datafile
while (!file_text_eof(file))
{
// Get current line
scr = file_text_read_string(file);
file_text_readln(file)
splits = string_split(scr)
if splits[0] == "rm" && scanning == false {
roomname = splits[1]
size_x = real(splits[2])
size_y = real(splits[3])
scanning = true
}
if scanning == true && splits[0] == "object" {
if real(splits[1]) == required {
tx = ox-real(splits[2])
ty = oy-real(splits[3])
if !collision_rectangle(tx+shift,ty+shift,tx+size_x-shift,ty+size_y-shift,obj_sc_ground,false,true) {
structure[0] = roomname
structure[1] = tx
structure[2] = ty
ds_list_add(possible_structs,structure)
}
}
}
}
// Free memory from split array
splits = 0
file_text_close(file);
ds_list_shuffle(possible_structs)
if ds_list_size(possible_structs) > 0 {
chosen = ds_list_find_value(possible_structs,0)
}
else {
chosen = -1
}
ds_list_destroy(possible_structs)
return chosen;