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

The selected cel (?) is now pressed, based on current layer and frame

All the other buttons are pressed = false. Also removed some legacy code.
This commit is contained in:
OverloadedOrama 2020-03-05 01:53:48 +02:00
parent 87629fdf2f
commit 2a5dfa7ea2
4 changed files with 25 additions and 57 deletions

View file

@ -23,10 +23,7 @@ func add_frame() -> void:
Global.undo_redo.add_do_property(Global, "hidden_canvases", Global.hidden_canvases)
Global.undo_redo.add_do_property(Global, "canvas", new_canvas)
Global.undo_redo.add_do_property(Global, "current_frame", new_canvases.size() - 1)
for i in range(Global.layers.size()):
for child in Global.layers[i][2].get_children():
Global.undo_redo.add_do_property(child, "pressed", false)
Global.undo_redo.add_undo_property(child, "pressed", child.pressed)
for c in Global.canvases:
Global.undo_redo.add_do_property(c, "visible", false)
Global.undo_redo.add_undo_property(c, "visible", c.visible)

View file

@ -417,7 +417,7 @@ func _input(event : InputEvent) -> void:
previous_mouse_pos.x = clamp(previous_mouse_pos.x, location.x, location.x + size.x)
previous_mouse_pos.y = clamp(previous_mouse_pos.y, location.y, location.y + size.y)
if sprite_changed_this_frame:
update_texture(Global.current_layer, (Input.is_action_just_released("left_mouse") || Input.is_action_just_released("right_mouse")))
update_texture(Global.current_layer)
func camera_zoom() -> void:
# Set camera zoom based on the sprite size
@ -489,25 +489,12 @@ func handle_redo(action : String) -> void:
Global.undo_redo.add_do_method(Global, "redo", canvases, layer_index)
Global.undo_redo.commit_action()
func update_texture(layer_index : int, update_frame_tex := true) -> void:
func update_texture(layer_index : int) -> void:
layers[layer_index][1].create_from_image(layers[layer_index][0], 0)
# var layer_container := get_layer_container(layer_index)
# if layer_container:
# layer_container.get_child(1).get_child(0).texture = layers[layer_index][1]
var frame_texture_rect : TextureRect
frame_texture_rect = Global.find_node_by_name(Global.layers[layer_index][2].get_child(frame),"FrameTexture")
frame_texture_rect.texture = layers[layer_index][1]
# if update_frame_tex:
# # This code is used to update the texture in the animation timeline frame button
# # but blend_rect causes major performance issues on large images
# var whole_image := Image.new()
# whole_image.create(size.x, size.y, false, Image.FORMAT_RGBA8)
# for layer in layers:
# whole_image.blend_rect(layer[0], Rect2(position, size), Vector2.ZERO)
# layer[0].lock()
# var whole_image_texture := ImageTexture.new()
# whole_image_texture.create_from_image(whole_image, 0)
# frame_texture_rect.texture = whole_image_texture
func frame_changed(value : int) -> void:
frame = value
@ -521,29 +508,6 @@ func get_layer_container(layer_index : int) -> LayerContainer:
return container
return null
func generate_layer_panels() -> void:
return
for child in Global.layers_container.get_children():
if child is LayerContainer:
child.queue_free()
current_layer_index = layers.size() - 1
if layers.size() == 1:
Global.remove_layer_button.disabled = true
Global.remove_layer_button.mouse_default_cursor_shape = Control.CURSOR_FORBIDDEN
else:
Global.remove_layer_button.disabled = false
Global.remove_layer_button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
for i in range(layers.size() -1, -1, -1):
var layer_container = load("res://Prefabs/LayerContainer.tscn").instance()
# if !layers[i][2]:
# layers[i][2] = tr("Layer") + " %s" % i
layer_container.i = i
layer_container.get_child(0).get_child(1).text = layers[i][2]
layer_container.get_child(0).get_child(2).text = layers[i][2]
Global.layer_and_frame_container.add_child(layer_container)
func pencil_and_eraser(sprite : Image, mouse_pos : Vector2, color : Color, current_mouse_button : String, current_action := "None") -> void:
if made_line:
return

View file

@ -12,8 +12,6 @@ func _on_FrameButton_pressed() -> void:
if Input.is_action_just_released("left_mouse"):
Global.current_frame = frame
Global.current_layer = layer
print(str(frame), str(layer))
print("Current layer: %s" % Global.current_layer)
elif Input.is_action_just_released("right_mouse"):
if Global.canvases.size() == 1:
popup_menu.set_item_disabled(0, true)

View file

@ -473,10 +473,12 @@ func canvases_changed(value : Array) -> void:
canvases = value
for container in frames_container.get_children():
for button in container.get_children():
container.remove_child(button)
button.queue_free()
frames_container.remove_child(container)
for frame_id in frame_ids.get_children():
frame_ids.remove_child(frame_id)
frame_id.queue_free()
for i in range(layers.size() - 1, -1, -1):
@ -506,6 +508,7 @@ func layers_changed(value : Array) -> void:
for container in frames_container.get_children():
for button in container.get_children():
container.remove_child(button)
button.queue_free()
frames_container.remove_child(container)
@ -524,13 +527,13 @@ func layers_changed(value : Array) -> void:
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)
var layer_button = layers_container.get_child(layers_container.get_child_count() - 1 - current_layer)
layer_button.pressed = true
self.current_frame = current_frame # Call frame_changed to update UI
if layers.size() == 1:
remove_layer_button.disabled = true
@ -549,23 +552,26 @@ func frame_changed(value : int) -> void:
current_frame = value
current_frame_label.text = tr("Current frame:") + " %s/%s" % [str(current_frame + 1), canvases.size()]
for c in canvases:
var i := 0
for c in canvases: # De-select all the other canvases/frames
c.visible = false
c.is_making_line = false
c.line_2d.set_point_position(1, c.line_2d.points[0])
canvas = canvases[current_frame]
canvas.visible = true
#canvas.generate_layer_panels()
# Make all frame buttons unpressed
for c in canvases:
var text_color := Color.white
if theme_type == "Gold" || theme_type == "Light":
text_color = Color.black
#c.frame_button.pressed = false
#c.frame_button.get_node("FrameID").add_color_override("font_color", text_color)
# Make only the current frame button pressed
#canvas.frame_button.pressed = true
#canvas.frame_button.get_node("FrameID").add_color_override("font_color", Color("#3c5d75"))
frame_ids.get_child(i).add_color_override("font_color", text_color)
for layer in layers:
if i < layer[2].get_child_count():
layer[2].get_child(i).pressed = false
i += 1
# Select the new canvas/frame
canvas = canvases[current_frame]
canvas.visible = true
frame_ids.get_child(current_frame).add_color_override("font_color", Color("#3c5d75"))
if current_frame < layers[current_layer][2].get_child_count():
layers[current_layer][2].get_child(current_frame).pressed = true
func layer_changed(value : int) -> void:
current_layer = value
@ -597,6 +603,9 @@ func layer_changed(value : int) -> void:
merge_down_layer_button.disabled = true
merge_down_layer_button.mouse_default_cursor_shape = Control.CURSOR_FORBIDDEN
yield(get_tree().create_timer(0.01), "timeout")
self.current_frame = current_frame # Call frame_changed to update UI
func create_brush_button(brush_img : Image, brush_type := Brush_Types.CUSTOM, hint_tooltip := "") -> void:
var brush_container
var brush_button = load("res://Prefabs/BrushButton.tscn").instance()