1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-21 21:13:14 +00:00

Opening and saving .pxo file should now work

This should be all of the functionality restored. This commit makes the branch stable, in theory.
This commit is contained in:
OverloadedOrama 2020-03-07 02:58:52 +02:00
parent baa8cfbf63
commit 0619d0e1ad
3 changed files with 40 additions and 23 deletions

View file

@ -375,7 +375,6 @@ func _ready() -> void:
# Store [Layer name, Layer visibility boolean, Frame container] # Store [Layer name, Layer visibility boolean, Frame container]
layers.append([tr("Layer") + " 0", true, HBoxContainer.new()]) layers.append([tr("Layer") + " 0", true, HBoxContainer.new()])
frames_container.add_child(layers[0][2])
# Thanks to https://godotengine.org/qa/17524/how-to-find-an-instanced-scene-by-its-name # Thanks to https://godotengine.org/qa/17524/how-to-find-an-instanced-scene-by-its-name
func find_node_by_name(root, node_name) -> Node: func find_node_by_name(root, node_name) -> Node:

View file

@ -399,7 +399,18 @@ func _on_OpenSprite_file_selected(path : String) -> void:
var version_number = float(version.substr(1, 3)) # Example, "0.6" var version_number = float(version.substr(1, 3)) # Example, "0.6"
if current_version_number < 0.5: if current_version_number < 0.5:
OS.alert("File is from an older version of Pixelorama, as such it might not work properly") OS.alert("File is from an older version of Pixelorama, as such it might not work properly")
var frame := 0 var frame := 0
Global.layers.clear()
if (version_number - 0.01) > 0.6:
var global_layer_line := file.get_line()
while global_layer_line == ".":
var layer_name := file.get_line()
var layer_visibility := file.get_8()
# Store [Layer name, Layer visibility boolean, Frame container]
Global.layers.append([layer_name, layer_visibility, HBoxContainer.new()])
global_layer_line = file.get_line()
var frame_line := file.get_line() var frame_line := file.get_line()
clear_canvases() clear_canvases()
while frame_line == "--": # Load frames while frame_line == "--": # Load frames
@ -407,12 +418,14 @@ func _on_OpenSprite_file_selected(path : String) -> void:
Global.canvas = canvas Global.canvas = canvas
var width := file.get_16() var width := file.get_16()
var height := file.get_16() var height := file.get_16()
print(width, height)
var layer_line := file.get_line() var layer_line := file.get_line()
while layer_line == "-": # Load layers while layer_line == "-": # Load layers
var buffer := file.get_buffer(width * height * 4) var buffer := file.get_buffer(width * height * 4)
var layer_name := file.get_line() if version_number < (0.7 - 0.01):
var layer_name_old_version = file.get_line()
if frame == 0:
Global.layers.append([layer_name_old_version, true, HBoxContainer.new()])
var layer_transparency := 1.0 var layer_transparency := 1.0
if version_number > 0.5: if version_number > 0.5:
layer_transparency = file.get_float() layer_transparency = file.get_float()
@ -421,7 +434,7 @@ func _on_OpenSprite_file_selected(path : String) -> void:
image.lock() image.lock()
var tex := ImageTexture.new() var tex := ImageTexture.new()
tex.create_from_image(image, 0) tex.create_from_image(image, 0)
canvas.layers.append([image, tex, layer_name, true, layer_transparency]) canvas.layers.append([image, tex, layer_transparency])
layer_line = file.get_line() layer_line = file.get_line()
var guide_line := file.get_line() # "guideline" no pun intended var guide_line := file.get_line() # "guideline" no pun intended
@ -446,7 +459,9 @@ func _on_OpenSprite_file_selected(path : String) -> void:
frame_line = file.get_line() frame_line = file.get_line()
frame += 1 frame += 1
Global.canvases = Global.canvases # Just to call Global.canvases_changed
Global.current_frame = frame - 1 Global.current_frame = frame - 1
Global.layers = Global.layers # Just to call Global.layers_changed
# Load tool options # Load tool options
Global.left_color_picker.color = file.get_var() Global.left_color_picker.color = file.get_var()
Global.right_color_picker.color = file.get_var() Global.right_color_picker.color = file.get_var()
@ -454,12 +469,13 @@ func _on_OpenSprite_file_selected(path : String) -> void:
Global.left_brush_size_edit.value = Global.left_brush_size Global.left_brush_size_edit.value = Global.left_brush_size
Global.right_brush_size = file.get_8() Global.right_brush_size = file.get_8()
Global.right_brush_size_edit.value = Global.right_brush_size Global.right_brush_size_edit.value = Global.right_brush_size
var left_palette = file.get_var() if version_number < (0.7 - 0.01):
var right_palette = file.get_var() var left_palette = file.get_var()
for color in left_palette: var right_palette = file.get_var()
Global.left_color_picker.get_picker().add_preset(color) for color in left_palette:
for color in right_palette: Global.left_color_picker.get_picker().add_preset(color)
Global.right_color_picker.get_picker().add_preset(color) for color in right_palette:
Global.right_color_picker.get_picker().add_preset(color)
# Load custom brushes # Load custom brushes
Global.custom_brushes.resize(Global.brushes_from_files) Global.custom_brushes.resize(Global.brushes_from_files)
@ -498,15 +514,21 @@ func _on_SaveSprite_file_selected(path : String) -> void:
var err := file.open(path, File.WRITE) var err := file.open(path, File.WRITE)
if err == OK: if err == OK:
file.store_line(ProjectSettings.get_setting("application/config/Version")) file.store_line(ProjectSettings.get_setting("application/config/Version"))
for layer in Global.layers: # Store Global layers
file.store_line(".")
file.store_line(layer[0]) # Layer name
file.store_8(layer[1]) # Layer visibility
file.store_line("END_GLOBAL_LAYERS")
for canvas in Global.canvases: # Store frames for canvas in Global.canvases: # Store frames
file.store_line("--") file.store_line("--")
file.store_16(canvas.size.x) file.store_16(canvas.size.x)
file.store_16(canvas.size.y) file.store_16(canvas.size.y)
for layer in canvas.layers: # Store layers for layer in canvas.layers: # Store canvas layers
file.store_line("-") file.store_line("-")
file.store_buffer(layer[0].get_data()) file.store_buffer(layer[0].get_data())
file.store_line(layer[2]) # Layer name file.store_float(layer[2]) # Layer transparency
file.store_float(layer[4]) # Layer transparency
file.store_line("END_LAYERS") file.store_line("END_LAYERS")
for child in canvas.get_children(): # Store guides for child in canvas.get_children(): # Store guides
@ -523,19 +545,15 @@ func _on_SaveSprite_file_selected(path : String) -> void:
file.store_line("END_FRAMES") file.store_line("END_FRAMES")
# Save tool options # Save tool options
var left_color: Color = Global.left_color_picker.color var left_color : Color = Global.left_color_picker.color
var right_color: Color = Global.right_color_picker.color var right_color : Color = Global.right_color_picker.color
var left_brush_size: int = Global.left_brush_size var left_brush_size : int = Global.left_brush_size
var right_brush_size: int = Global.right_brush_size var right_brush_size : int = Global.right_brush_size
var left_palette: PoolColorArray = Global.left_color_picker.get_picker().get_presets()
var right_palette: PoolColorArray = Global.right_color_picker.get_picker().get_presets()
file.store_var(left_color) file.store_var(left_color)
file.store_var(right_color) file.store_var(right_color)
file.store_8(left_brush_size) file.store_8(left_brush_size)
file.store_8(right_brush_size) file.store_8(right_brush_size)
file.store_var(left_palette) # Save custom brushes
file.store_var(right_palette)
#Save custom brushes
for i in range(Global.brushes_from_files, Global.custom_brushes.size()): for i in range(Global.brushes_from_files, Global.custom_brushes.size()):
var brush = Global.custom_brushes[i] var brush = Global.custom_brushes[i]
file.store_line("/") file.store_line("/")

View file

@ -53,7 +53,7 @@ boot_splash/bg_color=Color( 0.145098, 0.145098, 0.164706, 1 )
config/icon="res://icon.png" config/icon="res://icon.png"
config/macos_native_icon="res://icon.icns" config/macos_native_icon="res://icon.icns"
config/windows_native_icon="res://icon.ico" config/windows_native_icon="res://icon.ico"
config/Version="v0.6.2" config/Version="v0.7"
[autoload] [autoload]