1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-03-13 06:45:17 +00:00

Add/remove/move frames should now work

With Undo/Redo. Cloning frames doesn't work yet, will fix shortly.
This commit is contained in:
OverloadedOrama 2020-03-03 02:50:39 +02:00
parent 98e6b0f56b
commit 120e47d0f9
2 changed files with 30 additions and 23 deletions

View file

@ -31,7 +31,6 @@ var pen_pressure := 1.0 # For tablet pressure sensitivity
func _ready() -> void: func _ready() -> void:
var fill_layers := layers.empty() var fill_layers := layers.empty()
for i in range(Global.layers.size()): for i in range(Global.layers.size()):
print(i)
if fill_layers: if fill_layers:
# The sprite itself # The sprite itself
var sprite := Image.new() var sprite := Image.new()
@ -54,14 +53,6 @@ func _ready() -> void:
# Store [Image, ImageTexture, Opacity] # Store [Image, ImageTexture, Opacity]
layers.append([sprite, tex, 1]) layers.append([sprite, tex, 1])
var frame_button = load("res://Prefabs/FrameButton.tscn").instance()
frame_button.frame = frame
frame_button.layer = i
frame_button.pressed = true
#frame_button.get_node("FrameID").text = str(frame + 1)
#frame_button.get_node("FrameID").add_color_override("font_color", Color("#3c5d75"))
Global.layers[i][2].add_child(frame_button)
# Only handle camera zoom settings & offset on the first frame # Only handle camera zoom settings & offset on the first frame
if Global.canvases[0] == self: if Global.canvases[0] == self:
camera_zoom() camera_zoom()

View file

@ -13,6 +13,7 @@ var undos := 0 # The number of times we added undo properties
var saved := true # Checks if the user has saved var saved := true # Checks if the user has saved
# Canvas related stuff # Canvas related stuff
var canvases := [] setget canvases_changed
var layers := [] setget layers_changed var layers := [] setget layers_changed
var current_frame := 0 setget frame_changed var current_frame := 0 setget frame_changed
var current_layer := 0 setget layer_changed var current_layer := 0 setget layer_changed
@ -20,7 +21,6 @@ var current_layer := 0 setget layer_changed
var can_draw := false var can_draw := false
# warning-ignore:unused_class_variable # warning-ignore:unused_class_variable
var has_focus := false var has_focus := false
var canvases := []
# warning-ignore:unused_class_variable # warning-ignore:unused_class_variable
var hidden_canvases := [] var hidden_canvases := []
var pressure_sensitivity_mode = Pressure_Sensitivity.NONE var pressure_sensitivity_mode = Pressure_Sensitivity.NONE
@ -412,7 +412,6 @@ func undo(_canvases : Array, layer_index : int = -1) -> void:
if action_name == "Add Frame": if action_name == "Add Frame":
canvas_parent.remove_child(_canvases[0]) canvas_parent.remove_child(_canvases[0])
frames_container.remove_child(_canvases[0].frame_button)
# This actually means that canvases.size is one, but it hasn't been updated yet # This actually means that canvases.size is one, but it hasn't been updated yet
if canvases.size() == 2: # Stop animating if canvases.size() == 2: # Stop animating
play_forward.pressed = false play_forward.pressed = false
@ -421,10 +420,7 @@ func undo(_canvases : Array, layer_index : int = -1) -> void:
elif action_name == "Remove Frame": elif action_name == "Remove Frame":
canvas_parent.add_child(_canvases[0]) canvas_parent.add_child(_canvases[0])
canvas_parent.move_child(_canvases[0], _canvases[0].frame) canvas_parent.move_child(_canvases[0], _canvases[0].frame)
frames_container.add_child(_canvases[0].frame_button)
frames_container.move_child(_canvases[0].frame_button, _canvases[0].frame)
elif action_name == "Change Frame Order": elif action_name == "Change Frame Order":
frames_container.move_child(_canvases[0].frame_button, _canvases[0].frame)
canvas_parent.move_child(_canvases[0], _canvases[0].frame) canvas_parent.move_child(_canvases[0], _canvases[0].frame)
canvas.update() canvas.update()
@ -451,22 +447,15 @@ func redo(_canvases : Array, layer_index : int = -1) -> void:
if action_name == "Add Frame": if action_name == "Add Frame":
canvas_parent.add_child(_canvases[0]) canvas_parent.add_child(_canvases[0])
var label := Label.new()
label.rect_min_size.x = 36
label.align = Label.ALIGN_CENTER
label.text = str(canvases.size() + 1)
frame_ids.add_child(label)
#if !frames_container.is_a_parent_of(_canvases[0].frame_button): #if !frames_container.is_a_parent_of(_canvases[0].frame_button):
# frames_container.add_child(_canvases[0].frame_button) # frames_container.add_child(_canvases[0].frame_button)
elif action_name == "Remove Frame": elif action_name == "Remove Frame":
canvas_parent.remove_child(_canvases[0]) canvas_parent.remove_child(_canvases[0])
frames_container.remove_child(_canvases[0].frame_button)
if canvases.size() == 1: # Stop animating if canvases.size() == 1: # Stop animating
play_forward.pressed = false play_forward.pressed = false
play_backwards.pressed = false play_backwards.pressed = false
animation_timer.stop() animation_timer.stop()
elif action_name == "Change Frame Order": elif action_name == "Change Frame Order":
frames_container.move_child(_canvases[0].frame_button, _canvases[0].frame)
canvas_parent.move_child(_canvases[0], _canvases[0].frame) canvas_parent.move_child(_canvases[0], _canvases[0].frame)
canvas.update() canvas.update()
@ -480,10 +469,37 @@ func title_changed(value : String) -> void:
window_title = value window_title = value
OS.set_window_title(value) OS.set_window_title(value)
func canvases_changed(value : Array) -> void:
canvases = value
for container in frames_container.get_children():
for button in container.get_children():
button.queue_free()
frames_container.remove_child(container)
for frame_id in frame_ids.get_children():
frame_id.queue_free()
for i in range(layers.size() - 1, -1, -1):
frames_container.add_child(layers[i][2])
for j in range(canvases.size()):
var label := Label.new()
label.rect_min_size.x = 36
label.align = Label.ALIGN_CENTER
label.text = str(j + 1)
frame_ids.add_child(label)
for i in range(layers.size() - 1, -1, -1):
var frame_button = load("res://Prefabs/FrameButton.tscn").instance()
frame_button.frame = j
frame_button.layer = i
frame_button.pressed = true
frame_button.get_child(0).texture = Global.canvases[j].layers[i][1]
layers[i][2].add_child(frame_button)
func layers_changed(value : Array) -> void: func layers_changed(value : Array) -> void:
layers = value layers = value
print(layers)
print(str(layers_container.get_child_count()) + " " + str(frames_container.get_child_count()))
for container in layers_container.get_children(): for container in layers_container.get_children():
container.queue_free() container.queue_free()