mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-20 12:33: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:
parent
baa8cfbf63
commit
0619d0e1ad
3 changed files with 40 additions and 23 deletions
|
@ -375,7 +375,6 @@ func _ready() -> void:
|
|||
|
||||
# Store [Layer name, Layer visibility boolean, Frame container]
|
||||
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
|
||||
func find_node_by_name(root, node_name) -> Node:
|
||||
|
|
|
@ -399,7 +399,18 @@ func _on_OpenSprite_file_selected(path : String) -> void:
|
|||
var version_number = float(version.substr(1, 3)) # Example, "0.6"
|
||||
if current_version_number < 0.5:
|
||||
OS.alert("File is from an older version of Pixelorama, as such it might not work properly")
|
||||
|
||||
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()
|
||||
clear_canvases()
|
||||
while frame_line == "--": # Load frames
|
||||
|
@ -407,12 +418,14 @@ func _on_OpenSprite_file_selected(path : String) -> void:
|
|||
Global.canvas = canvas
|
||||
var width := file.get_16()
|
||||
var height := file.get_16()
|
||||
print(width, height)
|
||||
|
||||
var layer_line := file.get_line()
|
||||
while layer_line == "-": # Load layers
|
||||
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
|
||||
if version_number > 0.5:
|
||||
layer_transparency = file.get_float()
|
||||
|
@ -421,7 +434,7 @@ func _on_OpenSprite_file_selected(path : String) -> void:
|
|||
image.lock()
|
||||
var tex := ImageTexture.new()
|
||||
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()
|
||||
|
||||
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 += 1
|
||||
|
||||
Global.canvases = Global.canvases # Just to call Global.canvases_changed
|
||||
Global.current_frame = frame - 1
|
||||
Global.layers = Global.layers # Just to call Global.layers_changed
|
||||
# Load tool options
|
||||
Global.left_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.right_brush_size = file.get_8()
|
||||
Global.right_brush_size_edit.value = Global.right_brush_size
|
||||
var left_palette = file.get_var()
|
||||
var right_palette = file.get_var()
|
||||
for color in left_palette:
|
||||
Global.left_color_picker.get_picker().add_preset(color)
|
||||
for color in right_palette:
|
||||
Global.right_color_picker.get_picker().add_preset(color)
|
||||
if version_number < (0.7 - 0.01):
|
||||
var left_palette = file.get_var()
|
||||
var right_palette = file.get_var()
|
||||
for color in left_palette:
|
||||
Global.left_color_picker.get_picker().add_preset(color)
|
||||
for color in right_palette:
|
||||
Global.right_color_picker.get_picker().add_preset(color)
|
||||
|
||||
# Load custom brushes
|
||||
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)
|
||||
if err == OK:
|
||||
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
|
||||
file.store_line("--")
|
||||
file.store_16(canvas.size.x)
|
||||
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_buffer(layer[0].get_data())
|
||||
file.store_line(layer[2]) # Layer name
|
||||
file.store_float(layer[4]) # Layer transparency
|
||||
file.store_float(layer[2]) # Layer transparency
|
||||
file.store_line("END_LAYERS")
|
||||
|
||||
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")
|
||||
|
||||
# Save tool options
|
||||
var left_color: Color = Global.left_color_picker.color
|
||||
var right_color: Color = Global.right_color_picker.color
|
||||
var left_brush_size: int = Global.left_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()
|
||||
var left_color : Color = Global.left_color_picker.color
|
||||
var right_color : Color = Global.right_color_picker.color
|
||||
var left_brush_size : int = Global.left_brush_size
|
||||
var right_brush_size : int = Global.right_brush_size
|
||||
file.store_var(left_color)
|
||||
file.store_var(right_color)
|
||||
file.store_8(left_brush_size)
|
||||
file.store_8(right_brush_size)
|
||||
file.store_var(left_palette)
|
||||
file.store_var(right_palette)
|
||||
#Save custom brushes
|
||||
# Save custom brushes
|
||||
for i in range(Global.brushes_from_files, Global.custom_brushes.size()):
|
||||
var brush = Global.custom_brushes[i]
|
||||
file.store_line("/")
|
||||
|
|
|
@ -53,7 +53,7 @@ boot_splash/bg_color=Color( 0.145098, 0.145098, 0.164706, 1 )
|
|||
config/icon="res://icon.png"
|
||||
config/macos_native_icon="res://icon.icns"
|
||||
config/windows_native_icon="res://icon.ico"
|
||||
config/Version="v0.6.2"
|
||||
config/Version="v0.7"
|
||||
|
||||
[autoload]
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue