@@ -30,6 +30,7 @@ global.__ldtk_config = {
3030 }
3131}
3232
33+
3334global.__ldtk_live_hash = " "
3435
3536global.__ldtk_live_timer = -1
@@ -108,7 +109,7 @@ function LDtkLoad(level_name) {
108109
109110 var file = config.file
110111 if (!file_exists (file)) {
111- throw " Warning! LDtk project file is not specified or file does not exist!"
112+ throw " Warning! LDtk project file is not specified or file does not exist! ( " + string (file) + " ) "
112113 return -1
113114 }
114115
@@ -164,11 +165,11 @@ function LDtkLoad(level_name) {
164165 // for each layer in the level
165166 for (var i = 0 ; i < array_length (level.layerInstances ); i++) {
166167 var this_layer = level.layerInstances [i]
167- var layer_name = this_layer.__identifier
168+ var _layer_name = this_layer.__identifier
168169
169- var gm_layer_name = config.mappings .layers [$ (layer_name )]
170+ var gm_layer_name = config.mappings .layers [$ (_layer_name )]
170171 if gm_layer_name == undefined
171- gm_layer_name = layer_name
172+ gm_layer_name = _layer_name
172173
173174 var gm_layer_id = layer_get_id (gm_layer_name)
174175
@@ -204,10 +205,14 @@ function LDtkLoad(level_name) {
204205 inst.image_yscale = entity.height / sh
205206
206207
207- var prepare_point = function (point) {
208- return { x: point.cx * tile_size, y: point.cy * tile_size }
208+ var prepare_point = function (point, tile_size) {
209+ if !is_struct (point) and point == pointer_null { // if the field is null
210+ // show_message(point)
211+ return undefined
212+ }
213+ return { x: point.cx * tile_size, y: point.cy * tile_size }
209214 }
210-
215+
211216 var prepare_color = function (color) {
212217 // cut the #
213218 color = string_copy (color, 2 , string_length (color)-1 )
@@ -219,14 +224,19 @@ function LDtkLoad(level_name) {
219224 return make_color_rgb (red, green, blue)
220225 }
221226
222- var prepare_enum = function (enum_name, value) {
223- var result = global.__ldtk_config .mappings .enums [$ (enum_name)][$ (value)]
227+ var prepare_enum = function (_enum_name, value) {
228+ if value == pointer_null
229+ return value
230+
231+ var result = global.__ldtk_config .mappings .enums [$ (_enum_name)][$ (value)]
232+
224233 if result == undefined
225234 return value // just return the string
226235 else
227236 return result
228237 }
229238
239+
230240 // Load the fields
231241
232242 if (config.escape_fields ) {
@@ -251,7 +261,7 @@ function LDtkLoad(level_name) {
251261 // some types require additional work
252262 switch (field_type) {
253263 case " Point" :
254- field_value = prepare_point (field_value)
264+ field_value = prepare_point (field_value, tile_size )
255265 break
256266 case " Array<Point>" :
257267 for (var j = 0 ; j < array_length (field_value); j++) {
@@ -270,15 +280,15 @@ function LDtkLoad(level_name) {
270280 if (string_pos (" LocalEnum" , field_type)) {
271281 var enum_name_idx = string_pos (" ." , field_type)
272282 var enum_name_len = string_length (field_type)
273- var enum_name = string_copy (field_type, enum_name_idx+1 , 999 )
283+ var _enum_name = string_copy (field_type, enum_name_idx+1 , 999 )
274284
275285 if (string_pos (" Array<" , field_type)) {
276286 for (var j = 0 ; j < array_length (field_value); j++) {
277- field_value[@ j] = prepare_enum (enum_name , field_value[j])
287+ field_value[@ j] = prepare_enum (_enum_name , field_value[j])
278288 }
279289 }
280290 else {
281- field_value = prepare_enum (enum_name , field_value)
291+ field_value = prepare_enum (_enum_name , field_value)
282292 }
283293 }
284294
@@ -301,7 +311,7 @@ function LDtkLoad(level_name) {
301311 __LDtkTrace (" Loaded Entity! GM instance id=%" , inst)
302312 }
303313
304- __LDtkTrace (" Loaded an Entities Layer! name=%, gm_name=%" , layer_name , gm_layer_name)
314+ __LDtkTrace (" Loaded an Entities Layer! name=%, gm_name=%" , _layer_name , gm_layer_name)
305315 break
306316 case " IntGrid" : // just ignore...
307317 __LDtkTrace (" IntGrid layers are ignored" )
@@ -356,7 +366,7 @@ function LDtkLoad(level_name) {
356366 tilemap_set (tilemap, tile_data, cell_x, cell_y)
357367 }
358368
359- __LDtkTrace (" Loaded a Tile Layer! name=%, gm_name=%" , layer_name , gm_layer_name)
369+ __LDtkTrace (" Loaded a Tile Layer! name=%, gm_name=%" , _layer_name , gm_layer_name)
360370 break
361371 default :
362372 __LDtkTrace (" warning! undefined layer type! (%)" , this_layer.__type )
@@ -418,6 +428,9 @@ function LDtkReloadFields() {
418428 return -1
419429 }
420430
431+ if (!variable_instance_exists (self, " __ldtk_fields" ))
432+ return 0
433+
421434 var field_names = variable_struct_get_names (self.__ldtk_fields )
422435 for (var i = 0 ; i < array_length (field_names); ++i) {
423436 var field_name = field_names[i]
@@ -445,4 +458,4 @@ function hex_to_dec(str) {
445458 }
446459
447460 return ans
448- }
461+ }
0 commit comments