mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-14 15:25:17 +00:00
Fixed project not having the correct size if the default image size has been changed in the Preferences
Ideally, the new_empty_frame() method should be removed from Canvas and should probably go to Frame or Project.
This commit is contained in:
parent
f7ef4a4283
commit
4c60ef144f
5 changed files with 37 additions and 47 deletions
|
@ -119,7 +119,7 @@ onready var small_preview_viewport: ViewportContainer = canvas_preview_container
|
||||||
onready var camera: Camera2D = main_viewport.find_node("Camera2D")
|
onready var camera: Camera2D = main_viewport.find_node("Camera2D")
|
||||||
onready var camera2: Camera2D = control.find_node("Camera2D2")
|
onready var camera2: Camera2D = control.find_node("Camera2D2")
|
||||||
onready var camera_preview: Camera2D = control.find_node("CameraPreview")
|
onready var camera_preview: Camera2D = control.find_node("CameraPreview")
|
||||||
onready var cameras = [Global.camera, Global.camera2, Global.camera_preview]
|
onready var cameras = [camera, camera2, camera_preview]
|
||||||
onready var horizontal_ruler: BaseButton = control.find_node("HorizontalRuler")
|
onready var horizontal_ruler: BaseButton = control.find_node("HorizontalRuler")
|
||||||
onready var vertical_ruler: BaseButton = control.find_node("VerticalRuler")
|
onready var vertical_ruler: BaseButton = control.find_node("VerticalRuler")
|
||||||
onready var transparent_checker: ColorRect = control.find_node("TransparentChecker")
|
onready var transparent_checker: ColorRect = control.find_node("TransparentChecker")
|
||||||
|
@ -179,8 +179,19 @@ func _ready() -> void:
|
||||||
|
|
||||||
panel_layout = config_cache.get_value("window", "panel_layout", PanelLayout.AUTO)
|
panel_layout = config_cache.get_value("window", "panel_layout", PanelLayout.AUTO)
|
||||||
|
|
||||||
projects.append(Project.new())
|
default_image_width = config_cache.get_value(
|
||||||
|
"preferences", "default_image_width", default_image_width
|
||||||
|
)
|
||||||
|
default_image_height = config_cache.get_value(
|
||||||
|
"preferences", "default_image_height", default_image_height
|
||||||
|
)
|
||||||
|
default_fill_color = config_cache.get_value(
|
||||||
|
"preferences", "default_fill_color", default_fill_color
|
||||||
|
)
|
||||||
|
var proj_size := Vector2(default_image_width, default_image_height)
|
||||||
|
projects.append(Project.new([], tr("untitled"), proj_size))
|
||||||
projects[0].layers.append(Layer.new())
|
projects[0].layers.append(Layer.new())
|
||||||
|
projects[0].fill_color = default_fill_color
|
||||||
current_project = projects[0]
|
current_project = projects[0]
|
||||||
for node in get_tree().get_nodes_in_group("UIButtons"):
|
for node in get_tree().get_nodes_in_group("UIButtons"):
|
||||||
var tooltip: String = node.hint_tooltip
|
var tooltip: String = node.hint_tooltip
|
||||||
|
|
|
@ -4,10 +4,11 @@ extends Reference
|
||||||
|
|
||||||
var name := "" setget _name_changed
|
var name := "" setget _name_changed
|
||||||
var size: Vector2 setget _size_changed
|
var size: Vector2 setget _size_changed
|
||||||
var undo_redo: UndoRedo
|
var undo_redo := UndoRedo.new()
|
||||||
var tile_mode: int = Global.TileMode.NONE
|
var tile_mode: int = Global.TileMode.NONE
|
||||||
var tile_mode_rects := [] # Cached to avoid recalculation
|
var tile_mode_rects := [] # Cached to avoid recalculation
|
||||||
var undos := 0 # The number of times we added undo properties
|
var undos := 0 # The number of times we added undo properties
|
||||||
|
var fill_color := Color(0)
|
||||||
var has_changed := false setget _has_changed_changed
|
var has_changed := false setget _has_changed_changed
|
||||||
var frames := [] setget _frames_changed # Array of Frames (that contain Cels)
|
var frames := [] setget _frames_changed # Array of Frames (that contain Cels)
|
||||||
var layers := [] setget _layers_changed # Array of Layers
|
var layers := [] setget _layers_changed # Array of Layers
|
||||||
|
@ -56,8 +57,6 @@ func _init(_frames := [], _name := tr("untitled"), _size := Vector2(64, 64)) ->
|
||||||
selection_bitmap.create(size)
|
selection_bitmap.create(size)
|
||||||
_update_tile_mode_rects()
|
_update_tile_mode_rects()
|
||||||
|
|
||||||
undo_redo = UndoRedo.new()
|
|
||||||
|
|
||||||
Global.tabs.add_tab(name)
|
Global.tabs.add_tab(name)
|
||||||
OpenSave.current_save_paths.append("")
|
OpenSave.current_save_paths.append("")
|
||||||
OpenSave.backup_save_paths.append("")
|
OpenSave.backup_save_paths.append("")
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
class_name Canvas
|
class_name Canvas
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
var fill_color := Color(0, 0, 0, 0)
|
|
||||||
var current_pixel := Vector2.ZERO
|
var current_pixel := Vector2.ZERO
|
||||||
var sprite_changed_this_frame := false # For optimization purposes
|
var sprite_changed_this_frame := false # For optimization purposes
|
||||||
var move_preview_location := Vector2.ZERO
|
var move_preview_location := Vector2.ZERO
|
||||||
|
@ -21,8 +20,9 @@ func _ready() -> void:
|
||||||
$OnionPast.blue_red_color = Color.blue
|
$OnionPast.blue_red_color = Color.blue
|
||||||
$OnionFuture.type = $OnionFuture.FUTURE
|
$OnionFuture.type = $OnionFuture.FUTURE
|
||||||
$OnionFuture.blue_red_color = Color.red
|
$OnionFuture.blue_red_color = Color.red
|
||||||
var frame: Frame = new_empty_frame(true)
|
var project: Project = Global.current_project
|
||||||
Global.current_project.frames.append(frame)
|
var frame: Frame = new_empty_frame(project.fill_color, project.size)
|
||||||
|
project.frames.append(frame)
|
||||||
yield(get_tree(), "idle_frame")
|
yield(get_tree(), "idle_frame")
|
||||||
camera_zoom()
|
camera_zoom()
|
||||||
|
|
||||||
|
@ -106,24 +106,11 @@ func camera_zoom() -> void:
|
||||||
Global.transparent_checker.update_rect()
|
Global.transparent_checker.update_rect()
|
||||||
|
|
||||||
|
|
||||||
func new_empty_frame(
|
func new_empty_frame(fill_color: Color, size: Vector2, single_layer := false) -> Frame:
|
||||||
first_time := false, single_layer := false, size := Global.current_project.size
|
|
||||||
) -> Frame:
|
|
||||||
var frame := Frame.new()
|
var frame := Frame.new()
|
||||||
for l in Global.current_project.layers: # Create as many cels as there are layers
|
for l in Global.current_project.layers: # Create as many cels as there are layers
|
||||||
# The sprite itself
|
# The sprite itself
|
||||||
var sprite := Image.new()
|
var sprite := Image.new()
|
||||||
if first_time:
|
|
||||||
if Global.config_cache.has_section_key("preferences", "default_image_width"):
|
|
||||||
Global.current_project.size.x = Global.config_cache.get_value(
|
|
||||||
"preferences", "default_image_width"
|
|
||||||
)
|
|
||||||
if Global.config_cache.has_section_key("preferences", "default_image_height"):
|
|
||||||
Global.current_project.size.y = Global.config_cache.get_value(
|
|
||||||
"preferences", "default_image_height"
|
|
||||||
)
|
|
||||||
if Global.config_cache.has_section_key("preferences", "default_fill_color"):
|
|
||||||
fill_color = Global.config_cache.get_value("preferences", "default_fill_color")
|
|
||||||
sprite.create(size.x, size.y, false, Image.FORMAT_RGBA8)
|
sprite.create(size.x, size.y, false, Image.FORMAT_RGBA8)
|
||||||
sprite.fill(fill_color)
|
sprite.fill(fill_color)
|
||||||
frame.cels.append(Cel.new(sprite, 1))
|
frame.cels.append(Cel.new(sprite, 1))
|
||||||
|
|
|
@ -102,9 +102,8 @@ func _on_CreateNewImage_confirmed() -> void:
|
||||||
var width: int = width_value.value
|
var width: int = width_value.value
|
||||||
var height: int = height_value.value
|
var height: int = height_value.value
|
||||||
var fill_color: Color = fill_color_node.color
|
var fill_color: Color = fill_color_node.color
|
||||||
Global.canvas.fill_color = fill_color
|
|
||||||
|
|
||||||
var frame: Frame = Global.canvas.new_empty_frame(false, true, Vector2(width, height))
|
var frame: Frame = Global.canvas.new_empty_frame(fill_color, Vector2(width, height), true)
|
||||||
var new_project: Project
|
var new_project: Project
|
||||||
var proj_name: String = $VBoxContainer/ProjectName/NameInput.text
|
var proj_name: String = $VBoxContainer/ProjectName/NameInput.text
|
||||||
if proj_name.is_valid_filename():
|
if proj_name.is_valid_filename():
|
||||||
|
@ -113,6 +112,7 @@ func _on_CreateNewImage_confirmed() -> void:
|
||||||
# an empty field or non valid name...
|
# an empty field or non valid name...
|
||||||
new_project = Project.new([frame], tr("untitled"), Vector2(width, height).floor())
|
new_project = Project.new([frame], tr("untitled"), Vector2(width, height).floor())
|
||||||
new_project.layers.append(Layer.new())
|
new_project.layers.append(Layer.new())
|
||||||
|
new_project.fill_color = fill_color
|
||||||
Global.projects.append(new_project)
|
Global.projects.append(new_project)
|
||||||
Global.tabs.current_tab = Global.tabs.get_tab_count() - 1
|
Global.tabs.current_tab = Global.tabs.get_tab_count() - 1
|
||||||
Global.canvas.camera_zoom()
|
Global.canvas.camera_zoom()
|
||||||
|
|
|
@ -80,10 +80,11 @@ func cel_size_changed(value: int) -> void:
|
||||||
|
|
||||||
|
|
||||||
func add_frame() -> void:
|
func add_frame() -> void:
|
||||||
var frame: Frame = Global.canvas.new_empty_frame()
|
var project: Project = Global.current_project
|
||||||
var new_frames: Array = Global.current_project.frames.duplicate()
|
var frame: Frame = Global.canvas.new_empty_frame(project.fill_color, project.size)
|
||||||
var new_layers: Array = Global.current_project.layers.duplicate()
|
var new_frames: Array = project.frames.duplicate()
|
||||||
new_frames.insert(Global.current_project.current_frame + 1, frame)
|
var new_layers: Array = project.layers.duplicate()
|
||||||
|
new_frames.insert(project.current_frame + 1, frame)
|
||||||
# Loop through the array to create new classes for each element, so that they
|
# Loop through the array to create new classes for each element, so that they
|
||||||
# won't be the same as the original array's classes. Needed for undo/redo to work properly.
|
# won't be the same as the original array's classes. Needed for undo/redo to work properly.
|
||||||
for i in new_layers.size():
|
for i in new_layers.size():
|
||||||
|
@ -103,27 +104,19 @@ func add_frame() -> void:
|
||||||
frame.cels[l_i].image = new_layers[l_i].linked_cels[0].cels[l_i].image
|
frame.cels[l_i].image = new_layers[l_i].linked_cels[0].cels[l_i].image
|
||||||
frame.cels[l_i].image_texture = new_layers[l_i].linked_cels[0].cels[l_i].image_texture
|
frame.cels[l_i].image_texture = new_layers[l_i].linked_cels[0].cels[l_i].image_texture
|
||||||
|
|
||||||
Global.current_project.undos += 1
|
project.undos += 1
|
||||||
Global.current_project.undo_redo.create_action("Add Frame")
|
project.undo_redo.create_action("Add Frame")
|
||||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
project.undo_redo.add_do_method(Global, "redo")
|
||||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
project.undo_redo.add_undo_method(Global, "undo")
|
||||||
|
|
||||||
Global.current_project.undo_redo.add_do_property(Global.current_project, "frames", new_frames)
|
project.undo_redo.add_do_property(project, "frames", new_frames)
|
||||||
Global.current_project.undo_redo.add_do_property(
|
project.undo_redo.add_do_property(project, "current_frame", project.current_frame + 1)
|
||||||
Global.current_project, "current_frame", Global.current_project.current_frame + 1
|
project.undo_redo.add_do_property(project, "layers", new_layers)
|
||||||
)
|
|
||||||
Global.current_project.undo_redo.add_do_property(Global.current_project, "layers", new_layers)
|
|
||||||
|
|
||||||
Global.current_project.undo_redo.add_undo_property(
|
project.undo_redo.add_undo_property(project, "frames", project.frames)
|
||||||
Global.current_project, "frames", Global.current_project.frames
|
project.undo_redo.add_undo_property(project, "current_frame", project.current_frame)
|
||||||
)
|
project.undo_redo.add_undo_property(project, "layers", project.layers)
|
||||||
Global.current_project.undo_redo.add_undo_property(
|
project.undo_redo.commit_action()
|
||||||
Global.current_project, "current_frame", Global.current_project.current_frame
|
|
||||||
)
|
|
||||||
Global.current_project.undo_redo.add_undo_property(
|
|
||||||
Global.current_project, "layers", Global.current_project.layers
|
|
||||||
)
|
|
||||||
Global.current_project.undo_redo.commit_action()
|
|
||||||
|
|
||||||
|
|
||||||
func _on_DeleteFrame_pressed(frame := -1) -> void:
|
func _on_DeleteFrame_pressed(frame := -1) -> void:
|
||||||
|
|
Loading…
Add table
Reference in a new issue