From 40a01f1da3073c88aba43bc13bada48626ce593a Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Sun, 21 Jun 2020 21:20:39 +0300 Subject: [PATCH] Added import image as a new layer of the current project Just realized that I forgot to add undo/redo support of importing images as new frame/layer, oops. Will fix next. --- src/Autoload/OpenSave.gd | 23 +++++++++++++++++++++++ src/UI/Dialogs/PreviewDialog.gd | 2 ++ src/UI/Dialogs/PreviewDialog.tscn | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Autoload/OpenSave.gd b/src/Autoload/OpenSave.gd index 08d3fb5..9f04713 100644 --- a/src/Autoload/OpenSave.gd +++ b/src/Autoload/OpenSave.gd @@ -373,6 +373,29 @@ func open_image_as_new_frame(image : Image, layer_index := 0) -> void: project.frames.append(frame) project.frames = project.frames # Just to call frames_changed() project.current_frame = project.frames.size() - 1 + project.current_layer = layer_index + + +func open_image_as_new_layer(image : Image, file_name : String, frame_index := 0) -> void: + var project = Global.current_project + image.crop(project.size.x, project.size.y) + + var layer := Layer.new(file_name) + for i in project.frames.size(): + if i == frame_index: + image.convert(Image.FORMAT_RGBA8) + image.lock() + project.frames[i].cels.append(Cel.new(image, 1)) + else: + var empty_image := Image.new() + empty_image.create(project.size.x, project.size.y, false, Image.FORMAT_RGBA8) + empty_image.lock() + project.frames[i].cels.append(Cel.new(empty_image, 1)) + + project.layers.append(layer) + project.layers = project.layers # Just to call layers_changed() + project.current_layer = project.layers.size() - 1 + project.current_frame = frame_index func set_new_tab(project : Project, path : String) -> void: diff --git a/src/UI/Dialogs/PreviewDialog.gd b/src/UI/Dialogs/PreviewDialog.gd index c2e017d..181e954 100644 --- a/src/UI/Dialogs/PreviewDialog.gd +++ b/src/UI/Dialogs/PreviewDialog.gd @@ -37,6 +37,8 @@ func _on_PreviewDialog_confirmed() -> void: OpenSave.open_image_as_spritesheet(path, image, spritesheet_horizontal, spritesheet_vertical) elif current_import_option == ImageImportOptions.NEW_FRAME: OpenSave.open_image_as_new_frame(image) + elif current_import_option == ImageImportOptions.NEW_LAYER: + OpenSave.open_image_as_new_layer(image, path.get_file()) elif current_import_option == ImageImportOptions.PALETTE: Global.palette_container.on_palette_import_file_selected(path) diff --git a/src/UI/Dialogs/PreviewDialog.tscn b/src/UI/Dialogs/PreviewDialog.tscn index 9952474..1207f98 100644 --- a/src/UI/Dialogs/PreviewDialog.tscn +++ b/src/UI/Dialogs/PreviewDialog.tscn @@ -64,7 +64,7 @@ margin_right = 151.0 margin_bottom = 20.0 mouse_default_cursor_shape = 2 text = "New tab" -items = [ "New tab", null, false, 0, null, "Spritesheet (new tab)", null, false, 1, null, "New frame", null, false, 2, null, "New layer", null, true, 3, null, "New palette", null, false, 4, null, "New brush", null, true, 5, null, "New pattern", null, true, 6, null ] +items = [ "New tab", null, false, 0, null, "Spritesheet (new tab)", null, false, 1, null, "New frame", null, false, 2, null, "New layer", null, false, 3, null, "New palette", null, false, 4, null, "New brush", null, true, 5, null, "New pattern", null, true, 6, null ] selected = 0 [node name="SpritesheetOptions" type="HBoxContainer" parent="VBoxContainer/HBoxContainer"]