From 3cf44a6d55a279755a9a3395141a60583cb83b39 Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 19 Dec 2019 01:18:57 +0200 Subject: [PATCH 1/6] Created basic theme changing under Preferences Also fixed bug where Global.can_draw wasn't being set to true after PreferencesDialog was hidden --- Main.tscn | 354 +++++++++--------- Prefabs/NotificationLabel.tscn | 3 +- Prefabs/PreferencesDialog.tscn | 84 +++-- Scripts/Global.gd | 2 + Scripts/PreferencesDialog.gd | 26 +- .../{ => Dark Theme}/Dark Theme.tres | 0 .../{ => Dark Theme}/DarkRulerStyle.tres | 0 .../Dark Theme/DarkTopMenuStyle.tres | 4 + .../{ => Main Theme}/Main Theme.tres | 0 .../{ => Main Theme}/RulerStyle.tres | 0 Themes & Styles/Main Theme/TopMenuStyle.tres | 4 + 11 files changed, 263 insertions(+), 214 deletions(-) rename Themes & Styles/{ => Dark Theme}/Dark Theme.tres (100%) rename Themes & Styles/{ => Dark Theme}/DarkRulerStyle.tres (100%) create mode 100644 Themes & Styles/Dark Theme/DarkTopMenuStyle.tres rename Themes & Styles/{ => Main Theme}/Main Theme.tres (100%) rename Themes & Styles/{ => Main Theme}/RulerStyle.tres (100%) create mode 100644 Themes & Styles/Main Theme/TopMenuStyle.tres diff --git a/Main.tscn b/Main.tscn index 641955183..8e2dc54eb 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,74 +1,72 @@ [gd_scene load_steps=81 format=2] -[ext_resource path="res://Themes & Styles/Dark Theme.tres" type="Theme" id=1] +[ext_resource path="res://Themes & Styles/Dark Theme/Dark Theme.tres" type="Theme" id=1] [ext_resource path="res://Scripts/Main.gd" type="Script" id=2] -[ext_resource path="res://Assets/Graphics/Tools/RectSelect.png" type="Texture" id=3] -[ext_resource path="res://Assets/Graphics/Tools/ColorPicker.png" type="Texture" id=4] -[ext_resource path="res://Assets/Graphics/Tools/Pencil_l.png" type="Texture" id=5] -[ext_resource path="res://Assets/Graphics/Tools/Eraser_r.png" type="Texture" id=6] -[ext_resource path="res://Assets/Graphics/Tools/Bucket.png" type="Texture" id=7] -[ext_resource path="res://Assets/Graphics/Tools/LightenDarken.png" type="Texture" id=8] -[ext_resource path="res://Assets/Graphics/Color switch.png" type="Texture" id=9] -[ext_resource path="res://Assets/Graphics/Color defaults.png" type="Texture" id=10] -[ext_resource path="res://Assets/Graphics/Brush_button.png" type="Texture" id=11] -[ext_resource path="res://Themes & Styles/DarkRulerStyle.tres" type="StyleBox" id=12] -[ext_resource path="res://Scripts/HorizontalRuler.gd" type="Script" id=13] -[ext_resource path="res://Scripts/VerticalRuler.gd" type="Script" id=14] -[ext_resource path="res://Prefabs/Canvas.tscn" type="PackedScene" id=15] -[ext_resource path="res://Scripts/CameraMovement.gd" type="Script" id=16] -[ext_resource path="res://Scripts/SelectionRectangle.gd" type="Script" id=17] -[ext_resource path="res://Scripts/SecondViewport.gd" type="Script" id=18] -[ext_resource path="res://Assets/Graphics/Timeline/Go_To_First_Frame.png" type="Texture" id=19] -[ext_resource path="res://Assets/Graphics/Timeline/Go_To_First_Frame_Hover.png" type="Texture" id=20] -[ext_resource path="res://Assets/Graphics/Timeline/Previous_Frame.png" type="Texture" id=21] -[ext_resource path="res://Assets/Graphics/Timeline/Previous_Frame_Hover.png" type="Texture" id=22] -[ext_resource path="res://Assets/Graphics/Timeline/Play Backwards.png" type="Texture" id=23] -[ext_resource path="res://Assets/Graphics/Timeline/Pause.png" type="Texture" id=24] -[ext_resource path="res://Assets/Graphics/Timeline/Play Backwards_Hover.png" type="Texture" id=25] -[ext_resource path="res://Assets/Graphics/Timeline/Play.png" type="Texture" id=26] -[ext_resource path="res://Assets/Graphics/Timeline/Play_Hover.png" type="Texture" id=27] -[ext_resource path="res://Assets/Graphics/Timeline/Next_Frame.png" type="Texture" id=28] -[ext_resource path="res://Assets/Graphics/Timeline/Next_Frame_hover.png" type="Texture" id=29] -[ext_resource path="res://Assets/Graphics/Timeline/Go_To_Last_Frame.png" type="Texture" id=30] -[ext_resource path="res://Assets/Graphics/Timeline/Go_To_Last_Frame_Hover.png" type="Texture" id=31] -[ext_resource path="res://Assets/Graphics/Timeline/Loop_None.png" type="Texture" id=32] -[ext_resource path="res://Scripts/TimelineSeconds.gd" type="Script" id=33] -[ext_resource path="res://Assets/Graphics/Timeline/New_Frame.png" type="Texture" id=34] -[ext_resource path="res://Assets/Graphics/Timeline/New_Frame_Hover.png" type="Texture" id=35] -[ext_resource path="res://Assets/Graphics/Layers/new_layer.png" type="Texture" id=36] -[ext_resource path="res://Assets/Graphics/Layers/new_layer_hover.png" type="Texture" id=37] -[ext_resource path="res://Assets/Graphics/Layers/delete_layer.png" type="Texture" id=38] -[ext_resource path="res://Assets/Graphics/Layers/delete_layer_hover.png" type="Texture" id=39] -[ext_resource path="res://Assets/Graphics/Layers/delete_layer_disabled.png" type="Texture" id=40] -[ext_resource path="res://Assets/Graphics/Layers/move_up.png" type="Texture" id=41] -[ext_resource path="res://Assets/Graphics/Layers/move_up_hover.png" type="Texture" id=42] -[ext_resource path="res://Assets/Graphics/Layers/move_up_disabled.png" type="Texture" id=43] -[ext_resource path="res://Assets/Graphics/Layers/move_down.png" type="Texture" id=44] -[ext_resource path="res://Assets/Graphics/Layers/move_down_hover.png" type="Texture" id=45] -[ext_resource path="res://Assets/Graphics/Layers/move_down_disabled.png" type="Texture" id=46] -[ext_resource path="res://Assets/Graphics/Layers/clone_layer.png" type="Texture" id=47] -[ext_resource path="res://Assets/Graphics/Layers/clone_layer_hover.png" type="Texture" id=48] -[ext_resource path="res://Assets/Graphics/Layers/merge_down.png" type="Texture" id=49] -[ext_resource path="res://Assets/Graphics/Layers/merge_down_hover.png" type="Texture" id=50] -[ext_resource path="res://Assets/Graphics/Layers/merge_down_disabled.png" type="Texture" id=51] -[ext_resource path="res://Scripts/PaletteContainer.gd" type="Script" id=52] -[ext_resource path="res://Prefabs/BrushButton.tscn" type="PackedScene" id=53] -[ext_resource path="res://Assets/Graphics/Canvas_split.png" type="Texture" id=54] -[ext_resource path="res://Assets/Graphics/Canvas_unsplit.png" type="Texture" id=55] -[ext_resource path="res://Prefabs/PreferencesDialog.tscn" type="PackedScene" id=56] -[ext_resource path="res://Scripts/AboutDialog.gd" type="Script" id=57] -[ext_resource path="res://Prefabs/EditPalettePopup.tscn" type="PackedScene" id=58] -[ext_resource path="res://Prefabs/NewPaletteDialog.tscn" type="PackedScene" id=59] -[ext_resource path="res://Prefabs/PaletteImportFileDialog.tscn" type="PackedScene" id=60] +[ext_resource path="res://Themes & Styles/Dark Theme/DarkTopMenuStyle.tres" type="StyleBox" id=3] +[ext_resource path="res://Assets/Graphics/Tools/RectSelect.png" type="Texture" id=4] +[ext_resource path="res://Assets/Graphics/Tools/ColorPicker.png" type="Texture" id=5] +[ext_resource path="res://Assets/Graphics/Tools/Pencil_l.png" type="Texture" id=6] +[ext_resource path="res://Assets/Graphics/Tools/Eraser_r.png" type="Texture" id=7] +[ext_resource path="res://Assets/Graphics/Tools/Bucket.png" type="Texture" id=8] +[ext_resource path="res://Assets/Graphics/Tools/LightenDarken.png" type="Texture" id=9] +[ext_resource path="res://Assets/Graphics/Color switch.png" type="Texture" id=10] +[ext_resource path="res://Assets/Graphics/Color defaults.png" type="Texture" id=11] +[ext_resource path="res://Assets/Graphics/Brush_button.png" type="Texture" id=12] +[ext_resource path="res://Themes & Styles/Dark Theme/DarkRulerStyle.tres" type="StyleBox" id=13] +[ext_resource path="res://Scripts/HorizontalRuler.gd" type="Script" id=14] +[ext_resource path="res://Scripts/VerticalRuler.gd" type="Script" id=15] +[ext_resource path="res://Prefabs/Canvas.tscn" type="PackedScene" id=16] +[ext_resource path="res://Scripts/CameraMovement.gd" type="Script" id=17] +[ext_resource path="res://Scripts/SelectionRectangle.gd" type="Script" id=18] +[ext_resource path="res://Scripts/SecondViewport.gd" type="Script" id=19] +[ext_resource path="res://Assets/Graphics/Timeline/Go_To_First_Frame.png" type="Texture" id=20] +[ext_resource path="res://Assets/Graphics/Timeline/Go_To_First_Frame_Hover.png" type="Texture" id=21] +[ext_resource path="res://Assets/Graphics/Timeline/Previous_Frame.png" type="Texture" id=22] +[ext_resource path="res://Assets/Graphics/Timeline/Previous_Frame_Hover.png" type="Texture" id=23] +[ext_resource path="res://Assets/Graphics/Timeline/Play Backwards.png" type="Texture" id=24] +[ext_resource path="res://Assets/Graphics/Timeline/Pause.png" type="Texture" id=25] +[ext_resource path="res://Assets/Graphics/Timeline/Play Backwards_Hover.png" type="Texture" id=26] +[ext_resource path="res://Assets/Graphics/Timeline/Play.png" type="Texture" id=27] +[ext_resource path="res://Assets/Graphics/Timeline/Play_Hover.png" type="Texture" id=28] +[ext_resource path="res://Assets/Graphics/Timeline/Next_Frame.png" type="Texture" id=29] +[ext_resource path="res://Assets/Graphics/Timeline/Next_Frame_hover.png" type="Texture" id=30] +[ext_resource path="res://Assets/Graphics/Timeline/Go_To_Last_Frame.png" type="Texture" id=31] +[ext_resource path="res://Assets/Graphics/Timeline/Go_To_Last_Frame_Hover.png" type="Texture" id=32] +[ext_resource path="res://Assets/Graphics/Timeline/Loop_None.png" type="Texture" id=33] +[ext_resource path="res://Scripts/TimelineSeconds.gd" type="Script" id=34] +[ext_resource path="res://Assets/Graphics/Timeline/New_Frame.png" type="Texture" id=35] +[ext_resource path="res://Assets/Graphics/Timeline/New_Frame_Hover.png" type="Texture" id=36] +[ext_resource path="res://Assets/Graphics/Layers/new_layer.png" type="Texture" id=37] +[ext_resource path="res://Assets/Graphics/Layers/new_layer_hover.png" type="Texture" id=38] +[ext_resource path="res://Assets/Graphics/Layers/delete_layer.png" type="Texture" id=39] +[ext_resource path="res://Assets/Graphics/Layers/delete_layer_hover.png" type="Texture" id=40] +[ext_resource path="res://Assets/Graphics/Layers/delete_layer_disabled.png" type="Texture" id=41] +[ext_resource path="res://Assets/Graphics/Layers/move_up.png" type="Texture" id=42] +[ext_resource path="res://Assets/Graphics/Layers/move_up_hover.png" type="Texture" id=43] +[ext_resource path="res://Assets/Graphics/Layers/move_up_disabled.png" type="Texture" id=44] +[ext_resource path="res://Assets/Graphics/Layers/move_down.png" type="Texture" id=45] +[ext_resource path="res://Assets/Graphics/Layers/move_down_hover.png" type="Texture" id=46] +[ext_resource path="res://Assets/Graphics/Layers/move_down_disabled.png" type="Texture" id=47] +[ext_resource path="res://Assets/Graphics/Layers/clone_layer.png" type="Texture" id=48] +[ext_resource path="res://Assets/Graphics/Layers/clone_layer_hover.png" type="Texture" id=49] +[ext_resource path="res://Assets/Graphics/Layers/merge_down.png" type="Texture" id=50] +[ext_resource path="res://Assets/Graphics/Layers/merge_down_hover.png" type="Texture" id=51] +[ext_resource path="res://Assets/Graphics/Layers/merge_down_disabled.png" type="Texture" id=52] +[ext_resource path="res://Scripts/PaletteContainer.gd" type="Script" id=53] +[ext_resource path="res://Prefabs/BrushButton.tscn" type="PackedScene" id=54] +[ext_resource path="res://Assets/Graphics/Canvas_split.png" type="Texture" id=55] +[ext_resource path="res://Assets/Graphics/Canvas_unsplit.png" type="Texture" id=56] +[ext_resource path="res://Prefabs/PreferencesDialog.tscn" type="PackedScene" id=57] +[ext_resource path="res://Scripts/AboutDialog.gd" type="Script" id=58] +[ext_resource path="res://Prefabs/EditPalettePopup.tscn" type="PackedScene" id=59] +[ext_resource path="res://Prefabs/NewPaletteDialog.tscn" type="PackedScene" id=60] +[ext_resource path="res://Prefabs/PaletteImportFileDialog.tscn" type="PackedScene" id=61] -[sub_resource type="StyleBoxFlat" id=1] -bg_color = Color( 0.0823529, 0.0823529, 0.0823529, 1 ) - -[sub_resource type="InputEventKey" id=19] +[sub_resource type="InputEventKey" id=2] scancode = 88 -[sub_resource type="ShortCut" id=20] -shortcut = SubResource( 19 ) +[sub_resource type="ShortCut" id=3] +shortcut = SubResource( 2 ) [sub_resource type="Image" id=21] data = { @@ -79,7 +77,7 @@ data = { "width": 32 } -[sub_resource type="ImageTexture" id=3] +[sub_resource type="ImageTexture" id=5] image = SubResource( 21 ) size = Vector2( 32, 32 ) @@ -92,42 +90,34 @@ data = { "width": 32 } -[sub_resource type="ImageTexture" id=5] +[sub_resource type="ImageTexture" id=7] image = SubResource( 22 ) size = Vector2( 32, 32 ) -[sub_resource type="InputEventKey" id=6] -control = true -command = true -scancode = 16777229 - -[sub_resource type="ShortCut" id=7] -shortcut = SubResource( 6 ) - [sub_resource type="InputEventKey" id=8] control = true command = true -scancode = 16777231 +scancode = 16777229 [sub_resource type="ShortCut" id=9] shortcut = SubResource( 8 ) [sub_resource type="InputEventKey" id=10] -scancode = 16777247 +control = true +command = true +scancode = 16777231 [sub_resource type="ShortCut" id=11] shortcut = SubResource( 10 ) [sub_resource type="InputEventKey" id=12] -scancode = 16777248 +scancode = 16777247 [sub_resource type="ShortCut" id=13] shortcut = SubResource( 12 ) [sub_resource type="InputEventKey" id=14] -control = true -command = true -scancode = 16777233 +scancode = 16777248 [sub_resource type="ShortCut" id=15] shortcut = SubResource( 14 ) @@ -135,12 +125,20 @@ shortcut = SubResource( 14 ) [sub_resource type="InputEventKey" id=16] control = true command = true -scancode = 16777230 +scancode = 16777233 [sub_resource type="ShortCut" id=17] shortcut = SubResource( 16 ) -[sub_resource type="StreamTexture" id=18] +[sub_resource type="InputEventKey" id=18] +control = true +command = true +scancode = 16777230 + +[sub_resource type="ShortCut" id=19] +shortcut = SubResource( 18 ) + +[sub_resource type="StreamTexture" id=20] load_path = "res://.import/new_layer.png-6f042042bc418daa72142f41f436a47c.stex" [node name="Control" type="Control"] @@ -158,26 +156,27 @@ anchor_right = 1.0 anchor_bottom = 1.0 custom_constants/separation = 0 -[node name="MenuContainer" type="Panel" parent="MenuAndUI"] +[node name="TopMenuContainer" type="Panel" parent="MenuAndUI"] editor/display_folded = true margin_right = 1152.0 margin_bottom = 28.0 rect_min_size = Vector2( 0, 28 ) -custom_styles/panel = SubResource( 1 ) +custom_styles/panel = ExtResource( 3 ) -[node name="MenuItems" type="HBoxContainer" parent="MenuAndUI/MenuContainer"] +[node name="MenuItems" type="HBoxContainer" parent="MenuAndUI/TopMenuContainer"] +editor/display_folded = true margin_left = 2.0 margin_top = 4.0 margin_right = 1010.0 -[node name="FileMenu" type="MenuButton" parent="MenuAndUI/MenuContainer/MenuItems"] +[node name="FileMenu" type="MenuButton" parent="MenuAndUI/TopMenuContainer/MenuItems"] margin_right = 27.0 margin_bottom = 23.0 mouse_default_cursor_shape = 2 text = "File" switch_on_hover = true -[node name="EditMenu" type="MenuButton" parent="MenuAndUI/MenuContainer/MenuItems"] +[node name="EditMenu" type="MenuButton" parent="MenuAndUI/TopMenuContainer/MenuItems"] margin_left = 31.0 margin_right = 60.0 margin_bottom = 23.0 @@ -185,7 +184,7 @@ mouse_default_cursor_shape = 2 text = "Edit" switch_on_hover = true -[node name="ViewMenu" type="MenuButton" parent="MenuAndUI/MenuContainer/MenuItems"] +[node name="ViewMenu" type="MenuButton" parent="MenuAndUI/TopMenuContainer/MenuItems"] margin_left = 64.0 margin_right = 98.0 margin_bottom = 23.0 @@ -193,7 +192,7 @@ mouse_default_cursor_shape = 2 text = "View" switch_on_hover = true -[node name="HelpMenu" type="MenuButton" parent="MenuAndUI/MenuContainer/MenuItems"] +[node name="HelpMenu" type="MenuButton" parent="MenuAndUI/TopMenuContainer/MenuItems"] margin_left = 102.0 margin_right = 135.0 margin_bottom = 23.0 @@ -201,7 +200,7 @@ mouse_default_cursor_shape = 2 text = "Help" switch_on_hover = true -[node name="HBoxContainer" type="HBoxContainer" parent="MenuAndUI/MenuContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="MenuAndUI/TopMenuContainer"] editor/display_folded = true anchor_left = 0.5 anchor_right = 0.5 @@ -210,7 +209,7 @@ margin_left = -65.5 margin_right = 65.5 custom_constants/separation = 20 -[node name="ZoomLevel" type="Label" parent="MenuAndUI/MenuContainer/HBoxContainer"] +[node name="ZoomLevel" type="Label" parent="MenuAndUI/TopMenuContainer/HBoxContainer"] margin_top = 6.0 margin_right = 60.0 margin_bottom = 21.0 @@ -218,7 +217,7 @@ rect_min_size = Vector2( 60, 0 ) text = "781 %" align = 2 -[node name="CursorPosition" type="Label" parent="MenuAndUI/MenuContainer/HBoxContainer"] +[node name="CursorPosition" type="Label" parent="MenuAndUI/TopMenuContainer/HBoxContainer"] margin_left = 80.0 margin_top = 6.0 margin_right = 120.0 @@ -227,7 +226,6 @@ text = "[64×64]" align = 2 [node name="UI" type="HBoxContainer" parent="MenuAndUI"] -editor/display_folded = true margin_top = 28.0 margin_right = 1152.0 margin_bottom = 648.0 @@ -236,13 +234,13 @@ size_flags_vertical = 3 custom_constants/separation = 0 [node name="ToolPanel" type="Panel" parent="MenuAndUI/UI"] +editor/display_folded = true margin_right = 224.0 margin_bottom = 620.0 rect_min_size = Vector2( 224, 0 ) size_flags_vertical = 3 [node name="Tools" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel"] -editor/display_folded = true anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 8.0 @@ -290,7 +288,7 @@ margin_bottom = 32.0 hint_tooltip = "RECTSELECT_HT" mouse_default_cursor_shape = 2 button_mask = 3 -texture_normal = ExtResource( 3 ) +texture_normal = ExtResource( 4 ) [node name="ColorPicker" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools/UtilityTools/SelectionToolsContainer2"] margin_left = 36.0 @@ -299,7 +297,7 @@ margin_bottom = 32.0 hint_tooltip = "COLORPICKER_HT" mouse_default_cursor_shape = 2 button_mask = 3 -texture_normal = ExtResource( 4 ) +texture_normal = ExtResource( 5 ) [node name="DrawTools" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools"] editor/display_folded = true @@ -335,7 +333,7 @@ margin_bottom = 32.0 hint_tooltip = "PENCIL_HT" mouse_default_cursor_shape = 2 button_mask = 3 -texture_normal = ExtResource( 5 ) +texture_normal = ExtResource( 6 ) [node name="Eraser" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools/DrawTools/PaintToolsContainer"] margin_left = 36.0 @@ -344,7 +342,7 @@ margin_bottom = 32.0 hint_tooltip = "ERASER_HT" mouse_default_cursor_shape = 2 button_mask = 3 -texture_normal = ExtResource( 6 ) +texture_normal = ExtResource( 7 ) [node name="Bucket" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools/DrawTools/PaintToolsContainer"] margin_left = 72.0 @@ -353,7 +351,7 @@ margin_bottom = 32.0 hint_tooltip = "BUCKET_HT" mouse_default_cursor_shape = 2 button_mask = 3 -texture_normal = ExtResource( 7 ) +texture_normal = ExtResource( 8 ) [node name="LightenDarken" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools/DrawTools/PaintToolsContainer"] margin_left = 108.0 @@ -362,7 +360,7 @@ margin_bottom = 32.0 hint_tooltip = "LD_HT" mouse_default_cursor_shape = 2 button_mask = 3 -texture_normal = ExtResource( 8 ) +texture_normal = ExtResource( 9 ) [node name="ColorAndToolOptions" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools"] editor/display_folded = true @@ -410,8 +408,8 @@ margin_bottom = 7.0 hint_tooltip = "COLORSWITCH_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 20 ) -texture_normal = ExtResource( 9 ) +shortcut = SubResource( 3 ) +texture_normal = ExtResource( 10 ) [node name="ColorDefaults" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/ColorAndToolOptions/ColorPickersCenter/ColorPickersHorizontal/ColorButtonsCenter/ColorButtonsVertical"] margin_top = 11.0 @@ -419,7 +417,7 @@ margin_right = 17.0 margin_bottom = 17.0 hint_tooltip = "COLORDEFAULTS_HT" mouse_default_cursor_shape = 2 -texture_normal = ExtResource( 10 ) +texture_normal = ExtResource( 11 ) [node name="RightColorPickerButton" type="ColorPickerButton" parent="MenuAndUI/UI/ToolPanel/Tools/ColorAndToolOptions/ColorPickersCenter/ColorPickersHorizontal"] margin_left = 89.0 @@ -471,12 +469,12 @@ rect_min_size = Vector2( 36, 32 ) hint_tooltip = "BRUSH_HT" mouse_default_cursor_shape = 2 size_flags_horizontal = 0 -texture_normal = ExtResource( 11 ) +texture_normal = ExtResource( 12 ) [node name="BrushTexture" type="TextureRect" parent="MenuAndUI/UI/ToolPanel/Tools/ColorAndToolOptions/LeftToolOptions/LeftBrushType/LeftBrushTypeButton"] margin_right = 32.0 margin_bottom = 32.0 -texture = SubResource( 3 ) +texture = SubResource( 5 ) expand = true stretch_mode = 6 @@ -649,12 +647,12 @@ rect_min_size = Vector2( 36, 32 ) hint_tooltip = "BRUSH_HT" mouse_default_cursor_shape = 2 size_flags_horizontal = 0 -texture_normal = ExtResource( 11 ) +texture_normal = ExtResource( 12 ) [node name="BrushTexture" type="TextureRect" parent="MenuAndUI/UI/ToolPanel/Tools/ColorAndToolOptions/RightToolOptions/RightBrushType/RightBrushTypeButton"] margin_right = 32.0 margin_bottom = 32.0 -texture = SubResource( 5 ) +texture = SubResource( 7 ) expand = true stretch_mode = 6 @@ -800,7 +798,6 @@ size_flags_horizontal = 3 custom_constants/separation = 0 [node name="HViewportContainer" type="HBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline"] -editor/display_folded = true margin_right = 704.0 margin_bottom = 478.0 size_flags_horizontal = 3 @@ -818,13 +815,13 @@ margin_right = 704.0 margin_bottom = 16.0 rect_min_size = Vector2( 0, 16 ) focus_mode = 0 -custom_styles/hover = ExtResource( 12 ) -custom_styles/pressed = ExtResource( 12 ) -custom_styles/focus = ExtResource( 12 ) -custom_styles/normal = ExtResource( 12 ) +custom_styles/hover = ExtResource( 13 ) +custom_styles/pressed = ExtResource( 13 ) +custom_styles/focus = ExtResource( 13 ) +custom_styles/normal = ExtResource( 13 ) action_mode = 0 enabled_focus_mode = 0 -script = ExtResource( 13 ) +script = ExtResource( 14 ) [node name="ViewportandVerticalRuler" type="HBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers"] margin_top = 16.0 @@ -841,13 +838,13 @@ focus_mode = 0 mouse_default_cursor_shape = 15 size_flags_horizontal = 0 size_flags_vertical = 3 -custom_styles/hover = ExtResource( 12 ) -custom_styles/pressed = ExtResource( 12 ) -custom_styles/focus = ExtResource( 12 ) -custom_styles/normal = ExtResource( 12 ) +custom_styles/hover = ExtResource( 13 ) +custom_styles/pressed = ExtResource( 13 ) +custom_styles/focus = ExtResource( 13 ) +custom_styles/normal = ExtResource( 13 ) action_mode = 0 enabled_focus_mode = 0 -script = ExtResource( 14 ) +script = ExtResource( 15 ) [node name="ViewportContainer" type="ViewportContainer" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler"] editor/display_folded = true @@ -863,12 +860,12 @@ size = Vector2( 688, 462 ) handle_input_locally = false render_target_update_mode = 3 -[node name="Canvas" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler/ViewportContainer/Viewport" instance=ExtResource( 15 )] +[node name="Canvas" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler/ViewportContainer/Viewport" instance=ExtResource( 16 )] [node name="Camera2D" type="Camera2D" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler/ViewportContainer/Viewport"] current = true zoom = Vector2( 0.15, 0.15 ) -script = ExtResource( 16 ) +script = ExtResource( 17 ) [node name="SelectionRectangle" type="Polygon2D" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler/ViewportContainer/Viewport"] visible = false @@ -877,7 +874,7 @@ color = Color( 0.0823529, 0.694118, 0.623529, 0.592157 ) invert_enable = true invert_border = 0.5 polygon = PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0 ) -script = ExtResource( 17 ) +script = ExtResource( 18 ) [node name="ViewportSeparator" type="VSeparator" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer"] visible = false @@ -898,12 +895,12 @@ stretch = true size = Vector2( 341, 478 ) handle_input_locally = false render_target_update_mode = 0 -script = ExtResource( 18 ) +script = ExtResource( 19 ) [node name="Camera2D2" type="Camera2D" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportContainer2/Viewport"] current = true zoom = Vector2( 0.15, 0.15 ) -script = ExtResource( 16 ) +script = ExtResource( 17 ) [node name="AnimationTimeline" type="Panel" parent="MenuAndUI/UI/CanvasAndTimeline"] editor/display_folded = true @@ -955,9 +952,9 @@ margin_bottom = 24.0 hint_tooltip = "FIRSTFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 7 ) -texture_normal = ExtResource( 19 ) -texture_hover = ExtResource( 20 ) +shortcut = SubResource( 9 ) +texture_normal = ExtResource( 20 ) +texture_hover = ExtResource( 21 ) [node name="PreviousFrame" type="TextureButton" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons"] margin_left = 24.0 @@ -966,9 +963,9 @@ margin_bottom = 24.0 hint_tooltip = "PREVIOUSFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 9 ) -texture_normal = ExtResource( 21 ) -texture_hover = ExtResource( 22 ) +shortcut = SubResource( 11 ) +texture_normal = ExtResource( 22 ) +texture_hover = ExtResource( 23 ) [node name="PlayBackwards" type="TextureButton" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons"] margin_left = 48.0 @@ -978,10 +975,10 @@ hint_tooltip = "PLAYBACKWARDS_HT" mouse_default_cursor_shape = 2 toggle_mode = true shortcut_in_tooltip = false -shortcut = SubResource( 11 ) -texture_normal = ExtResource( 23 ) -texture_pressed = ExtResource( 24 ) -texture_hover = ExtResource( 25 ) +shortcut = SubResource( 13 ) +texture_normal = ExtResource( 24 ) +texture_pressed = ExtResource( 25 ) +texture_hover = ExtResource( 26 ) [node name="PlayForward" type="TextureButton" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons"] margin_left = 72.0 @@ -992,10 +989,10 @@ mouse_default_cursor_shape = 2 size_flags_horizontal = 0 toggle_mode = true shortcut_in_tooltip = false -shortcut = SubResource( 13 ) -texture_normal = ExtResource( 26 ) -texture_pressed = ExtResource( 24 ) -texture_hover = ExtResource( 27 ) +shortcut = SubResource( 15 ) +texture_normal = ExtResource( 27 ) +texture_pressed = ExtResource( 25 ) +texture_hover = ExtResource( 28 ) [node name="NextFrame" type="TextureButton" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons"] margin_left = 96.0 @@ -1004,9 +1001,9 @@ margin_bottom = 24.0 hint_tooltip = "NEXTFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 15 ) -texture_normal = ExtResource( 28 ) -texture_hover = ExtResource( 29 ) +shortcut = SubResource( 17 ) +texture_normal = ExtResource( 29 ) +texture_hover = ExtResource( 30 ) [node name="LastFrame" type="TextureButton" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons"] margin_left = 120.0 @@ -1015,9 +1012,9 @@ margin_bottom = 24.0 hint_tooltip = "LASTFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 17 ) -texture_normal = ExtResource( 30 ) -texture_hover = ExtResource( 31 ) +shortcut = SubResource( 19 ) +texture_normal = ExtResource( 31 ) +texture_hover = ExtResource( 32 ) [node name="LoopButtons" type="HBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons"] margin_left = 492.0 @@ -1042,7 +1039,7 @@ margin_right = 78.0 margin_bottom = 24.0 hint_tooltip = "No loop" mouse_default_cursor_shape = 2 -texture_normal = ExtResource( 32 ) +texture_normal = ExtResource( 33 ) [node name="HSeparator" type="HSeparator" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer"] margin_top = 28.0 @@ -1054,7 +1051,7 @@ margin_top = 36.0 margin_right = 570.0 margin_bottom = 52.0 rect_min_size = Vector2( 0, 16 ) -script = ExtResource( 33 ) +script = ExtResource( 34 ) [node name="HSeparator2" type="HSeparator" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer"] margin_top = 56.0 @@ -1072,8 +1069,8 @@ margin_bottom = 20.0 hint_tooltip = "Add a new frame" mouse_default_cursor_shape = 2 size_flags_horizontal = 0 -texture_normal = ExtResource( 34 ) -texture_hover = ExtResource( 35 ) +texture_normal = ExtResource( 35 ) +texture_hover = ExtResource( 36 ) [node name="ScrollContainer" type="ScrollContainer" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/FrameAndButtonContainer"] margin_left = 24.0 @@ -1161,13 +1158,13 @@ size = Vector2( 224, 164 ) transparent_bg = true handle_input_locally = false render_target_update_mode = 3 -script = ExtResource( 18 ) +script = ExtResource( 19 ) [node name="CameraPreview" type="Camera2D" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/CanvasPreview/Viewport"] offset = Vector2( 32, 32 ) current = true zoom = Vector2( 0.15, 0.15 ) -script = ExtResource( 16 ) +script = ExtResource( 17 ) [node name="HSeparator3" type="HSeparator" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc"] margin_top = 168.0 @@ -1210,8 +1207,8 @@ margin_right = 32.0 margin_bottom = 32.0 hint_tooltip = "LAYERNEW_HT" mouse_default_cursor_shape = 2 -texture_normal = ExtResource( 36 ) -texture_hover = ExtResource( 37 ) +texture_normal = ExtResource( 37 ) +texture_hover = ExtResource( 38 ) [node name="RemoveLayerButton" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/LayerVBoxContainer/CenterLayerButtons/LayerButtons"] margin_left = 36.0 @@ -1220,9 +1217,9 @@ margin_bottom = 32.0 hint_tooltip = "LAYERREMOVE_HT" mouse_default_cursor_shape = 8 disabled = true -texture_normal = ExtResource( 38 ) -texture_hover = ExtResource( 39 ) -texture_disabled = ExtResource( 40 ) +texture_normal = ExtResource( 39 ) +texture_hover = ExtResource( 40 ) +texture_disabled = ExtResource( 41 ) [node name="MoveUpLayer" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/LayerVBoxContainer/CenterLayerButtons/LayerButtons"] margin_left = 72.0 @@ -1231,9 +1228,9 @@ margin_bottom = 32.0 hint_tooltip = "LAYERUP_HT" mouse_default_cursor_shape = 8 disabled = true -texture_normal = ExtResource( 41 ) -texture_hover = ExtResource( 42 ) -texture_disabled = ExtResource( 43 ) +texture_normal = ExtResource( 42 ) +texture_hover = ExtResource( 43 ) +texture_disabled = ExtResource( 44 ) [node name="MoveDownLayer" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/LayerVBoxContainer/CenterLayerButtons/LayerButtons"] margin_left = 108.0 @@ -1242,9 +1239,9 @@ margin_bottom = 32.0 hint_tooltip = "LAYERDOWN_HT" mouse_default_cursor_shape = 8 disabled = true -texture_normal = ExtResource( 44 ) -texture_hover = ExtResource( 45 ) -texture_disabled = ExtResource( 46 ) +texture_normal = ExtResource( 45 ) +texture_hover = ExtResource( 46 ) +texture_disabled = ExtResource( 47 ) [node name="CloneLayer" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/LayerVBoxContainer/CenterLayerButtons/LayerButtons"] margin_left = 144.0 @@ -1252,8 +1249,8 @@ margin_right = 176.0 margin_bottom = 32.0 hint_tooltip = "LAYERCLONE_HT" mouse_default_cursor_shape = 2 -texture_normal = ExtResource( 47 ) -texture_hover = ExtResource( 48 ) +texture_normal = ExtResource( 48 ) +texture_hover = ExtResource( 49 ) [node name="MergeDownLayer" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/LayerVBoxContainer/CenterLayerButtons/LayerButtons"] margin_left = 180.0 @@ -1262,9 +1259,9 @@ margin_bottom = 32.0 hint_tooltip = "LAYERMERGE_HT" mouse_default_cursor_shape = 8 disabled = true -texture_normal = ExtResource( 49 ) -texture_hover = ExtResource( 50 ) -texture_disabled = ExtResource( 51 ) +texture_normal = ExtResource( 50 ) +texture_hover = ExtResource( 51 ) +texture_disabled = ExtResource( 52 ) [node name="ScrollLayers" type="ScrollContainer" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/LayerVBoxContainer"] editor/display_folded = true @@ -1318,14 +1315,14 @@ items = [ "New Empty Palette", null, 0, false, false, 0, 0, null, "", false, "Im [node name="TextureRect" type="TextureRect" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/PaletteVBoxContainer/PaletteButtons/AddPalette"] margin_right = 40.0 margin_bottom = 40.0 -texture = SubResource( 18 ) +texture = SubResource( 20 ) [node name="RemovePalette" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/PaletteVBoxContainer/PaletteButtons"] margin_left = 36.0 margin_right = 68.0 margin_bottom = 32.0 -texture_normal = ExtResource( 38 ) -texture_disabled = ExtResource( 40 ) +texture_normal = ExtResource( 39 ) +texture_disabled = ExtResource( 41 ) [node name="PaletteOptionButton" type="OptionButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/PaletteVBoxContainer/PaletteButtons"] margin_left = 72.0 @@ -1352,7 +1349,7 @@ size_flags_vertical = 3 margin_right = 224.0 size_flags_horizontal = 3 columns = 8 -script = ExtResource( 52 ) +script = ExtResource( 53 ) [node name="BrushesPopup" type="Popup" parent="."] editor/display_folded = true @@ -1378,7 +1375,7 @@ scroll_horizontal_enabled = false [node name="FileBrushContainer" type="GridContainer" parent="BrushesPopup/TabContainer/File"] columns = 5 -[node name="PixelBrushButton" parent="BrushesPopup/TabContainer/File/FileBrushContainer" instance=ExtResource( 53 )] +[node name="PixelBrushButton" parent="BrushesPopup/TabContainer/File/FileBrushContainer" instance=ExtResource( 54 )] hint_tooltip = "Pixel brush" [node name="Project" type="ScrollContainer" parent="BrushesPopup/TabContainer"] @@ -1407,8 +1404,8 @@ hint_tooltip = "SPLITSCREEN_HT" mouse_default_cursor_shape = 2 size_flags_vertical = 0 toggle_mode = true -texture_normal = ExtResource( 54 ) -texture_pressed = ExtResource( 55 ) +texture_normal = ExtResource( 55 ) +texture_pressed = ExtResource( 56 ) [node name="CreateNewImage" type="ConfirmationDialog" parent="."] editor/display_folded = true @@ -1600,14 +1597,14 @@ text = "Nearest" items = [ "Nearest", null, false, 0, null, "Bilinear", null, false, 1, null, "Cubic", null, false, 2, null, "Trilinear", null, false, 3, null, "Lanczos", null, true, 4, null ] selected = 0 -[node name="PreferencesDialog" parent="." instance=ExtResource( 56 )] +[node name="PreferencesDialog" parent="." instance=ExtResource( 57 )] [node name="AboutDialog" type="AcceptDialog" parent="."] editor/display_folded = true margin_right = 284.0 margin_bottom = 186.0 window_title = "About Pixelorama" -script = ExtResource( 57 ) +script = ExtResource( 58 ) [node name="AboutUI" type="VBoxContainer" parent="AboutDialog"] margin_left = 8.0 @@ -1678,12 +1675,12 @@ margin_bottom = 60.0 window_title = "Error!" dialog_text = "This is an error message!" -[node name="EditPalettePopup" parent="." instance=ExtResource( 58 )] +[node name="EditPalettePopup" parent="." instance=ExtResource( 59 )] visible = false -[node name="NewPaletteDialog" parent="." instance=ExtResource( 59 )] +[node name="NewPaletteDialog" parent="." instance=ExtResource( 60 )] -[node name="PaletteImportFileDialog" parent="." instance=ExtResource( 60 )] +[node name="PaletteImportFileDialog" parent="." instance=ExtResource( 61 )] current_dir = "C:/Users/Overloaded/Dropbox/Orama Founding Members/εταιρικα αρχεια/Godot Projects/Pixelorama" current_path = "C:/Users/Overloaded/Dropbox/Orama Founding Members/εταιρικα αρχεια/Godot Projects/Pixelorama/" @@ -1760,6 +1757,7 @@ visible = false [connection signal="popup_hide" from="ExportSprites" to="." method="_can_draw_true"] [connection signal="confirmed" from="ScaleImage" to="." method="_on_ScaleImage_confirmed"] [connection signal="popup_hide" from="ScaleImage" to="." method="_can_draw_true"] +[connection signal="popup_hide" from="PreferencesDialog" to="." method="_can_draw_true"] [connection signal="popup_hide" from="AboutDialog" to="." method="_can_draw_true"] [connection signal="pressed" from="AboutDialog/AboutUI/Links/LinkButtons/Website" to="AboutDialog" method="_on_Website_pressed"] [connection signal="pressed" from="AboutDialog/AboutUI/Links/LinkButtons/GitHub" to="AboutDialog" method="_on_GitHub_pressed"] diff --git a/Prefabs/NotificationLabel.tscn b/Prefabs/NotificationLabel.tscn index e4d1799ca..6cfbe7237 100644 --- a/Prefabs/NotificationLabel.tscn +++ b/Prefabs/NotificationLabel.tscn @@ -1,8 +1,9 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://Themes & Styles/Main Theme.tres" type="Theme" id=1] +[ext_resource path="res://Themes & Styles/Main Theme/Main Theme.tres" type="Theme" id=1] [ext_resource path="res://Scripts/NotificationLabel.gd" type="Script" id=2] + [node name="NotificationLabel" type="Label"] margin_right = 116.0 margin_bottom = 14.0 diff --git a/Prefabs/PreferencesDialog.tscn b/Prefabs/PreferencesDialog.tscn index b558b919b..58b35237f 100644 --- a/Prefabs/PreferencesDialog.tscn +++ b/Prefabs/PreferencesDialog.tscn @@ -18,80 +18,96 @@ margin_right = 92.0 margin_bottom = 34.0 [node name="OptionsContainer" type="GridContainer" parent="VBoxContainer"] -margin_right = 184.0 -margin_bottom = 23.0 +margin_right = 218.0 +margin_bottom = 44.0 columns = 2 [node name="LanguageLabel" type="Label" parent="VBoxContainer/OptionsContainer"] -margin_top = 4.0 -margin_right = 57.0 -margin_bottom = 19.0 +margin_top = 3.0 +margin_right = 63.0 +margin_bottom = 17.0 text = "Language:" [node name="LanguageOption" type="OptionButton" parent="VBoxContainer/OptionsContainer"] -margin_left = 57.0 -margin_right = 176.0 -margin_bottom = 23.0 +margin_left = 67.0 +margin_right = 218.0 +margin_bottom = 20.0 text = "System Language" items = [ "System Language", null, false, 0, null, "Deutsch [de]", null, false, 1, null, "Ελληνικά [el]", null, false, 2, null, "English [en]", null, false, 3, null, "Français [fr]", null, false, 4, null, "Polski [pl]", null, false, 5, null, "Русский [ru]", null, false, 6, null, "繁體中文 [zh_TW]", null, false, 7, null ] selected = 0 -[node name="GridOptionsLabel" type="Label" parent="VBoxContainer"] +[node name="ThemeLabel" type="Label" parent="VBoxContainer/OptionsContainer"] margin_top = 27.0 -margin_right = 184.0 -margin_bottom = 42.0 +margin_right = 63.0 +margin_bottom = 41.0 +text = "Theme:" + +[node name="ThemeOption" type="OptionButton" parent="VBoxContainer/OptionsContainer"] +margin_left = 67.0 +margin_top = 24.0 +margin_right = 218.0 +margin_bottom = 44.0 +text = "Dark Theme" +items = [ "Main Theme", null, false, 0, null, "Dark Theme", null, false, 1, null ] +selected = 1 + +[node name="GridOptionsLabel" type="Label" parent="VBoxContainer"] +margin_top = 48.0 +margin_right = 218.0 +margin_bottom = 62.0 text = "Grid options" [node name="GridOptions" type="GridContainer" parent="VBoxContainer"] -margin_top = 46.0 -margin_right = 184.0 -margin_bottom = 103.0 +margin_top = 66.0 +margin_right = 218.0 +margin_bottom = 142.0 columns = 2 [node name="WidthLabel" type="Label" parent="VBoxContainer/GridOptions"] -margin_top = 1.0 -margin_right = 39.0 -margin_bottom = 16.0 +margin_top = 5.0 +margin_right = 46.0 +margin_bottom = 19.0 text = "Width:" [node name="GridWidthValue" type="SpinBox" parent="VBoxContainer/GridOptions"] -margin_left = 39.0 -margin_right = 103.0 -margin_bottom = 17.0 +margin_left = 50.0 +margin_right = 124.0 +margin_bottom = 24.0 min_value = 1.0 max_value = 16384.0 value = 1.0 suffix = "px" [node name="Height" type="Label" parent="VBoxContainer/GridOptions"] -margin_top = 19.0 -margin_right = 39.0 -margin_bottom = 33.0 +margin_top = 33.0 +margin_right = 46.0 +margin_bottom = 47.0 text = "Height:" [node name="GridHeightValue" type="SpinBox" parent="VBoxContainer/GridOptions"] -margin_left = 39.0 -margin_top = 19.0 -margin_right = 103.0 -margin_bottom = 34.0 +margin_left = 50.0 +margin_top = 28.0 +margin_right = 124.0 +margin_bottom = 52.0 min_value = 1.0 max_value = 16384.0 value = 1.0 suffix = "px" [node name="GridColorLabel" type="Label" parent="VBoxContainer/GridOptions"] -margin_top = 42.0 -margin_right = 39.0 -margin_bottom = 53.0 +margin_top = 59.0 +margin_right = 46.0 +margin_bottom = 73.0 text = "Color:" [node name="GridColor" type="ColorPickerButton" parent="VBoxContainer/GridOptions"] -margin_left = 39.0 -margin_top = 38.0 -margin_right = 103.0 -margin_bottom = 57.0 +margin_left = 50.0 +margin_top = 56.0 +margin_right = 124.0 +margin_bottom = 76.0 rect_min_size = Vector2( 64, 20 ) [connection signal="item_selected" from="VBoxContainer/OptionsContainer/LanguageOption" to="." method="_on_LanguageOption_item_selected"] +[connection signal="item_selected" from="VBoxContainer/OptionsContainer/ThemeOption" to="." method="_on_ThemeOption_item_selected"] [connection signal="value_changed" from="VBoxContainer/GridOptions/GridWidthValue" to="." method="_on_GridWidthValue_value_changed"] [connection signal="value_changed" from="VBoxContainer/GridOptions/GridHeightValue" to="." method="_on_GridHeightValue_value_changed"] [connection signal="color_changed" from="VBoxContainer/GridOptions/GridColor" to="." method="_on_GridColor_color_changed"] diff --git a/Scripts/Global.gd b/Scripts/Global.gd index b6ec3aca7..a5fd5addd 100644 --- a/Scripts/Global.gd +++ b/Scripts/Global.gd @@ -114,6 +114,7 @@ var palettes := {} #Nodes var control : Node +var top_menu_container : Panel var left_cursor : Sprite var right_cursor : Sprite var canvas : Canvas @@ -203,6 +204,7 @@ func _ready() -> void: var root = get_tree().get_root() control = find_node_by_name(root, "Control") + top_menu_container = find_node_by_name(control, "TopMenuContainer") left_cursor = find_node_by_name(root, "LeftCursor") right_cursor = find_node_by_name(root, "RightCursor") canvas = find_node_by_name(root, "Canvas") diff --git a/Scripts/PreferencesDialog.gd b/Scripts/PreferencesDialog.gd index 99251098d..6888c9dc5 100644 --- a/Scripts/PreferencesDialog.gd +++ b/Scripts/PreferencesDialog.gd @@ -13,6 +13,30 @@ func _on_LanguageOption_item_selected(ID : int) -> void: Global.config_cache.set_value("preferences", "locale", TranslationServer.get_locale()) Global.config_cache.save("user://cache.ini") +func _on_ThemeOption_item_selected(ID : int) -> void: + var main_theme + var top_menu_style + var ruler_style + if ID == 0: #Main Theme + main_theme = preload("res://Themes & Styles/Main Theme/Main Theme.tres") + top_menu_style = preload("res://Themes & Styles/Main Theme/TopMenuStyle.tres") + ruler_style = preload("res://Themes & Styles/Main Theme/RulerStyle.tres") + elif ID == 1: #Dark Theme + main_theme = preload("res://Themes & Styles/Dark Theme/Dark Theme.tres") + top_menu_style = preload("res://Themes & Styles/Dark Theme/DarkTopMenuStyle.tres") + ruler_style = preload("res://Themes & Styles/Dark Theme/DarkRulerStyle.tres") + + Global.control.theme = main_theme + Global.top_menu_container.add_stylebox_override("panel", top_menu_style) + Global.horizontal_ruler.add_stylebox_override("normal", ruler_style) + Global.horizontal_ruler.add_stylebox_override("pressed", ruler_style) + Global.horizontal_ruler.add_stylebox_override("hover", ruler_style) + Global.horizontal_ruler.add_stylebox_override("focus", ruler_style) + Global.vertical_ruler.add_stylebox_override("normal", ruler_style) + Global.vertical_ruler.add_stylebox_override("pressed", ruler_style) + Global.vertical_ruler.add_stylebox_override("hover", ruler_style) + Global.vertical_ruler.add_stylebox_override("focus", ruler_style) + func _on_GridWidthValue_value_changed(value : float) -> void: Global.grid_width = value @@ -20,4 +44,4 @@ func _on_GridHeightValue_value_changed(value : float) -> void: Global.grid_height = value func _on_GridColor_color_changed(color : Color) -> void: - Global.grid_color = color \ No newline at end of file + Global.grid_color = color diff --git a/Themes & Styles/Dark Theme.tres b/Themes & Styles/Dark Theme/Dark Theme.tres similarity index 100% rename from Themes & Styles/Dark Theme.tres rename to Themes & Styles/Dark Theme/Dark Theme.tres diff --git a/Themes & Styles/DarkRulerStyle.tres b/Themes & Styles/Dark Theme/DarkRulerStyle.tres similarity index 100% rename from Themes & Styles/DarkRulerStyle.tres rename to Themes & Styles/Dark Theme/DarkRulerStyle.tres diff --git a/Themes & Styles/Dark Theme/DarkTopMenuStyle.tres b/Themes & Styles/Dark Theme/DarkTopMenuStyle.tres new file mode 100644 index 000000000..0ab7cf5e0 --- /dev/null +++ b/Themes & Styles/Dark Theme/DarkTopMenuStyle.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 0.0823529, 0.0823529, 0.0823529, 1 ) diff --git a/Themes & Styles/Main Theme.tres b/Themes & Styles/Main Theme/Main Theme.tres similarity index 100% rename from Themes & Styles/Main Theme.tres rename to Themes & Styles/Main Theme/Main Theme.tres diff --git a/Themes & Styles/RulerStyle.tres b/Themes & Styles/Main Theme/RulerStyle.tres similarity index 100% rename from Themes & Styles/RulerStyle.tres rename to Themes & Styles/Main Theme/RulerStyle.tres diff --git a/Themes & Styles/Main Theme/TopMenuStyle.tres b/Themes & Styles/Main Theme/TopMenuStyle.tres new file mode 100644 index 000000000..58fe548e9 --- /dev/null +++ b/Themes & Styles/Main Theme/TopMenuStyle.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 0.223529, 0.223529, 0.243137, 1 ) From 91b21a52f541d8d2e50c83e33ee22d9bc9ffde46 Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 19 Dec 2019 03:15:23 +0200 Subject: [PATCH 2/6] Angle between last drawn pixel and line is now appearing on the top when drawing a straight line Also straight lines work with LightenDarken now, and moved the Seconds Timeline a bit to the left --- Main.tscn | 3 +++ Scripts/Canvas.gd | 6 +++++- Scripts/TimelineSeconds.gd | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Main.tscn b/Main.tscn index 8e2dc54eb..abb28eecf 100644 --- a/Main.tscn +++ b/Main.tscn @@ -226,6 +226,7 @@ text = "[64×64]" align = 2 [node name="UI" type="HBoxContainer" parent="MenuAndUI"] +editor/display_folded = true margin_top = 28.0 margin_right = 1152.0 margin_bottom = 648.0 @@ -804,6 +805,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 [node name="ViewportAndRulers" type="VBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer"] +editor/display_folded = true margin_right = 704.0 margin_bottom = 478.0 size_flags_horizontal = 3 @@ -883,6 +885,7 @@ margin_right = 319.0 margin_bottom = 464.0 [node name="ViewportContainer2" type="ViewportContainer" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer"] +editor/display_folded = true visible = false margin_left = 345.0 margin_right = 686.0 diff --git a/Scripts/Canvas.gd b/Scripts/Canvas.gd index e8ad8c8e1..6bb590358 100644 --- a/Scripts/Canvas.gd +++ b/Scripts/Canvas.gd @@ -248,7 +248,7 @@ func _process(delta : float) -> void: Global.right_color_picker.color = pixel_color Global.update_right_custom_brush() - if Input.is_action_just_pressed("shift") and (["Pencil", "Eraser"].has(Global.current_left_tool) or ["Pencil", "Eraser"].has(Global.current_right_tool)): + if Input.is_action_just_pressed("shift") and (["Pencil", "Eraser", "LightenDarken"].has(Global.current_left_tool) or ["Pencil", "Eraser", "LightenDarken"].has(Global.current_right_tool)): line_2d = Line2D.new() line_2d.width = 0.5 line_2d.default_color = Color.darkgray @@ -262,6 +262,10 @@ func _process(delta : float) -> void: line_2d.queue_free() if is_making_line: line_2d.set_point_position(1, mouse_pos) + var angle := stepify(rad2deg(line_2d.points[1].angle_to_point(line_2d.points[0])), 0.01) + if angle < 0: + angle = 360 + angle + Global.cursor_position_label.text += " %s°" % str(angle) if is_making_selection != "None": #If we're making a selection diff --git a/Scripts/TimelineSeconds.gd b/Scripts/TimelineSeconds.gd index 3f1066d8f..b4880e72e 100644 --- a/Scripts/TimelineSeconds.gd +++ b/Scripts/TimelineSeconds.gd @@ -21,7 +21,7 @@ func _draw() -> void: var minor_subdivide := Transform2D() var fps = Global.control.fps var horizontal_scroll = get_parent().get_node("FrameAndButtonContainer").get_node("ScrollContainer").scroll_horizontal - var starting_pos := Vector2(26, 26) + var starting_pos := Vector2(10, 10) transform.x = Vector2(fps, fps) / 2.52 transform.origin = starting_pos - Vector2(horizontal_scroll, horizontal_scroll) From a76bfcef4897213fd8bb0e00dac4bd2945f45183 Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 19 Dec 2019 03:38:14 +0200 Subject: [PATCH 3/6] Straight lines now paint the target pixel too They also start at the middle of the pixel, rather than the last mouse position in general --- Scripts/Canvas.gd | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Scripts/Canvas.gd b/Scripts/Canvas.gd index 6bb590358..e7a4f1691 100644 --- a/Scripts/Canvas.gd +++ b/Scripts/Canvas.gd @@ -262,12 +262,11 @@ func _process(delta : float) -> void: line_2d.queue_free() if is_making_line: line_2d.set_point_position(1, mouse_pos) - var angle := stepify(rad2deg(line_2d.points[1].angle_to_point(line_2d.points[0])), 0.01) + var angle := stepify(rad2deg(mouse_pos.angle_to_point(line_2d.points[0])), 0.01) if angle < 0: angle = 360 + angle Global.cursor_position_label.text += " %s°" % str(angle) - if is_making_selection != "None": #If we're making a selection if Input.is_action_just_released(is_making_selection): #Finish selection when button is released var start_pos = Global.selection_rectangle.polygon[0] @@ -477,6 +476,7 @@ func generate_layer_panels() -> void: func pencil_and_eraser(mouse_pos : Vector2, color : Color, current_mouse_button : String, current_action := "None") -> void: if is_making_line: fill_gaps(mouse_pos, previous_mouse_pos_for_lines, color, current_mouse_button, current_action) + draw_pixel(mouse_pos, color, current_mouse_button, current_action) else: if point_in_rectangle(mouse_pos, location, location + size): mouse_inside_canvas = true @@ -541,13 +541,13 @@ func draw_pixel(pos : Vector2, color : Color, current_mouse_button : String, cur if point_in_rectangle(Vector2(cur_pos_x, cur_pos_y), Vector2(west_limit - 1, north_limit - 1), Vector2(east_limit, south_limit)): var pos_floored := Vector2(cur_pos_x, cur_pos_y).floor() #Don't draw the same pixel over and over and don't re-lighten/darken it - var current_pixel : Color = layers[current_layer_index][0].get_pixel(cur_pos_x, cur_pos_y) - if current_pixel != color && !(pos_floored in lighten_darken_pixels): + var current_pixel_color : Color = layers[current_layer_index][0].get_pixel(cur_pos_x, cur_pos_y) + if current_pixel_color != color && !(pos_floored in lighten_darken_pixels): if current_action == "LightenDarken": if ld == 0: #Lighten - color = current_pixel.lightened(ld_amount) + color = current_pixel_color.lightened(ld_amount) else: - color = current_pixel.darkened(ld_amount) + color = current_pixel_color.darkened(ld_amount) lighten_darken_pixels.append(pos_floored) layers[current_layer_index][0].set_pixel(cur_pos_x, cur_pos_y, color) @@ -557,37 +557,37 @@ func draw_pixel(pos : Vector2, color : Color, current_mouse_button : String, cur var mirror_x := east_limit + west_limit - cur_pos_x - 1 var mirror_y := south_limit + north_limit - cur_pos_y - 1 if horizontal_mirror: - current_pixel = layers[current_layer_index][0].get_pixel(mirror_x, cur_pos_y) - if current_pixel != color: #don't draw the same pixel over and over + current_pixel_color = layers[current_layer_index][0].get_pixel(mirror_x, cur_pos_y) + if current_pixel_color != color: #don't draw the same pixel over and over if current_action == "LightenDarken": if ld == 0: #Lighten - color = current_pixel.lightened(ld_amount) + color = current_pixel_color.lightened(ld_amount) else: - color = current_pixel.darkened(ld_amount) + color = current_pixel_color.darkened(ld_amount) lighten_darken_pixels.append(pos_floored) layers[current_layer_index][0].set_pixel(mirror_x, cur_pos_y, color) sprite_changed_this_frame = true if vertical_mirror: - current_pixel = layers[current_layer_index][0].get_pixel(cur_pos_x, mirror_y) - if current_pixel != color: #don't draw the same pixel over and over + current_pixel_color = layers[current_layer_index][0].get_pixel(cur_pos_x, mirror_y) + if current_pixel_color != color: #don't draw the same pixel over and over if current_action == "LightenDarken": if ld == 0: #Lighten - color = current_pixel.lightened(ld_amount) + color = current_pixel_color.lightened(ld_amount) else: - color = current_pixel.darkened(ld_amount) + color = current_pixel_color.darkened(ld_amount) lighten_darken_pixels.append(pos_floored) layers[current_layer_index][0].set_pixel(cur_pos_x, mirror_y, color) sprite_changed_this_frame = true if horizontal_mirror && vertical_mirror: - current_pixel = layers[current_layer_index][0].get_pixel(mirror_x, mirror_y) - if current_pixel != color: #don't draw the same pixel over and over + current_pixel_color = layers[current_layer_index][0].get_pixel(mirror_x, mirror_y) + if current_pixel_color != color: #don't draw the same pixel over and over if current_action == "LightenDarken": if ld == 0: #Lighten - color = current_pixel.lightened(ld_amount) + color = current_pixel_color.lightened(ld_amount) else: - color = current_pixel.darkened(ld_amount) + color = current_pixel_color.darkened(ld_amount) lighten_darken_pixels.append(pos_floored) layers[current_layer_index][0].set_pixel(mirror_x, mirror_y, color) @@ -658,7 +658,7 @@ func draw_pixel(pos : Vector2, color : Color, current_mouse_button : String, cur layers[current_layer_index][0].lock() sprite_changed_this_frame = true - previous_mouse_pos_for_lines = current_pixel + previous_mouse_pos_for_lines = pos.floor() + Vector2(0.5, 0.5) previous_mouse_pos_for_lines.x = clamp(previous_mouse_pos_for_lines.x, location.x, location.x + size.x) previous_mouse_pos_for_lines.y = clamp(previous_mouse_pos_for_lines.y, location.y, location.y + size.y) if is_making_line: From 2cce289b0ba921cbf6b6bad0d1cefc45ec9baa28 Mon Sep 17 00:00:00 2001 From: Schweini Date: Thu, 19 Dec 2019 11:34:26 +0100 Subject: [PATCH 4/6] Change Redo shortcut --- Scripts/Main.gd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Scripts/Main.gd b/Scripts/Main.gd index ca1a2ec8e..34b1f0e4d 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -60,7 +60,7 @@ func _ready() -> void: } var edit_menu_items := { "Undo" : KEY_MASK_CMD + KEY_Z, - "Redo" : KEY_MASK_SHIFT + KEY_MASK_CMD + KEY_Z, + "Redo" : KEY_MASK_CMD + KEY_Y, "Scale Image" : 0, "Crop Image" : 0, "Clear Selection" : 0, @@ -72,7 +72,7 @@ func _ready() -> void: "Tile Mode" : KEY_MASK_CMD + KEY_T, "Show Grid" : KEY_MASK_CMD + KEY_G, "Show Rulers" : KEY_MASK_CMD + KEY_R, - "Show Guides" : KEY_MASK_CMD + KEY_Y + "Show Guides" : KEY_MASK_CMD + KEY_F } var help_menu_items := { "About Pixelorama" : 0 From 69392ff34b682c1fd7cd81c2f0a81e06464e6a45 Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 19 Dec 2019 15:50:41 +0200 Subject: [PATCH 5/6] Constrained angles on straight lines while pressing Ctrl --- Main.tscn | 92 +++++++++++++++++++++++------------------------ Scripts/Canvas.gd | 25 +++++++++---- project.godot | 5 +++ 3 files changed, 70 insertions(+), 52 deletions(-) diff --git a/Main.tscn b/Main.tscn index abb28eecf..e68ccd965 100644 --- a/Main.tscn +++ b/Main.tscn @@ -62,11 +62,24 @@ [ext_resource path="res://Prefabs/NewPaletteDialog.tscn" type="PackedScene" id=60] [ext_resource path="res://Prefabs/PaletteImportFileDialog.tscn" type="PackedScene" id=61] -[sub_resource type="InputEventKey" id=2] +[sub_resource type="InputEventKey" id=1] scancode = 88 -[sub_resource type="ShortCut" id=3] -shortcut = SubResource( 2 ) +[sub_resource type="ShortCut" id=2] +shortcut = SubResource( 1 ) + +[sub_resource type="Image" id=20] +data = { +"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), +"format": "RGBA8", +"height": 32, +"mipmaps": false, +"width": 32 +} + +[sub_resource type="ImageTexture" id=4] +image = SubResource( 20 ) +size = Vector2( 32, 32 ) [sub_resource type="Image" id=21] data = { @@ -77,68 +90,55 @@ data = { "width": 32 } -[sub_resource type="ImageTexture" id=5] +[sub_resource type="ImageTexture" id=6] image = SubResource( 21 ) size = Vector2( 32, 32 ) -[sub_resource type="Image" id=22] -data = { -"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), -"format": "RGBA8", -"height": 32, -"mipmaps": false, -"width": 32 -} - -[sub_resource type="ImageTexture" id=7] -image = SubResource( 22 ) -size = Vector2( 32, 32 ) - -[sub_resource type="InputEventKey" id=8] +[sub_resource type="InputEventKey" id=7] control = true command = true scancode = 16777229 -[sub_resource type="ShortCut" id=9] -shortcut = SubResource( 8 ) +[sub_resource type="ShortCut" id=8] +shortcut = SubResource( 7 ) -[sub_resource type="InputEventKey" id=10] +[sub_resource type="InputEventKey" id=9] control = true command = true scancode = 16777231 -[sub_resource type="ShortCut" id=11] -shortcut = SubResource( 10 ) +[sub_resource type="ShortCut" id=10] +shortcut = SubResource( 9 ) -[sub_resource type="InputEventKey" id=12] +[sub_resource type="InputEventKey" id=11] scancode = 16777247 -[sub_resource type="ShortCut" id=13] -shortcut = SubResource( 12 ) +[sub_resource type="ShortCut" id=12] +shortcut = SubResource( 11 ) -[sub_resource type="InputEventKey" id=14] +[sub_resource type="InputEventKey" id=13] scancode = 16777248 -[sub_resource type="ShortCut" id=15] -shortcut = SubResource( 14 ) +[sub_resource type="ShortCut" id=14] +shortcut = SubResource( 13 ) -[sub_resource type="InputEventKey" id=16] +[sub_resource type="InputEventKey" id=15] control = true command = true scancode = 16777233 -[sub_resource type="ShortCut" id=17] -shortcut = SubResource( 16 ) +[sub_resource type="ShortCut" id=16] +shortcut = SubResource( 15 ) -[sub_resource type="InputEventKey" id=18] +[sub_resource type="InputEventKey" id=17] control = true command = true scancode = 16777230 -[sub_resource type="ShortCut" id=19] -shortcut = SubResource( 18 ) +[sub_resource type="ShortCut" id=18] +shortcut = SubResource( 17 ) -[sub_resource type="StreamTexture" id=20] +[sub_resource type="StreamTexture" id=19] load_path = "res://.import/new_layer.png-6f042042bc418daa72142f41f436a47c.stex" [node name="Control" type="Control"] @@ -409,7 +409,7 @@ margin_bottom = 7.0 hint_tooltip = "COLORSWITCH_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 3 ) +shortcut = SubResource( 2 ) texture_normal = ExtResource( 10 ) [node name="ColorDefaults" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/ColorAndToolOptions/ColorPickersCenter/ColorPickersHorizontal/ColorButtonsCenter/ColorButtonsVertical"] @@ -475,7 +475,7 @@ texture_normal = ExtResource( 12 ) [node name="BrushTexture" type="TextureRect" parent="MenuAndUI/UI/ToolPanel/Tools/ColorAndToolOptions/LeftToolOptions/LeftBrushType/LeftBrushTypeButton"] margin_right = 32.0 margin_bottom = 32.0 -texture = SubResource( 5 ) +texture = SubResource( 4 ) expand = true stretch_mode = 6 @@ -653,7 +653,7 @@ texture_normal = ExtResource( 12 ) [node name="BrushTexture" type="TextureRect" parent="MenuAndUI/UI/ToolPanel/Tools/ColorAndToolOptions/RightToolOptions/RightBrushType/RightBrushTypeButton"] margin_right = 32.0 margin_bottom = 32.0 -texture = SubResource( 7 ) +texture = SubResource( 6 ) expand = true stretch_mode = 6 @@ -955,7 +955,7 @@ margin_bottom = 24.0 hint_tooltip = "FIRSTFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 9 ) +shortcut = SubResource( 8 ) texture_normal = ExtResource( 20 ) texture_hover = ExtResource( 21 ) @@ -966,7 +966,7 @@ margin_bottom = 24.0 hint_tooltip = "PREVIOUSFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 11 ) +shortcut = SubResource( 10 ) texture_normal = ExtResource( 22 ) texture_hover = ExtResource( 23 ) @@ -978,7 +978,7 @@ hint_tooltip = "PLAYBACKWARDS_HT" mouse_default_cursor_shape = 2 toggle_mode = true shortcut_in_tooltip = false -shortcut = SubResource( 13 ) +shortcut = SubResource( 12 ) texture_normal = ExtResource( 24 ) texture_pressed = ExtResource( 25 ) texture_hover = ExtResource( 26 ) @@ -992,7 +992,7 @@ mouse_default_cursor_shape = 2 size_flags_horizontal = 0 toggle_mode = true shortcut_in_tooltip = false -shortcut = SubResource( 15 ) +shortcut = SubResource( 14 ) texture_normal = ExtResource( 27 ) texture_pressed = ExtResource( 25 ) texture_hover = ExtResource( 28 ) @@ -1004,7 +1004,7 @@ margin_bottom = 24.0 hint_tooltip = "NEXTFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 17 ) +shortcut = SubResource( 16 ) texture_normal = ExtResource( 29 ) texture_hover = ExtResource( 30 ) @@ -1015,7 +1015,7 @@ margin_bottom = 24.0 hint_tooltip = "LASTFRAME_HT" mouse_default_cursor_shape = 2 shortcut_in_tooltip = false -shortcut = SubResource( 19 ) +shortcut = SubResource( 18 ) texture_normal = ExtResource( 31 ) texture_hover = ExtResource( 32 ) @@ -1318,7 +1318,7 @@ items = [ "New Empty Palette", null, 0, false, false, 0, 0, null, "", false, "Im [node name="TextureRect" type="TextureRect" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/PaletteVBoxContainer/PaletteButtons/AddPalette"] margin_right = 40.0 margin_bottom = 40.0 -texture = SubResource( 20 ) +texture = SubResource( 19 ) [node name="RemovePalette" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/PaletteVBoxContainer/PaletteButtons"] margin_left = 36.0 diff --git a/Scripts/Canvas.gd b/Scripts/Canvas.gd index e7a4f1691..c4a5439ec 100644 --- a/Scripts/Canvas.gd +++ b/Scripts/Canvas.gd @@ -20,6 +20,7 @@ var sprite_changed_this_frame := false #for optimization purposes var lighten_darken_pixels := [] #Cleared after mouse release var is_making_line := false +var made_line := false var is_making_selection := "None" var line_2d : Line2D @@ -130,7 +131,7 @@ func _process(delta : float) -> void: Input.set_custom_mouse_cursor(null) #Handle Undo/Redo - var can_handle : bool = mouse_in_canvas && Global.can_draw && Global.has_focus + var can_handle : bool = mouse_in_canvas && Global.can_draw && Global.has_focus && !made_line var mouse_pressed : bool = (Input.is_action_just_pressed("left_mouse") && !Input.is_action_pressed("right_mouse")) || (Input.is_action_just_pressed("right_mouse") && !Input.is_action_pressed("left_mouse")) #If we're already pressing a mouse button and we haven't handled undo yet,... @@ -148,6 +149,7 @@ func _process(delta : float) -> void: else: handle_undo("Draw") elif (Input.is_action_just_released("left_mouse") && !Input.is_action_pressed("right_mouse")) || (Input.is_action_just_released("right_mouse") && !Input.is_action_pressed("left_mouse")): + made_line = false lighten_darken_pixels.clear() if (can_handle || Global.undos == Global.undo_redo.get_version()) && Global.current_frame == frame: if previous_action != "None" && previous_action != "RectSelect" && current_action != "ColorPicker": @@ -248,7 +250,7 @@ func _process(delta : float) -> void: Global.right_color_picker.color = pixel_color Global.update_right_custom_brush() - if Input.is_action_just_pressed("shift") and (["Pencil", "Eraser", "LightenDarken"].has(Global.current_left_tool) or ["Pencil", "Eraser", "LightenDarken"].has(Global.current_right_tool)): + if Global.can_draw && Global.has_focus && Input.is_action_just_pressed("shift") && (["Pencil", "Eraser", "LightenDarken"].has(Global.current_left_tool) || ["Pencil", "Eraser", "LightenDarken"].has(Global.current_right_tool)): line_2d = Line2D.new() line_2d.width = 0.5 line_2d.default_color = Color.darkgray @@ -260,9 +262,17 @@ func _process(delta : float) -> void: is_making_line = false if is_instance_valid(line_2d): line_2d.queue_free() + if is_making_line: - line_2d.set_point_position(1, mouse_pos) - var angle := stepify(rad2deg(mouse_pos.angle_to_point(line_2d.points[0])), 0.01) + var point0 : Vector2 = line_2d.points[0] + var angle := stepify(rad2deg(mouse_pos.angle_to_point(point0)), 0.01) + if Input.is_action_pressed("ctrl"): + angle = round(angle / 15) * 15 + var distance : float = point0.distance_to(mouse_pos) + line_2d.set_point_position(1, point0 + Vector2.RIGHT.rotated(deg2rad(angle)) * distance) + else: + line_2d.set_point_position(1, mouse_pos) + if angle < 0: angle = 360 + angle Global.cursor_position_label.text += " %s°" % str(angle) @@ -474,9 +484,12 @@ func generate_layer_panels() -> void: Global.vbox_layer_container.add_child(layer_container) func pencil_and_eraser(mouse_pos : Vector2, color : Color, current_mouse_button : String, current_action := "None") -> void: + if made_line: + return if is_making_line: - fill_gaps(mouse_pos, previous_mouse_pos_for_lines, color, current_mouse_button, current_action) - draw_pixel(mouse_pos, color, current_mouse_button, current_action) + fill_gaps(line_2d.points[1], previous_mouse_pos_for_lines, color, current_mouse_button, current_action) + draw_pixel(line_2d.points[1], color, current_mouse_button, current_action) + made_line = true else: if point_in_rectangle(mouse_pos, location, location + size): mouse_inside_canvas = true diff --git a/project.godot b/project.godot index 86a73f30a..6b16638ca 100644 --- a/project.godot +++ b/project.godot @@ -185,6 +185,11 @@ shift={ "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"unicode":0,"echo":false,"script":null) ] } +ctrl={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777238,"unicode":0,"echo":false,"script":null) + ] +} [locale] From 80f7a0ca1368613bb2663155315a4cc4f1a75f25 Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 19 Dec 2019 17:07:26 +0200 Subject: [PATCH 6/6] Added Shift+Ctrl+Z as a secondary shortcut for Redo --- Scripts/Main.gd | 5 +++++ project.godot | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/Scripts/Main.gd b/Scripts/Main.gd index 34b1f0e4d..8e2ff83b2 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -187,6 +187,11 @@ func _input(event : InputEvent) -> void: if event.is_action_pressed("toggle_fullscreen"): OS.window_fullscreen = !OS.window_fullscreen + if event.is_action_pressed("redo_secondary"): #Shift + Ctrl + Z + redone = true + Global.undo_redo.redo() + redone = false + if Global.has_focus: for t in tools: #Handle tool shortcuts if event.is_action_pressed(t[2]): #Shortcut for right button (with Alt) diff --git a/project.godot b/project.godot index 6b16638ca..674d6a0ed 100644 --- a/project.godot +++ b/project.godot @@ -190,6 +190,11 @@ ctrl={ "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777238,"unicode":0,"echo":false,"script":null) ] } +redo_secondary={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":true,"meta":false,"command":true,"pressed":false,"scancode":90,"unicode":0,"echo":false,"script":null) + ] +} [locale]