diff --git a/addons/block_code/block_script_data/block_script_data.gd b/addons/block_code/block_script_data/block_script_data.gd index 6696c8a0..4e933c41 100644 --- a/addons/block_code/block_script_data/block_script_data.gd +++ b/addons/block_code/block_script_data/block_script_data.gd @@ -4,9 +4,11 @@ extends Resource @export var script_inherits: String @export var block_trees: SerializedBlockTreeNodeArray @export var generated_script: String +@export var version: int -func _init(p_script_inherits: String = "", p_block_trees: SerializedBlockTreeNodeArray = null, p_generated_script: String = ""): +func _init(p_script_inherits: String = "", p_block_trees: SerializedBlockTreeNodeArray = null, p_generated_script: String = "", p_version = 0): script_inherits = p_script_inherits block_trees = p_block_trees generated_script = p_generated_script + version = p_version diff --git a/addons/block_code/ui/constants.gd b/addons/block_code/ui/constants.gd index d36d45aa..88d6d9ab 100644 --- a/addons/block_code/ui/constants.gd +++ b/addons/block_code/ui/constants.gd @@ -1,5 +1,7 @@ extends Object +const CURRENT_DATA_VERSION = 0 + const KNOB_X = 10.0 const KNOB_W = 20.0 const KNOB_H = 5.0 diff --git a/addons/block_code/ui/main_panel.gd b/addons/block_code/ui/main_panel.gd index d00f3db9..3193e6c1 100644 --- a/addons/block_code/ui/main_panel.gd +++ b/addons/block_code/ui/main_panel.gd @@ -15,6 +15,8 @@ extends Control @onready var _icon_collapse := EditorInterface.get_editor_theme().get_icon("Back", "EditorIcons") @onready var _icon_expand := EditorInterface.get_editor_theme().get_icon("Forward", "EditorIcons") +const Constants = preload("res://addons/block_code/ui/constants.gd") + var _current_block_code_node: BlockCode var _block_code_nodes: Array var _collapsed: bool = false @@ -82,6 +84,14 @@ func _on_delete_dialog_confirmed(block_code_node: BlockCode): undo_redo.commit_action() +func _try_migration(): + var version: int = _current_block_code_node.block_script.version + if version == Constants.CURRENT_DATA_VERSION: + # No migration needed. + return + push_warning("Migration not implemented from %d to %d" % [version, Constants.CURRENT_DATA_VERSION]) + + func switch_scene(scene_root: Node): _title_bar.scene_selected(scene_root) @@ -90,6 +100,8 @@ func switch_block_code_node(block_code_node: BlockCode): var block_script: BlockScriptData = block_code_node.block_script if block_code_node else null _current_block_code_node = block_code_node _delete_node_button.disabled = _current_block_code_node == null + if _current_block_code_node != null: + _try_migration() _picker.bsd_selected(block_script) _title_bar.bsd_selected(block_script) _block_canvas.bsd_selected(block_script) @@ -129,6 +141,7 @@ func save_script(): var generated_script = _block_canvas.generate_script_from_current_window(block_script.script_inherits) block_script.block_trees = block_trees block_script.generated_script = generated_script + block_script.version = Constants.CURRENT_DATA_VERSION undo_redo.add_do_property(_current_block_code_node.block_script, "block_trees", block_trees) undo_redo.add_do_property(_current_block_code_node.block_script, "generated_script", generated_script)