2019-12-29 22:24:37 +00:00
|
|
|
|
extends ConfirmationDialog
|
|
|
|
|
|
2021-01-25 20:07:02 +00:00
|
|
|
|
var aspect_ratio := 1.0
|
2023-03-14 11:58:40 +00:00
|
|
|
|
var recent_sizes := []
|
2021-01-25 20:07:02 +00:00
|
|
|
|
var templates := [
|
2021-02-05 11:05:08 +00:00
|
|
|
|
# Basic
|
2021-01-25 20:07:02 +00:00
|
|
|
|
Template.new(Vector2(16, 16)),
|
|
|
|
|
Template.new(Vector2(32, 32)),
|
|
|
|
|
Template.new(Vector2(64, 64)),
|
|
|
|
|
Template.new(Vector2(128, 128)),
|
2021-02-05 11:05:08 +00:00
|
|
|
|
# Nintendo
|
2021-01-25 20:07:02 +00:00
|
|
|
|
Template.new(Vector2(160, 144), "GB"),
|
|
|
|
|
Template.new(Vector2(240, 160), "GBA"),
|
|
|
|
|
Template.new(Vector2(256, 224), "NES (NTSC)"),
|
|
|
|
|
Template.new(Vector2(256, 240), "NES (PAL)"),
|
|
|
|
|
Template.new(Vector2(512, 448), "SNES (NTSC)"),
|
|
|
|
|
Template.new(Vector2(512, 480), "SNES (PAL)"),
|
2021-02-05 11:05:08 +00:00
|
|
|
|
Template.new(Vector2(646, 486), "N64 (NTSC)"),
|
|
|
|
|
Template.new(Vector2(786, 576), "N64 (PAL)"),
|
|
|
|
|
# Sega
|
|
|
|
|
Template.new(Vector2(256, 192), "SMS (NTSC)"),
|
|
|
|
|
Template.new(Vector2(256, 224), "SMS (PAL)"),
|
|
|
|
|
Template.new(Vector2(160, 144), "GG"),
|
|
|
|
|
Template.new(Vector2(320, 224), "MD (NTSC)"),
|
|
|
|
|
Template.new(Vector2(320, 240), "MD (PAL)"),
|
|
|
|
|
# NEC
|
2021-11-25 12:48:30 +00:00
|
|
|
|
Template.new(Vector2(256, 239), "PC Engine"), #256×224 to 512×242 (mostly 256×239)
|
2021-02-05 11:05:08 +00:00
|
|
|
|
# DOS
|
|
|
|
|
Template.new(Vector2(320, 200), "DOS EGA"),
|
|
|
|
|
Template.new(Vector2(320, 200), "DOS VGA"),
|
|
|
|
|
Template.new(Vector2(620, 480), "DOS SVGA"),
|
|
|
|
|
Template.new(Vector2(640, 200), "DOS CGA (2-Colour)"),
|
|
|
|
|
Template.new(Vector2(320, 200), "DOS CGA (4-Colour)"),
|
|
|
|
|
Template.new(Vector2(160, 240), "DOS CGA (Composite)"),
|
|
|
|
|
Template.new(Vector2(160, 240), "Tandy"),
|
|
|
|
|
# Commodore
|
|
|
|
|
Template.new(Vector2(320, 200), "Amiga OCS LowRes (NTSC)"),
|
|
|
|
|
Template.new(Vector2(320, 256), "Amiga OCS LowRes (PAL)"),
|
|
|
|
|
Template.new(Vector2(640, 200), "Amiga OCS HiRes (NTSC)"),
|
|
|
|
|
Template.new(Vector2(640, 256), "Amiga OCS HiRes (PAL)"),
|
|
|
|
|
Template.new(Vector2(1280, 200), "Amiga ECS Super-HiRes (NTSC)"),
|
|
|
|
|
Template.new(Vector2(1280, 256), "Amiga ECS SuperHiRes (PAL)"),
|
|
|
|
|
Template.new(Vector2(640, 480), "Amiga ECS Multiscan"),
|
|
|
|
|
Template.new(Vector2(320, 200), "C64"),
|
|
|
|
|
# Sinclair
|
|
|
|
|
Template.new(Vector2(256, 192), "ZX Spectrum"),
|
2021-01-25 20:07:02 +00:00
|
|
|
|
]
|
|
|
|
|
|
2023-03-14 11:58:40 +00:00
|
|
|
|
onready var recent_templates_list = find_node("RecentTemplates")
|
2021-01-25 20:07:02 +00:00
|
|
|
|
onready var templates_options = find_node("TemplatesOptions")
|
|
|
|
|
onready var ratio_box = find_node("AspectRatioButton")
|
|
|
|
|
onready var width_value = find_node("WidthValue")
|
|
|
|
|
onready var height_value = find_node("HeightValue")
|
|
|
|
|
onready var portrait_button = find_node("PortraitButton")
|
|
|
|
|
onready var landscape_button = find_node("LandscapeButton")
|
|
|
|
|
onready var fill_color_node = find_node("FillColor")
|
2020-04-10 18:19:44 +00:00
|
|
|
|
|
2020-05-01 17:47:10 +00:00
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
|
class Template:
|
|
|
|
|
var resolution: Vector2
|
|
|
|
|
var name: String
|
|
|
|
|
|
|
|
|
|
func _init(_resolution: Vector2, _name := "") -> void:
|
|
|
|
|
resolution = _resolution
|
|
|
|
|
name = _name
|
|
|
|
|
|
|
|
|
|
|
2020-04-03 00:12:42 +00:00
|
|
|
|
func _ready() -> void:
|
2021-12-01 18:50:50 +00:00
|
|
|
|
width_value.value = Global.default_width
|
|
|
|
|
height_value.value = Global.default_height
|
2021-01-25 20:07:02 +00:00
|
|
|
|
aspect_ratio = width_value.value / height_value.value
|
2020-07-15 00:25:59 +00:00
|
|
|
|
fill_color_node.color = Global.default_fill_color
|
2020-05-06 17:24:22 +00:00
|
|
|
|
fill_color_node.get_picker().presets_visible = false
|
2020-07-15 00:25:59 +00:00
|
|
|
|
|
2021-01-25 20:07:02 +00:00
|
|
|
|
_create_option_list()
|
2020-04-11 02:36:51 +00:00
|
|
|
|
|
2020-04-10 18:19:44 +00:00
|
|
|
|
|
2023-03-14 11:58:40 +00:00
|
|
|
|
func _on_CreateNewImage_about_to_show():
|
|
|
|
|
recent_sizes = Global.config_cache.get_value("templates", "recent_sizes", [])
|
|
|
|
|
_create_recent_list()
|
|
|
|
|
|
|
|
|
|
|
2021-01-25 20:07:02 +00:00
|
|
|
|
func _create_option_list() -> void:
|
|
|
|
|
var i := 1
|
|
|
|
|
for template in templates:
|
|
|
|
|
if template.name != "":
|
2021-11-25 12:48:30 +00:00
|
|
|
|
templates_options.add_item(
|
|
|
|
|
"{width}x{height} - {name}".format(
|
|
|
|
|
{
|
|
|
|
|
"width": template.resolution.x,
|
|
|
|
|
"height": template.resolution.y,
|
|
|
|
|
"name": template.name
|
|
|
|
|
}
|
|
|
|
|
),
|
|
|
|
|
i
|
|
|
|
|
)
|
2021-01-25 20:07:02 +00:00
|
|
|
|
else:
|
2021-11-25 12:48:30 +00:00
|
|
|
|
templates_options.add_item(
|
|
|
|
|
"{width}x{height}".format(
|
|
|
|
|
{"width": template.resolution.x, "height": template.resolution.y}
|
|
|
|
|
),
|
|
|
|
|
i
|
|
|
|
|
)
|
2020-05-01 17:47:10 +00:00
|
|
|
|
|
2021-01-25 20:07:02 +00:00
|
|
|
|
i += 1
|
2020-04-03 00:25:56 +00:00
|
|
|
|
|
2020-05-01 17:47:10 +00:00
|
|
|
|
|
2023-03-14 11:58:40 +00:00
|
|
|
|
func _create_recent_list() -> void:
|
|
|
|
|
recent_templates_list.clear()
|
|
|
|
|
for size in recent_sizes:
|
|
|
|
|
recent_templates_list.add_item(
|
|
|
|
|
"{width}x{height}".format({"width": size.x, "height": size.y})
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2019-12-29 22:24:37 +00:00
|
|
|
|
func _on_CreateNewImage_confirmed() -> void:
|
2021-11-25 12:48:30 +00:00
|
|
|
|
var width: int = width_value.value
|
|
|
|
|
var height: int = height_value.value
|
2023-03-14 11:58:40 +00:00
|
|
|
|
var size = Vector2(width, height)
|
|
|
|
|
if size in recent_sizes:
|
|
|
|
|
recent_sizes.erase(size)
|
|
|
|
|
recent_sizes.insert(0, size)
|
|
|
|
|
if recent_sizes.size() > 10:
|
|
|
|
|
recent_sizes.resize(10)
|
|
|
|
|
Global.config_cache.set_value("templates", "recent_sizes", recent_sizes)
|
2021-11-25 12:48:30 +00:00
|
|
|
|
var fill_color: Color = fill_color_node.color
|
2020-06-05 01:30:50 +00:00
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
|
var proj_name: String = $VBoxContainer/ProjectName/NameInput.text
|
2021-12-01 18:50:50 +00:00
|
|
|
|
if !proj_name.is_valid_filename():
|
|
|
|
|
proj_name = tr("untitled")
|
|
|
|
|
|
|
|
|
|
var new_project := Project.new([], proj_name, Vector2(width, height).floor())
|
Basic Layer Groups and Timeline Refactor (#698)
* Fixed issues with Shading tool Saturation and Value not always being right in Hue Shading mode
* Shading tool hue shifting fixes and tweaks
* Bringing over changes from layer groups brach, without any changes to layer blending
* Some quick fixes to make it work again
* Fixed some of the places where GroupLayers cause errors. Cel Buttons are now hidden when groups are collapsed
* Layer drag highlighting (need to actually drop them correctly, also need to do cels)
* Added more layer hierarchy related functions, organized the function order in the Layer classes a bit
* Switched the layer type changing from string to int
* Moved layer type enum to Global
* Added get_layer_type_name(), currently used for the default layer name
* Renamed the layer get_children/is_a_parent_of functions
* changed get_layer_type_name() to get_default_name(number)
* New layer drag and dropping behavior
* Added read/write_image_data_from/to_pxo functions to Cel classes to handle saving/loading the binary image data for each cel type
* Fixed warning
* Added a line to child layers wich makes it easier to see where they are in the hierarchy
* Fixed debugger warning
* Fixed all cel types loading as PixelCels
* Fixed spacing issue with cels when collapsing groups
* Fixed bug when dropping a child layer to the bottom region of its parent group, where it would end up to far down (maybe disappearing)
* updated temporary todo comments
* Created a base scene for layer buttons and merged layer button script into one
* Prevent the case of parenting to itself in layer drag and drop, fixed static reference to LayerButton still being BaseLayerButton
* Use a base scene for CelButtons
* First bit of the refactoring work
* Several bits of refactoring
* Fixed moving cels
* Cleaned up Project.move_cel function
* Fixed project_layer_removed
* Updated change_frame_order on FrameButton. Some (not all) work on getting the layer UI updated when pressing buttons such as collapse/visible/lock
* Bug fixes. Updating layer button's buttons
* Fixed timeline selection issues when creating a new project. Some code cleanup
* tweaks
* Removed a bunch of commented out code
* Removing more commented out code
* Fixed bugs with timeline selectio. Fixed cels being placed in the reverse layer order when adding a frame
* Changed add/remove_frame to add/remove_frames (multiple support)
* Refactored copy_frames in animation timeline
* added copy function to cel classes
* added layer copy function
* simplifed copy_frames a tiny bit
* Updated TODO comments to categorize them and remove any that were already done
* Turned Project.add/remove_layer into Project.add/remove_layers (multiple support), not yet tested
* Seperated the layer cloning functionality in timeline's add_layer to its own function, since they're only used by one button, renamed to _on_Button_pressed naming scheme, added children support to the delete layer button
* some TODOs
* Added layer swapping
* Added priorities to refactor TODOs
* Simplified layer swapping code a little
* Fixed performance regression on changing project, updated TODOs
* Included _on_MergeDownLayer_pressed in timeline refactor
* Cleaned up _on_MergeDownLayer_pressed refactor
* If all frames are selected, prevent being able to remove all of them
* Fixed cel linking when cloning layers/frames. Moved the copy function from cel classes to layer classes, splitting into copy_cel and copy_all_cels
* Combined and rewrote the 2 project _toggle_layer_buttons_.. functions into 1 simpler _toggle_layer_buttons function
* Simplified _toggle_layer_buttons some more
* Added hierarchy support for move up/down layer buttons
* Added toggle_frame_buttons method to project (extracted from _frame_changed). Called from main when setting up startup project. Removed _ from start of _toggle_layer_buttons name
* Fixed duplicate_layers parent references being to the original layers
* cleaned up project.move_layers method a bit
* TODOs
* moved the transform_content_confirm calls for the layer buttons in AnimationTimeline (Add/remove/clone) to the project layer modification functions
* animation first/last_frame tweaks and un-press play buttons when the first/last_frame are the same in _on_AnimationTimer_timeout in AnimationTimeline
* Cleaned up project_changed in ANimationTimeline a bit
* Cleaned up project_layer_added in AnimationTimeline
* Changed Layer classes get_default_name to set_name_to_default
* Cleaned up LayerButton.drop_data slightly
* Looked at some of my TODOs
* cleaned up copying cels
* Fixed CelButton linked_indicator not showing up right away when becoming linked
* Cleand up link/unlink cel menu option a little. Fixed situatoin where trying to call button_setup on cel_button that doesn't exist anymore due to undo/redo
* Fixed regression with copy_cel (linked) in when cloning a frame
* Minor cleanup, more detailed comments, updated TODOs
* more improved comments
* Made focus_mode on Cel/Layer/FrameButton NONE to fix bug where it looks like one is selected after pressing it and adding a new Layer/Frame (but its just in the focus state, not the pressed state
* Made AnimationTimeline.change_layer_order work a little more consistantly with LayerButton.drop_data, and fixed a minor bug in it
* Updated comments and TODOs
* cleanup
* removed some code that should no longer be needed
* updated comment
* removed Project's frames and layers setters _frames_changed and _layers_changed
* Made some 'for x in range(array.size())' just 'for x in array.size()'
* updated comments/TODOs
* Cel content changes intial
* Added 'content' methods to Cel classes
* Removed image var from PixelCelButton
* Reusing PixelCelButton.gd on GroupCelButton scene
* Renamed PixelCelButton.gd to CelButton.gd (as it will be used for all Cel Buttons) and deleted GroupCelButton.gd
* Hide the TransparentChecker on GroupCelButton.tscn until a preview texture is added for GroupCels
* TODOs, prevent memory leak when closing projects
* Link/unlink cel cleanup
:
* Added _project param to _init methods of Layer classes
* Added update_texture method to Cel classes (moving part from the update_texture and update_selected_cels_textures methods from Canvas.gd
* Removed a temporary check (which also fixed another bug)
* Clone child layers when cloning a layer
* Added temp dummy get_image method to GroupCel, and use get_image when copying or picking colors
* TODOs
* Made open_image_as_spritesheet_layer work after the timeline refactor (still doesn't work with groups yet though). TODO comment updates
* Added create_new_cel methods to Layer classes
* Updated TODOs and comments
* Renamed Layer class's create_empty_cel to new_empty_cel to match Project's new_emtpy_frame
* Renamed create_layer/cel_button to instantiate_layer/cel_button
* updated TODOs
* prioritized TODOs
* Fixed some warnings
* removed commented out code from previous commit
* Fixed export
* Made open_image_as_new_frame work after timeline refactor
* Fixed open_image_as_new_layer after timeline refactor
* Some linked cel fixes
* More linked cels fixes
* cleanup
* Optimized importing spreadsheet as new layer
* Fixed Scale Image crash with Groups
* Fixed onion skin with groups
* Removed blend_mode from BaseLayer for now
* Mostly fixed image effects
* Fixed resize canvas
* Fixed drag and drop not working with Cel Buttons on Group Layers
* updated TODOs
* Renamed Replace Frame (in open image) to Replace Cel
* Continued renaming Replace Frame to Replace Cel
* Made open_image_at_cels work after timeline refactor
* Added get_layer_path method to BaseLayer
* Replaced AtLayerSpinbox with AtLayerOption for Open Image as New Frame or Replace Cel
* Updated TODOs
* updated TODOs
* Comments for cel content methods
* fixed right clicking group cel button deselecting the button (even though cel is still selected
* frame/layer modification methods comments
* Removed unneeded size flags
* TODO updates
* Removed a loop that would never run from open_image_as_spritesheet_tab
* TODO update
* Combined BaseLayer.get_children_direct and get_children_recursive into a single get_children method with a bool for recursive. Added a get_child_count method
* Removed unneeded frame paramaters from _on_DeleteFrame_pressed and _on_CopyFrame_pressed
* TODO Updates
* Removed unneeded code from delete_frames
* Made delete_frames variable names more consistent with my other changes
* Continuation
* made variable names in copy_frames more consistent with rest of changes
* Update TODOs
* Removed TODOs for after this PR (moved to my notes)
* Fixed crash when pasting image on Group
* Fixed layer .visible check to be is_visible_in_hierarchy()
* Removed some drag highlight polish code that didn't work
* Removed code from Canvas update_texture and update_selected_cels_textures that was redundant
* gdformat
* gdformat
* gdlint fixes
* Fixed Cel button not having its linked indicator show when enabling new cels linked on a layer other than the current layer
* Fixed crop image and centralize image
* Added '# gdlint: ignore=max-public-methods' to the top of Project'
* Fixed dragging cels to layer of different type crash
* Formatted CelButton.gd
Co-authored-by: MrTriPie <MrTriPie>
2022-09-28 18:59:49 +00:00
|
|
|
|
new_project.layers.append(PixelLayer.new(new_project))
|
2021-12-01 18:02:39 +00:00
|
|
|
|
new_project.fill_color = fill_color
|
Basic Layer Groups and Timeline Refactor (#698)
* Fixed issues with Shading tool Saturation and Value not always being right in Hue Shading mode
* Shading tool hue shifting fixes and tweaks
* Bringing over changes from layer groups brach, without any changes to layer blending
* Some quick fixes to make it work again
* Fixed some of the places where GroupLayers cause errors. Cel Buttons are now hidden when groups are collapsed
* Layer drag highlighting (need to actually drop them correctly, also need to do cels)
* Added more layer hierarchy related functions, organized the function order in the Layer classes a bit
* Switched the layer type changing from string to int
* Moved layer type enum to Global
* Added get_layer_type_name(), currently used for the default layer name
* Renamed the layer get_children/is_a_parent_of functions
* changed get_layer_type_name() to get_default_name(number)
* New layer drag and dropping behavior
* Added read/write_image_data_from/to_pxo functions to Cel classes to handle saving/loading the binary image data for each cel type
* Fixed warning
* Added a line to child layers wich makes it easier to see where they are in the hierarchy
* Fixed debugger warning
* Fixed all cel types loading as PixelCels
* Fixed spacing issue with cels when collapsing groups
* Fixed bug when dropping a child layer to the bottom region of its parent group, where it would end up to far down (maybe disappearing)
* updated temporary todo comments
* Created a base scene for layer buttons and merged layer button script into one
* Prevent the case of parenting to itself in layer drag and drop, fixed static reference to LayerButton still being BaseLayerButton
* Use a base scene for CelButtons
* First bit of the refactoring work
* Several bits of refactoring
* Fixed moving cels
* Cleaned up Project.move_cel function
* Fixed project_layer_removed
* Updated change_frame_order on FrameButton. Some (not all) work on getting the layer UI updated when pressing buttons such as collapse/visible/lock
* Bug fixes. Updating layer button's buttons
* Fixed timeline selection issues when creating a new project. Some code cleanup
* tweaks
* Removed a bunch of commented out code
* Removing more commented out code
* Fixed bugs with timeline selectio. Fixed cels being placed in the reverse layer order when adding a frame
* Changed add/remove_frame to add/remove_frames (multiple support)
* Refactored copy_frames in animation timeline
* added copy function to cel classes
* added layer copy function
* simplifed copy_frames a tiny bit
* Updated TODO comments to categorize them and remove any that were already done
* Turned Project.add/remove_layer into Project.add/remove_layers (multiple support), not yet tested
* Seperated the layer cloning functionality in timeline's add_layer to its own function, since they're only used by one button, renamed to _on_Button_pressed naming scheme, added children support to the delete layer button
* some TODOs
* Added layer swapping
* Added priorities to refactor TODOs
* Simplified layer swapping code a little
* Fixed performance regression on changing project, updated TODOs
* Included _on_MergeDownLayer_pressed in timeline refactor
* Cleaned up _on_MergeDownLayer_pressed refactor
* If all frames are selected, prevent being able to remove all of them
* Fixed cel linking when cloning layers/frames. Moved the copy function from cel classes to layer classes, splitting into copy_cel and copy_all_cels
* Combined and rewrote the 2 project _toggle_layer_buttons_.. functions into 1 simpler _toggle_layer_buttons function
* Simplified _toggle_layer_buttons some more
* Added hierarchy support for move up/down layer buttons
* Added toggle_frame_buttons method to project (extracted from _frame_changed). Called from main when setting up startup project. Removed _ from start of _toggle_layer_buttons name
* Fixed duplicate_layers parent references being to the original layers
* cleaned up project.move_layers method a bit
* TODOs
* moved the transform_content_confirm calls for the layer buttons in AnimationTimeline (Add/remove/clone) to the project layer modification functions
* animation first/last_frame tweaks and un-press play buttons when the first/last_frame are the same in _on_AnimationTimer_timeout in AnimationTimeline
* Cleaned up project_changed in ANimationTimeline a bit
* Cleaned up project_layer_added in AnimationTimeline
* Changed Layer classes get_default_name to set_name_to_default
* Cleaned up LayerButton.drop_data slightly
* Looked at some of my TODOs
* cleaned up copying cels
* Fixed CelButton linked_indicator not showing up right away when becoming linked
* Cleand up link/unlink cel menu option a little. Fixed situatoin where trying to call button_setup on cel_button that doesn't exist anymore due to undo/redo
* Fixed regression with copy_cel (linked) in when cloning a frame
* Minor cleanup, more detailed comments, updated TODOs
* more improved comments
* Made focus_mode on Cel/Layer/FrameButton NONE to fix bug where it looks like one is selected after pressing it and adding a new Layer/Frame (but its just in the focus state, not the pressed state
* Made AnimationTimeline.change_layer_order work a little more consistantly with LayerButton.drop_data, and fixed a minor bug in it
* Updated comments and TODOs
* cleanup
* removed some code that should no longer be needed
* updated comment
* removed Project's frames and layers setters _frames_changed and _layers_changed
* Made some 'for x in range(array.size())' just 'for x in array.size()'
* updated comments/TODOs
* Cel content changes intial
* Added 'content' methods to Cel classes
* Removed image var from PixelCelButton
* Reusing PixelCelButton.gd on GroupCelButton scene
* Renamed PixelCelButton.gd to CelButton.gd (as it will be used for all Cel Buttons) and deleted GroupCelButton.gd
* Hide the TransparentChecker on GroupCelButton.tscn until a preview texture is added for GroupCels
* TODOs, prevent memory leak when closing projects
* Link/unlink cel cleanup
:
* Added _project param to _init methods of Layer classes
* Added update_texture method to Cel classes (moving part from the update_texture and update_selected_cels_textures methods from Canvas.gd
* Removed a temporary check (which also fixed another bug)
* Clone child layers when cloning a layer
* Added temp dummy get_image method to GroupCel, and use get_image when copying or picking colors
* TODOs
* Made open_image_as_spritesheet_layer work after the timeline refactor (still doesn't work with groups yet though). TODO comment updates
* Added create_new_cel methods to Layer classes
* Updated TODOs and comments
* Renamed Layer class's create_empty_cel to new_empty_cel to match Project's new_emtpy_frame
* Renamed create_layer/cel_button to instantiate_layer/cel_button
* updated TODOs
* prioritized TODOs
* Fixed some warnings
* removed commented out code from previous commit
* Fixed export
* Made open_image_as_new_frame work after timeline refactor
* Fixed open_image_as_new_layer after timeline refactor
* Some linked cel fixes
* More linked cels fixes
* cleanup
* Optimized importing spreadsheet as new layer
* Fixed Scale Image crash with Groups
* Fixed onion skin with groups
* Removed blend_mode from BaseLayer for now
* Mostly fixed image effects
* Fixed resize canvas
* Fixed drag and drop not working with Cel Buttons on Group Layers
* updated TODOs
* Renamed Replace Frame (in open image) to Replace Cel
* Continued renaming Replace Frame to Replace Cel
* Made open_image_at_cels work after timeline refactor
* Added get_layer_path method to BaseLayer
* Replaced AtLayerSpinbox with AtLayerOption for Open Image as New Frame or Replace Cel
* Updated TODOs
* updated TODOs
* Comments for cel content methods
* fixed right clicking group cel button deselecting the button (even though cel is still selected
* frame/layer modification methods comments
* Removed unneeded size flags
* TODO updates
* Removed a loop that would never run from open_image_as_spritesheet_tab
* TODO update
* Combined BaseLayer.get_children_direct and get_children_recursive into a single get_children method with a bool for recursive. Added a get_child_count method
* Removed unneeded frame paramaters from _on_DeleteFrame_pressed and _on_CopyFrame_pressed
* TODO Updates
* Removed unneeded code from delete_frames
* Made delete_frames variable names more consistent with my other changes
* Continuation
* made variable names in copy_frames more consistent with rest of changes
* Update TODOs
* Removed TODOs for after this PR (moved to my notes)
* Fixed crash when pasting image on Group
* Fixed layer .visible check to be is_visible_in_hierarchy()
* Removed some drag highlight polish code that didn't work
* Removed code from Canvas update_texture and update_selected_cels_textures that was redundant
* gdformat
* gdformat
* gdlint fixes
* Fixed Cel button not having its linked indicator show when enabling new cels linked on a layer other than the current layer
* Fixed crop image and centralize image
* Added '# gdlint: ignore=max-public-methods' to the top of Project'
* Fixed dragging cels to layer of different type crash
* Formatted CelButton.gd
Co-authored-by: MrTriPie <MrTriPie>
2022-09-28 18:59:49 +00:00
|
|
|
|
new_project.frames.append(new_project.new_empty_frame())
|
2020-06-05 15:54:11 +00:00
|
|
|
|
Global.projects.append(new_project)
|
2020-06-05 01:30:50 +00:00
|
|
|
|
Global.tabs.current_tab = Global.tabs.get_tab_count() - 1
|
2020-06-02 23:14:24 +00:00
|
|
|
|
Global.canvas.camera_zoom()
|
2019-12-29 22:24:37 +00:00
|
|
|
|
|
2020-05-01 17:47:10 +00:00
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
|
func _on_AspectRatioButton_toggled(_button_pressed: bool) -> void:
|
2020-04-03 00:12:42 +00:00
|
|
|
|
aspect_ratio = width_value.value / height_value.value
|
|
|
|
|
|
2020-05-01 17:47:10 +00:00
|
|
|
|
|
2020-04-03 00:12:42 +00:00
|
|
|
|
func _on_SizeValue_value_changed(value: float) -> void:
|
2021-01-25 20:07:02 +00:00
|
|
|
|
if ratio_box.pressed:
|
|
|
|
|
if width_value.value == value:
|
|
|
|
|
height_value.value = width_value.value / aspect_ratio
|
|
|
|
|
if height_value.value == value:
|
|
|
|
|
width_value.value = height_value.value * aspect_ratio
|
|
|
|
|
|
|
|
|
|
toggle_size_buttons()
|
2020-04-03 00:12:42 +00:00
|
|
|
|
|
2020-05-01 17:47:10 +00:00
|
|
|
|
|
2021-01-25 20:07:02 +00:00
|
|
|
|
func toggle_size_buttons() -> void:
|
|
|
|
|
portrait_button.disconnect("toggled", self, "_on_PortraitButton_toggled")
|
|
|
|
|
landscape_button.disconnect("toggled", self, "_on_LandscapeButton_toggled")
|
|
|
|
|
portrait_button.pressed = width_value.value < height_value.value
|
|
|
|
|
landscape_button.pressed = width_value.value > height_value.value
|
|
|
|
|
|
|
|
|
|
portrait_button.connect("toggled", self, "_on_PortraitButton_toggled")
|
|
|
|
|
landscape_button.connect("toggled", self, "_on_LandscapeButton_toggled")
|
|
|
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
|
func _on_TemplatesOptions_item_selected(id: int) -> void:
|
2021-05-24 14:03:56 +00:00
|
|
|
|
#if a template is chosen while "ratio button" is pressed then temporarily release it
|
|
|
|
|
var temporary_release = false
|
|
|
|
|
if ratio_box.pressed:
|
|
|
|
|
ratio_box.pressed = false
|
|
|
|
|
temporary_release = true
|
2021-05-24 23:51:10 +00:00
|
|
|
|
|
2021-01-25 20:07:02 +00:00
|
|
|
|
if id > 0:
|
|
|
|
|
width_value.value = templates[id - 1].resolution.x
|
|
|
|
|
height_value.value = templates[id - 1].resolution.y
|
2020-04-10 18:19:44 +00:00
|
|
|
|
else:
|
2021-12-01 18:50:50 +00:00
|
|
|
|
width_value.value = Global.default_width
|
|
|
|
|
height_value.value = Global.default_height
|
2021-05-24 23:51:10 +00:00
|
|
|
|
|
2021-05-24 14:03:56 +00:00
|
|
|
|
if temporary_release:
|
|
|
|
|
ratio_box.pressed = true
|
2020-04-11 02:36:51 +00:00
|
|
|
|
|
2021-01-25 20:07:02 +00:00
|
|
|
|
|
2023-03-14 11:58:40 +00:00
|
|
|
|
func _on_RecentTemplates_item_selected(id):
|
|
|
|
|
#if a template is chosen while "ratio button" is pressed then temporarily release it
|
|
|
|
|
var temporary_release = false
|
|
|
|
|
if ratio_box.pressed:
|
|
|
|
|
ratio_box.pressed = false
|
|
|
|
|
temporary_release = true
|
|
|
|
|
|
|
|
|
|
width_value.value = recent_sizes[id].x
|
|
|
|
|
height_value.value = recent_sizes[id].y
|
|
|
|
|
|
|
|
|
|
if temporary_release:
|
|
|
|
|
ratio_box.pressed = true
|
|
|
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
|
func _on_PortraitButton_toggled(button_pressed: bool) -> void:
|
2021-01-25 20:07:02 +00:00
|
|
|
|
if !button_pressed or height_value.value > width_value.value:
|
|
|
|
|
toggle_size_buttons()
|
|
|
|
|
return
|
|
|
|
|
switch_width_height()
|
|
|
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
|
func _on_LandscapeButton_toggled(button_pressed: bool) -> void:
|
2021-01-25 20:07:02 +00:00
|
|
|
|
if !button_pressed or width_value.value > height_value.value:
|
|
|
|
|
toggle_size_buttons()
|
|
|
|
|
return
|
|
|
|
|
switch_width_height()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func switch_width_height() -> void:
|
|
|
|
|
width_value.disconnect("value_changed", self, "_on_SizeValue_value_changed")
|
|
|
|
|
height_value.disconnect("value_changed", self, "_on_SizeValue_value_changed")
|
|
|
|
|
|
|
|
|
|
var height = height_value.value
|
|
|
|
|
height_value.value = width_value.value
|
|
|
|
|
width_value.value = height
|
|
|
|
|
toggle_size_buttons()
|
|
|
|
|
|
|
|
|
|
width_value.connect("value_changed", self, "_on_SizeValue_value_changed")
|
|
|
|
|
height_value.connect("value_changed", self, "_on_SizeValue_value_changed")
|