Skip to content

Commit 1631324

Browse files
committed
minor fixes
1 parent 7a1c1c0 commit 1631324

File tree

6 files changed

+106
-18
lines changed

6 files changed

+106
-18
lines changed

LDtkParser.yyp

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datafiles/LDtkTest.ldtk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@
393393
{ "px": [0,32], "src": [32,0], "f": 0, "t": 1, "d": [14] },
394394
{ "px": [32,32], "src": [32,0], "f": 0, "t": 1, "d": [15] },
395395
{ "px": [64,32], "src": [32,0], "f": 0, "t": 1, "d": [16] },
396+
{ "px": [256,32], "src": [0,0], "f": 0, "t": 0, "d": [22] },
396397
{ "px": [352,32], "src": [32,0], "f": 0, "t": 1, "d": [25] },
397398
{ "px": [384,32], "src": [32,0], "f": 0, "t": 1, "d": [26] },
398399
{ "px": [416,32], "src": [32,0], "f": 0, "t": 1, "d": [27] },

objects/oLDtk/Create_0.gml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ if (LDTK_LIVE) {
1212
// so we need to load directly from the project folder
1313

1414
// change this to your project directory
15-
file: "C:\\Users\\evolu\\Desktop\\Projects\\Actual projects\\GMS 2.3 Projects\\LDtkParser\\datafiles\\LDtkTest.ldtk",
15+
file: "D:\\Projects\\GameMaker Projects\\LDtkParser\\datafiles\\LDtkTest.ldtk",
1616
level_name: "LDtkTest1"
1717
})
1818
}

options/operagx/options_operagx.yy

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

options/windowsuap/options_windowsuap.yy

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/LDtkParser/LDtkParser.gml

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ global.__ldtk_config = {
3030
}
3131
}
3232

33+
3334
global.__ldtk_live_hash = ""
3435

3536
global.__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

Comments
 (0)