mirror of
https://github.com/Relintai/broken_seals.git
synced 2024-12-18 01:06:47 +01:00
71 lines
1.3 KiB
GDScript
71 lines
1.3 KiB
GDScript
tool
|
|
extends FileDialog
|
|
|
|
var canvas
|
|
|
|
var file_path = ""
|
|
|
|
|
|
func _enter_tree():
|
|
canvas = get_parent().find_node("Canvas")
|
|
|
|
|
|
func _ready():
|
|
# warning-ignore:return_value_discarded
|
|
get_line_edit().connect("text_entered", self, "_on_LineEdit_text_entered")
|
|
invalidate()
|
|
clear_filters()
|
|
add_filter("*.png ; PNG Images")
|
|
|
|
|
|
func _on_SaveFileDialog_file_selected(path):
|
|
#print("selected file: ", path)
|
|
file_path = path
|
|
save_file()
|
|
|
|
|
|
# warning-ignore:unused_argument
|
|
func _on_LineEdit_text_entered(text):
|
|
return
|
|
# print("text entered: ", text)
|
|
|
|
|
|
func _on_SaveFileDialog_confirmed():
|
|
return
|
|
# print("confirmed: ", current_path)
|
|
|
|
|
|
func save_file():
|
|
var image = Image.new()
|
|
image.create(canvas.canvas_width, canvas.canvas_height, true, Image.FORMAT_RGBA8)
|
|
image.lock()
|
|
|
|
for layer in canvas.layers:
|
|
var idx = 0
|
|
if not layer.visible:
|
|
continue
|
|
for x in range(layer.layer_width):
|
|
for y in range(layer.layer_height):
|
|
var color = layer.get_pixel(x, y)
|
|
var image_color = image.get_pixel(x, y)
|
|
|
|
if color.a != 0:
|
|
image.set_pixel(x, y, image_color.blend(color))
|
|
else:
|
|
image.set_pixel(x, y, color)
|
|
image.unlock()
|
|
|
|
var dir = Directory.new()
|
|
if dir.file_exists(file_path):
|
|
dir.remove(file_path)
|
|
|
|
image.save_png(file_path)
|
|
|
|
|
|
func _on_SaveFileDialog_about_to_show():
|
|
invalidate()
|
|
|
|
|
|
func _on_SaveFileDialog_visibility_changed():
|
|
invalidate()
|