mirror of
https://github.com/Relintai/GraphicsEditor.git
synced 2024-11-12 08:15:17 +01:00
51 lines
1.4 KiB
GDScript3
51 lines
1.4 KiB
GDScript3
|
tool
|
||
|
extends FileDialog
|
||
|
|
||
|
onready var canvas = get_parent().get_node("PaintCanvasContainer/PaintCanvas")
|
||
|
|
||
|
var file_path = ""
|
||
|
|
||
|
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):
|
||
|
file_path = path
|
||
|
|
||
|
# warning-ignore:unused_argument
|
||
|
func _on_LineEdit_text_entered(text):
|
||
|
save_file()
|
||
|
|
||
|
func _on_SaveFileDialog_confirmed():
|
||
|
save_file()
|
||
|
|
||
|
func save_file():
|
||
|
var image = Image.new()
|
||
|
image.create(canvas.canvas_size.x, canvas.canvas_size.y, true, Image.FORMAT_RGBA8)
|
||
|
image.lock()
|
||
|
for i in canvas.get_node("Chunks").get_children():
|
||
|
var chunk_name = i.name
|
||
|
var chunk_name_split = chunk_name.split("-")
|
||
|
var chunk_x = int(chunk_name_split[1])
|
||
|
var chunk_y = int(chunk_name_split[2])
|
||
|
var chunk_image = i.image.duplicate()
|
||
|
chunk_image.lock()
|
||
|
var chunk_image_size = chunk_image.get_size()
|
||
|
for x in chunk_image_size.x:
|
||
|
for y in chunk_image_size.y:
|
||
|
var pixel_color = chunk_image.get_pixel(x, y)
|
||
|
var global_cell_x = (chunk_x * canvas.region_size) + x
|
||
|
var global_cell_y = (chunk_y * canvas.region_size) + y
|
||
|
image.set_pixel(global_cell_x, global_cell_y, pixel_color)
|
||
|
image.unlock()
|
||
|
image.save_png(file_path)
|
||
|
|
||
|
func _on_SaveFileDialog_about_to_show():
|
||
|
invalidate()
|
||
|
|
||
|
func _on_SaveFileDialog_visibility_changed():
|
||
|
invalidate()
|