From 56c7ca1cabd07ef74dc7911585b890b2174b2dcf Mon Sep 17 00:00:00 2001 From: metanoder Date: Tue, 9 Jan 2024 22:06:48 -0800 Subject: [PATCH 1/3] dialogic-1 converter change_timeline -> jump fix by prep loop func --- .../Modules/Converter/settings_converter.gd | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/addons/dialogic/Modules/Converter/settings_converter.gd b/addons/dialogic/Modules/Converter/settings_converter.gd index caee0bf8a..5287ca486 100644 --- a/addons/dialogic/Modules/Converter/settings_converter.gd +++ b/addons/dialogic/Modules/Converter/settings_converter.gd @@ -20,6 +20,7 @@ var varSubsystemInstalled = false var anchorNames = {} var prefixCharacters = false +var timelineKeys: Dictionary = {} # dictionary for change_timeline conversion func _get_title(): return 'Converter' @@ -230,7 +231,23 @@ func _on_begin_pressed(): %OutputLog.text += "Please be aware, Godot may take some time on the next project load to reload all of the Characters and Timelines. This is normal, and should only happen the one time." +func convertTimelinePrep(): + for item in timelineFolderBreakdown: + var file := FileAccess.open("res://dialogic/timelines/" + item, FileAccess.READ) + var fileContent = file.get_as_text() + var json_object = JSON.new() + + var error = json_object.parse(fileContent) + if error == OK: + contents = json_object.get_data() + var fileName = contents["metadata"]["name"] + timelineKeys[item] = fileName + else: + %OutputLog.text += "[color=red]There was a problem parsing this file while prepping![/color]\r\n" + + func convertTimelines(): + convertTimelinePrep() %OutputLog.text += "Converting timelines: \r\n" for item in timelineFolderBreakdown: var folderPath = timelineFolderBreakdown[item] @@ -575,9 +592,12 @@ func convertTimelines(): #file.store_string(eventLine + "# jump label, just a comment for testing") "dialogic_020": #Change Timeline event - # we will need to come back to this one on second pass, since we may not know the new path yet + #first pass performed by convertTimelinePrep() for timelineKeys + var jumpDictionaryKey = event['change_timeline'] + if timelineKeys.has(jumpDictionaryKey): + file.store_string(eventLine + "jump " + timelineKeys[jumpDictionaryKey] + "/") - file.store_string(eventLine + "[jump timeline=<" + event['change_timeline'] +">]") + #file.store_string(eventLine + "[jump timeline=<" + event['change_timeline'] +">]") #file.store_string(eventLine + "# jump timeline, just a comment for testing") "dialogic_021": #Change Background event From 0ee7344c18109f26520b23a3d78b665b63dc681d Mon Sep 17 00:00:00 2001 From: metanoder Date: Thu, 11 Jan 2024 00:47:59 -0800 Subject: [PATCH 2/3] 1.x vs 2.x character positions now match, converter updated --- addons/dialogic/Modules/Converter/settings_converter.gd | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/dialogic/Modules/Converter/settings_converter.gd b/addons/dialogic/Modules/Converter/settings_converter.gd index 5287ca486..c2c1a4a7e 100644 --- a/addons/dialogic/Modules/Converter/settings_converter.gd +++ b/addons/dialogic/Modules/Converter/settings_converter.gd @@ -351,8 +351,7 @@ func convertTimelines(): for i in event['position']: if event['position'][i] == true: - #1.x uses positions 0-4, while the default 2.0 scene uses positions 1-5 - eventLine += str(i.to_int() + 1) + eventLine += str(i.to_int()) if (event['animation'] != "[Default]" && event['animation'] != "") || ('z_index' in event) || ('mirror_portrait' in event): # Note: due to Anima changes, animations will be converted into a default. Times and wait will be perserved @@ -392,7 +391,7 @@ func convertTimelines(): if event['position'][i] == true: positionCheck = true - eventLine += str(i.to_int() + 1) + eventLine += str(i.to_int()) if !positionCheck: eventLine += " 0" From 7e87866a08cf9a601bd3b6b289f9a7832d3d58e8 Mon Sep 17 00:00:00 2001 From: metanoder Date: Sat, 13 Jan 2024 16:14:08 -0800 Subject: [PATCH 3/3] fixed empty if-statement conversion break --- .../Modules/Converter/settings_converter.gd | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/addons/dialogic/Modules/Converter/settings_converter.gd b/addons/dialogic/Modules/Converter/settings_converter.gd index c2c1a4a7e..379090215 100644 --- a/addons/dialogic/Modules/Converter/settings_converter.gd +++ b/addons/dialogic/Modules/Converter/settings_converter.gd @@ -517,27 +517,36 @@ func convertTimelines(): "dialogic_012": #If event var valueLookup = "broken variable" - if definitionFolderBreakdown.size(): - valueLookup = variableNameConversion("[" + definitionFolderBreakdown[event['definition']]['path'] + definitionFolderBreakdown[event['definition']]['name'] + "]" ) + if event.has('definition') and event['definition'] in definitionFolderBreakdown: + if definitionFolderBreakdown.size(): + var definition = definitionFolderBreakdown[event['definition']] + if 'path' in definition and 'name' in definition: + valueLookup = variableNameConversion( "[" + definition['path'] + definition['name'] + "]") + else: + # Handle the case where 'path' or 'name' keys are missing + %OutputLog.text += "[color=red]Path or name not found in definition[/color]" + "\r\n" - eventLine += "if " - eventLine += valueLookup - if event['condition'] != "": - eventLine += " " + event['condition'] - else: - #default is true, so it may not store it - eventLine += " ==" + eventLine += "if " + eventLine += valueLookup + if event['condition'] != "": + eventLine += " " + event['condition'] + else: + #default is true, so it may not store it + eventLine += " ==" - # weird line due to missing type casts on String in current Godot 4 alpha - if event['value'] == str(event['value'].to_int()): - eventLine += " " + event['value'] - else: - eventLine += " \"" + event['value'] + "\"" + # weird line due to missing type casts on String in current Godot 4 alpha + if event['value'] == str(event['value'].to_int()): + eventLine += " " + event['value'] + else: + eventLine += " \"" + event['value'] + "\"" - eventLine += ":" - file.store_string(eventLine) - #print("if branch node") - depth.push_front("condition") + eventLine += ":" + file.store_string(eventLine) + #print("if branch node") + depth.push_front("condition") + else: + # Handle the case where 'definition' key is missing or not in definitionFolderBreakdown + %OutputLog.text += "[color=red]Definition not found in event or definitionFolderBreakdown[/color]" + "\r\n" #print ("bracnh depth now" + str(depth)) "dialogic_013":