├── .gitignore
├── LICENSE
├── godot
├── assets
│ └── theme
│ │ ├── button
│ │ ├── disabled.stylebox
│ │ ├── focused.stylebox
│ │ ├── hover.stylebox
│ │ ├── normal.stylebox
│ │ └── pressed.stylebox
│ │ ├── empty.stylebox
│ │ ├── fonts
│ │ ├── default_font.tres
│ │ ├── default_font_bold.tres
│ │ ├── default_font_code.tres
│ │ ├── font_title.tres
│ │ ├── montserrat
│ │ │ ├── Montserrat-Black.ttf
│ │ │ ├── Montserrat-Bold.ttf
│ │ │ └── Montserrat-Medium.ttf
│ │ └── source_code_pro
│ │ │ └── SourceCodePro-Medium.otf
│ │ ├── gdquest.theme
│ │ ├── icons
│ │ ├── chevron-right.svg
│ │ ├── chevron-right.svg.import
│ │ ├── chevron-up.svg
│ │ └── chevron-up.svg.import
│ │ ├── panel
│ │ └── panel.stylebox
│ │ ├── separator
│ │ └── line.tres
│ │ └── slider
│ │ ├── grabber_area.stylebox
│ │ └── slider.stylebox
├── demos
│ └── VariablesPanel
│ │ ├── GUI.gd
│ │ ├── GUI.tscn
│ │ ├── VariableControl.gd
│ │ └── VariableControl.tscn
├── icon.png
├── icon.png.import
├── project.godot
└── src
│ ├── Components
│ ├── ColorPalette
│ │ ├── ColorPalette.tscn
│ │ └── ColorSwatch
│ │ │ ├── ColorSwatch.gd
│ │ │ └── ColorSwatch.tscn
│ ├── TextEdit
│ │ ├── TextEdit.gd
│ │ ├── TextEdit.tscn
│ │ └── keywords.json
│ └── Title.tscn
│ ├── Debug
│ ├── DebugDock.gd
│ ├── DebugPanel.gd
│ └── DebugPanel.tscn
│ └── Styleguide.tscn
└── img
└── gdquest-ui-debug-tools-banner.svg
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Godot-specific ignores
3 | .import/
4 | export.cfg
5 | export_presets.cfg
6 |
7 | # Mono-specific ignores
8 | .mono/
9 |
10 | # We use symlinks to automatically keep all our addons up to date
11 | addons/
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 GDQuest and contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/godot/assets/theme/button/disabled.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/button/disabled.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/button/focused.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/button/focused.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/button/hover.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/button/hover.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/button/normal.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/button/normal.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/button/pressed.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/button/pressed.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/empty.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/empty.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/default_font.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="DynamicFont" load_steps=2 format=2]
2 |
3 | [ext_resource path="res://assets/theme/fonts/montserrat/Montserrat-Medium.ttf" type="DynamicFontData" id=1]
4 |
5 |
6 | [resource]
7 |
8 | size = 20
9 | use_filter = true
10 | font_data = ExtResource( 1 )
11 |
12 |
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/default_font_bold.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="DynamicFont" load_steps=2 format=2]
2 |
3 | [ext_resource path="res://assets/theme/fonts/montserrat/Montserrat-Bold.ttf" type="DynamicFontData" id=1]
4 |
5 |
6 | [resource]
7 |
8 | size = 20
9 | use_filter = true
10 | font_data = ExtResource( 1 )
11 |
12 |
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/default_font_code.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="DynamicFont" load_steps=2 format=2]
2 |
3 | [ext_resource path="res://assets/theme/fonts/source_code_pro/SourceCodePro-Medium.otf" type="DynamicFontData" id=1]
4 |
5 |
6 | [resource]
7 |
8 | size = 20
9 | use_filter = true
10 | font_data = ExtResource( 1 )
11 |
12 |
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/font_title.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="DynamicFont" load_steps=2 format=2]
2 |
3 | [ext_resource path="res://assets/theme/fonts/montserrat/Montserrat-Black.ttf" type="DynamicFontData" id=1]
4 |
5 |
6 | [resource]
7 |
8 | size = 28
9 | use_filter = true
10 | font_data = ExtResource( 1 )
11 |
12 |
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/montserrat/Montserrat-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/fonts/montserrat/Montserrat-Black.ttf
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/montserrat/Montserrat-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/fonts/montserrat/Montserrat-Bold.ttf
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/montserrat/Montserrat-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/fonts/montserrat/Montserrat-Medium.ttf
--------------------------------------------------------------------------------
/godot/assets/theme/fonts/source_code_pro/SourceCodePro-Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/fonts/source_code_pro/SourceCodePro-Medium.otf
--------------------------------------------------------------------------------
/godot/assets/theme/gdquest.theme:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/gdquest.theme
--------------------------------------------------------------------------------
/godot/assets/theme/icons/chevron-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/godot/assets/theme/icons/chevron-right.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/chevron-right.svg-f77dee7a088177a2ac1d467f4c7cd3e1.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://assets/theme/icons/chevron-right.svg"
13 | dest_files=[ "res://.import/chevron-right.svg-f77dee7a088177a2ac1d467f4c7cd3e1.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/godot/assets/theme/icons/chevron-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/godot/assets/theme/icons/chevron-up.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/chevron-up.svg-48b5b69265734774d0a7516dcc6f0863.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://assets/theme/icons/chevron-up.svg"
13 | dest_files=[ "res://.import/chevron-up.svg-48b5b69265734774d0a7516dcc6f0863.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/godot/assets/theme/panel/panel.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/panel/panel.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/separator/line.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="StyleBoxLine" format=2]
2 |
3 | [resource]
4 |
5 | color = Color( 1, 1, 1, 0.196078 )
6 | thickness = 2
7 |
8 |
--------------------------------------------------------------------------------
/godot/assets/theme/slider/grabber_area.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/slider/grabber_area.stylebox
--------------------------------------------------------------------------------
/godot/assets/theme/slider/slider.stylebox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/assets/theme/slider/slider.stylebox
--------------------------------------------------------------------------------
/godot/demos/VariablesPanel/GUI.gd:
--------------------------------------------------------------------------------
1 | tool
2 | extends PanelContainer
3 | # This is an example editor tool for creating dynamic variable controls using the provided theme.
4 |
5 |
6 | # Use this variable to set the number of variable controls
7 | export(int, 0, 10) var controls := 1 setget set_controls
8 |
9 | const VariableControl := preload("res://demos/VariablesPanel/VariableControl.tscn")
10 |
11 | onready var variable_controls := $MarginContainer/VBoxContainer/VariableControls
12 | onready var edited_scene_root := get_tree().edited_scene_root
13 |
14 |
15 | func _ready() -> void:
16 | for idx in range(controls):
17 | if idx < variable_controls.get_child_count():
18 | continue
19 |
20 | var control := VariableControl.instance()
21 | variable_controls.add_child(control)
22 | control.owner = edited_scene_root
23 |
24 |
25 | func set_controls(new_controls: int) -> void:
26 | if not is_inside_tree(): yield(self, 'ready')
27 |
28 | if controls < new_controls:
29 | for idx in range(new_controls):
30 | if idx < variable_controls.get_child_count():
31 | continue
32 |
33 | var control := VariableControl.instance()
34 | variable_controls.add_child(control)
35 | control.owner = edited_scene_root
36 | else:
37 | for idx in range(new_controls, controls):
38 | var child := variable_controls.get_child(idx)
39 | if child: child.queue_free()
40 |
41 | controls = new_controls
42 |
--------------------------------------------------------------------------------
/godot/demos/VariablesPanel/GUI.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=4 format=2]
2 |
3 | [ext_resource path="res://assets/theme/gdquest.theme" type="Theme" id=1]
4 | [ext_resource path="res://demos/VariablesPanel/GUI.gd" type="Script" id=2]
5 | [ext_resource path="res://demos/VariablesPanel/VariableControl.tscn" type="PackedScene" id=3]
6 |
7 | [node name="GUI" type="PanelContainer"]
8 | anchor_bottom = 1.0
9 | margin_right = 442.0
10 | theme = ExtResource( 1 )
11 | script = ExtResource( 2 )
12 | __meta__ = {
13 | "_edit_use_anchors_": false
14 | }
15 | controls = 2
16 |
17 | [node name="MarginContainer" type="MarginContainer" parent="."]
18 | margin_right = 454.0
19 | margin_bottom = 1080.0
20 | custom_constants/margin_right = 20
21 | custom_constants/margin_top = 20
22 | custom_constants/margin_left = 20
23 | custom_constants/margin_bottom = 20
24 |
25 | [node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
26 | margin_left = 20.0
27 | margin_top = 20.0
28 | margin_right = 434.0
29 | margin_bottom = 1060.0
30 |
31 | [node name="VariableControls" type="VBoxContainer" parent="MarginContainer/VBoxContainer"]
32 | margin_right = 414.0
33 | margin_bottom = 128.0
34 |
35 | [node name="MaxSpeed" parent="MarginContainer/VBoxContainer/VariableControls" instance=ExtResource( 3 )]
36 | margin_right = 414.0
37 | margin_bottom = 60.0
38 |
39 | [node name="NamesAreTakenFromNodes" parent="MarginContainer/VBoxContainer/VariableControls" instance=ExtResource( 3 )]
40 | margin_top = 68.0
41 | margin_right = 414.0
42 | margin_bottom = 128.0
43 |
44 | [node name="Help" type="Label" parent="MarginContainer/VBoxContainer"]
45 | margin_top = 136.0
46 | margin_right = 414.0
47 | margin_bottom = 191.0
48 | text = "
49 | (example) Help"
50 |
51 | [node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer"]
52 | margin_top = 199.0
53 | margin_right = 414.0
54 | margin_bottom = 255.0
55 | columns = 3
56 |
57 | [node name="Sep1" type="Control" parent="MarginContainer/VBoxContainer/GridContainer"]
58 | margin_right = 15.0
59 | margin_bottom = 26.0
60 |
61 | [node name="Up" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"]
62 | margin_left = 19.0
63 | margin_right = 42.0
64 | margin_bottom = 26.0
65 | text = "W"
66 | align = 1
67 |
68 | [node name="Sep2" type="Control" parent="MarginContainer/VBoxContainer/GridContainer"]
69 | margin_left = 46.0
70 | margin_right = 63.0
71 | margin_bottom = 26.0
72 | __meta__ = {
73 | "_edit_use_anchors_": false
74 | }
75 |
76 | [node name="Left" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"]
77 | margin_top = 30.0
78 | margin_right = 15.0
79 | margin_bottom = 56.0
80 | text = "A"
81 | align = 1
82 |
83 | [node name="Down" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"]
84 | margin_left = 19.0
85 | margin_top = 30.0
86 | margin_right = 42.0
87 | margin_bottom = 56.0
88 | text = "S"
89 | align = 1
90 |
91 | [node name="Right" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"]
92 | margin_left = 46.0
93 | margin_top = 30.0
94 | margin_right = 63.0
95 | margin_bottom = 56.0
96 | text = "D"
97 | align = 1
98 |
99 | [node name="Info" type="Label" parent="MarginContainer/VBoxContainer"]
100 | margin_top = 263.0
101 | margin_right = 414.0
102 | margin_bottom = 724.0
103 | text = "
104 | Info
105 |
106 | Use mouse scroll wheel to scroll through
107 | values on the text area.
108 |
109 | Text area focus is grabbed when mouse
110 | is moved over, and lost when mouse
111 | moves away.
112 |
113 | Use export variable on the GUI node to
114 | set the number of variable controls.
115 |
116 | Use export variables on individual
117 | Variable Control nodes to set default
118 | min/max & values."
119 |
--------------------------------------------------------------------------------
/godot/demos/VariablesPanel/VariableControl.gd:
--------------------------------------------------------------------------------
1 | tool
2 | extends VBoxContainer
3 |
4 | signal value_changed(value)
5 |
6 | export var min_value: = 0.0 setget set_min_value
7 | export var max_value: = 100.0 setget set_max_value
8 | export var value: = 0.0 setget set_value
9 |
10 | onready var label: Label = $HBoxContainer/Label
11 | onready var spin_box: SpinBox = $HBoxContainer/SpinBox
12 | onready var slider: HSlider = $HSlider
13 |
14 |
15 | func _ready() -> void:
16 | _set_label_text()
17 | connect("renamed", self, "_set_label_text")
18 | spin_box.connect("mouse_entered", spin_box.get_line_edit(), "grab_focus")
19 | spin_box.connect("mouse_exited", spin_box.get_line_edit(), "release_focus")
20 | spin_box.connect("value_changed", self, "_set_value")
21 | slider.connect("value_changed", self, "_set_value")
22 |
23 |
24 | func set_min_value(new_min_value: float) -> void:
25 | if not is_inside_tree():
26 | yield(self, "ready")
27 |
28 | min_value = new_min_value
29 |
30 | spin_box.min_value = min_value
31 | slider.min_value = min_value
32 |
33 |
34 | func set_max_value(new_max_value: float) -> void:
35 | if not is_inside_tree():
36 | yield(self, "ready")
37 |
38 | max_value = new_max_value
39 |
40 | spin_box.max_value = max_value
41 | slider.max_value = max_value
42 |
43 |
44 | func set_value(new_value: float) -> void:
45 | if not is_inside_tree():
46 | yield(self, "ready")
47 |
48 | value = clamp(new_value, min_value, max_value)
49 |
50 | spin_box.value = value
51 | slider.value = value
52 |
53 | emit_signal("value_changed", value)
54 |
55 |
56 | func _set_value(new_value: float) -> void:
57 | value = new_value
58 |
59 | property_list_changed_notify()
60 | emit_signal("value_changed", value)
61 |
62 |
63 | func _set_label_text() -> void:
64 | if not is_inside_tree():
65 | yield(self, "ready")
66 |
67 | label.text = name.capitalize()
68 |
--------------------------------------------------------------------------------
/godot/demos/VariablesPanel/VariableControl.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=2]
2 |
3 | [ext_resource path="res://demos/VariablesPanel/VariableControl.gd" type="Script" id=1]
4 |
5 | [node name="VariableControl" type="VBoxContainer"]
6 | margin_right = 78.0
7 | margin_bottom = 44.0
8 | script = ExtResource( 1 )
9 | __meta__ = {
10 | "_edit_use_anchors_": false
11 | }
12 |
13 | [node name="HBoxContainer" type="HBoxContainer" parent="."]
14 | margin_right = 179.0
15 | margin_bottom = 24.0
16 | __meta__ = {
17 | "_edit_lock_": true
18 | }
19 |
20 | [node name="Label" type="Label" parent="HBoxContainer"]
21 | margin_top = 5.0
22 | margin_right = 101.0
23 | margin_bottom = 19.0
24 | size_flags_horizontal = 2
25 | text = "Variable Control"
26 | __meta__ = {
27 | "_edit_lock_": true
28 | }
29 |
30 | [node name="SpinBox" type="SpinBox" parent="HBoxContainer"]
31 | margin_left = 105.0
32 | margin_right = 179.0
33 | margin_bottom = 24.0
34 | align = 2
35 | __meta__ = {
36 | "_edit_lock_": true
37 | }
38 |
39 | [node name="HSlider" type="HSlider" parent="."]
40 | margin_top = 28.0
41 | margin_right = 179.0
42 | margin_bottom = 44.0
43 | __meta__ = {
44 | "_edit_lock_": true
45 | }
46 |
--------------------------------------------------------------------------------
/godot/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GDQuest/godot-debug-ui-toolkit/64d0eece58566fa3448bc4e58e571c1ebd77bd5f/godot/icon.png
--------------------------------------------------------------------------------
/godot/icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://icon.png"
13 | dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/godot/project.godot:
--------------------------------------------------------------------------------
1 | ; Engine configuration file.
2 | ; It's best edited using the editor UI and not directly,
3 | ; since the parameters that go here are not all obvious.
4 | ;
5 | ; Format:
6 | ; [section] ; section goes between []
7 | ; param=value ; assign values to parameters
8 |
9 | config_version=4
10 |
11 | _global_script_classes=[ {
12 | "base": "MarginContainer",
13 | "class": "ColorPalette",
14 | "language": "GDScript",
15 | "path": "res://addons/color_palette/interface/ColorPalette.gd"
16 | }, {
17 | "base": "Button",
18 | "class": "ColorSwatch",
19 | "language": "GDScript",
20 | "path": "res://addons/color_palette/interface/color_swatch/ColorSwatch.gd"
21 | }, {
22 | "base": "MarginContainer",
23 | "class": "Docker",
24 | "language": "GDScript",
25 | "path": "res://addons/gdquest_docker/interface/Docker.gd"
26 | }, {
27 | "base": "Control",
28 | "class": "RichEditorInterface",
29 | "language": "GDScript",
30 | "path": "res://addons/rich_text_editor/interface/RichEditorInterface.gd"
31 | }, {
32 | "base": "EditorPlugin",
33 | "class": "RichTextPlugin",
34 | "language": "GDScript",
35 | "path": "res://addons/rich_text_editor/RichTextEditor.gd"
36 | } ]
37 | _global_script_class_icons={
38 | "ColorPalette": "",
39 | "ColorSwatch": "",
40 | "Docker": "",
41 | "RichEditorInterface": "",
42 | "RichTextPlugin": ""
43 | }
44 |
45 | [application]
46 |
47 | config/name="GDquest Godot Theme"
48 | config/description="UI themes and visual styleguide to reuse across GDQuest projects"
49 | run/main_scene="res://src/Styleguide.tscn"
50 | config/icon="res://icon.png"
51 |
52 | [display]
53 |
54 | window/size/width=1920
55 | window/size/height=1080
56 |
57 | [editor_plugins]
58 |
59 | enabled=PoolStringArray( )
60 |
--------------------------------------------------------------------------------
/godot/src/Components/ColorPalette/ColorPalette.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=2]
2 |
3 | [ext_resource path="res://src/Components/ColorPalette/ColorSwatch/ColorSwatch.tscn" type="PackedScene" id=1]
4 |
5 |
6 | [node name="ColorPalette" type="MarginContainer"]
7 | editor/display_folded = true
8 | anchor_left = 0.5
9 | anchor_top = 0.5
10 | anchor_right = 0.5
11 | anchor_bottom = 0.5
12 | margin_left = -100.0
13 | margin_top = -75.0
14 | margin_right = 100.0
15 | margin_bottom = 75.0
16 |
17 | [node name="Column" type="VBoxContainer" parent="."]
18 | margin_right = 200.0
19 | margin_bottom = 150.0
20 |
21 | [node name="Label" type="Label" parent="Column"]
22 | margin_right = 200.0
23 | margin_bottom = 14.0
24 | text = "Palette name"
25 |
26 | [node name="Grid" type="GridContainer" parent="Column"]
27 | margin_top = 18.0
28 | margin_right = 200.0
29 | margin_bottom = 82.0
30 | columns = 6
31 |
32 | [node name="ColorSwatch" parent="Column/Grid" instance=ExtResource( 1 )]
33 | color = Color( 0.0352941, 0.65098, 0.792157, 1 )
34 |
35 | [node name="ColorSwatch2" parent="Column/Grid" instance=ExtResource( 1 )]
36 | margin_left = 68.0
37 | margin_right = 132.0
38 | color = Color( 0, 0.27451, 1, 1 )
39 |
40 | [node name="Grid2" type="GridContainer" parent="Column"]
41 | margin_top = 86.0
42 | margin_right = 200.0
43 | margin_bottom = 150.0
44 | columns = 6
45 |
46 | [node name="ColorSwatch5" parent="Column/Grid2" instance=ExtResource( 1 )]
47 | color = Color( 0.172549, 0.713726, 0.219608, 1 )
48 |
49 | [node name="ColorSwatch4" parent="Column/Grid2" instance=ExtResource( 1 )]
50 | margin_left = 68.0
51 | margin_right = 132.0
52 | color = Color( 1, 0.607843, 0, 1 )
53 |
54 | [node name="ColorSwatch6" parent="Column/Grid2" instance=ExtResource( 1 )]
55 | margin_left = 136.0
56 | margin_right = 200.0
57 | color = Color( 1, 0, 0.305882, 1 )
58 |
59 |
--------------------------------------------------------------------------------
/godot/src/Components/ColorPalette/ColorSwatch/ColorSwatch.gd:
--------------------------------------------------------------------------------
1 | tool
2 | extends Button
3 |
4 |
5 | onready var color_rect : ColorRect = $ColorRect
6 |
7 | export var color : = Color('ffffff') setget set_color
8 |
9 |
10 | func set_color(value:Color) -> void:
11 | color = value
12 | if not color_rect:
13 | return
14 | color_rect.color = value
15 |
16 |
17 | func _ready() -> void:
18 | self.color = color
19 |
--------------------------------------------------------------------------------
/godot/src/Components/ColorPalette/ColorSwatch/ColorSwatch.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=2]
2 |
3 | [ext_resource path="res://src/Components/ColorPalette/ColorSwatch/ColorSwatch.gd" type="Script" id=1]
4 |
5 |
6 |
7 | [node name="ColorSwatch" type="Button"]
8 | margin_right = 64.0
9 | margin_bottom = 64.0
10 | rect_min_size = Vector2( 64, 64 )
11 | script = ExtResource( 1 )
12 |
13 | [node name="ColorRect" type="ColorRect" parent="."]
14 | anchor_right = 1.0
15 | anchor_bottom = 1.0
16 | margin_left = 8.0
17 | margin_top = 8.0
18 | margin_right = -8.0
19 | margin_bottom = -8.0
20 | mouse_filter = 2
21 | color = Color( 0.0352941, 0.65098, 0.792157, 1 )
22 |
23 |
--------------------------------------------------------------------------------
/godot/src/Components/TextEdit/TextEdit.gd:
--------------------------------------------------------------------------------
1 | tool
2 | extends TextEdit
3 | # Adds syntax highlighting for common GDScript keywords on
4 | # top of TextEdit's defaults
5 |
6 |
7 | export var class_color : = Color(0.6, 0.6, 1.0)
8 | export var member_color : = Color(0.6, 1.0, 0.6)
9 | export var keyword_color : = Color(1.0, 0.6, 0.6)
10 | export var quotes_color : = Color(1.0, 1.0, 0.6)
11 | export var comments_color : = Color("959595")
12 |
13 |
14 | func _ready() -> void:
15 | _add_keywords_highlighting()
16 |
17 |
18 | func _add_keywords_highlighting() -> void:
19 | add_color_region('"', '"', quotes_color)
20 | add_color_region("'", "'", quotes_color)
21 | add_color_region("# ", "\n", comments_color, true)
22 |
23 | var classes : = ClassDB.get_class_list()
24 | for cls in classes:
25 | add_keyword_color(cls, class_color)
26 | var properties : = ClassDB.class_get_property_list(cls)
27 | for property in properties:
28 | for key in property:
29 | add_keyword_color(key, member_color)
30 |
31 | var content : = get_file_content("res://src/Components/TextEdit/keywords.json")
32 | var keywords : Array = parse_json(content)
33 | for keyword in keywords:
34 | add_keyword_color(keyword, keyword_color)
35 |
36 |
37 | func get_file_content(path:String) -> String:
38 | var file = File.new()
39 | var error : int = file.open(path, file.READ)
40 | var content : = ""
41 | if error == OK:
42 | content = file.get_as_text()
43 | file.close()
44 | return content
45 |
--------------------------------------------------------------------------------
/godot/src/Components/TextEdit/TextEdit.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=2]
2 |
3 | [ext_resource path="res://assets/theme/gdquest.theme" type="Theme" id=1]
4 | [ext_resource path="res://src/Components/TextEdit/TextEdit.gd" type="Script" id=2]
5 |
6 |
7 |
8 | [node name="TextEdit" type="TextEdit"]
9 | anchor_right = 1.0
10 | anchor_bottom = 1.0
11 | mouse_default_cursor_shape = 0
12 | theme = ExtResource( 1 )
13 | highlight_current_line = true
14 | syntax_highlighting = true
15 | show_line_numbers = true
16 | highlight_all_occurrences = true
17 | wrap_enabled = true
18 | script = ExtResource( 2 )
19 |
20 |
--------------------------------------------------------------------------------
/godot/src/Components/TextEdit/keywords.json:
--------------------------------------------------------------------------------
1 | [
2 | "onready",
3 | "var",
4 | "export",
5 | "if",
6 | "elif",
7 | "else",
8 | "for",
9 | "do",
10 | "while",
11 | "match",
12 | "switch",
13 | "case",
14 | "break",
15 | "continue",
16 | "pass",
17 | "return",
18 | "class",
19 | "extends",
20 | "is",
21 | "self",
22 | "tool",
23 | "signal",
24 | "func",
25 | "static",
26 | "const",
27 | "enum",
28 | "setget",
29 | "breakpoint",
30 | "preload",
31 | "yield",
32 | "assert",
33 | "remote",
34 | "master",
35 | "slave",
36 | "sync",
37 | "Color8",
38 | "ColorN",
39 | "abs",
40 | "acos",
41 | "asin",
42 | "assert",
43 | "atan",
44 | "atan2",
45 | "bytes2var",
46 | "cartesian2polar",
47 | "ceil",
48 | "char",
49 | "clamp",
50 | "convert",
51 | "cos",
52 | "cosh",
53 | "db2linear",
54 | "decials",
55 | "dectime",
56 | "def2rad",
57 | "dict2inst",
58 | "ease",
59 | "expo",
60 | "floor",
61 | "fmod",
62 | "fposmod",
63 | "funcref",
64 | "hash",
65 | "inst2dict",
66 | "instance_from_id",
67 | "inverse_lerp",
68 | "is_inf",
69 | "is_nan",
70 | "len",
71 | "lerp",
72 | "linear2db",
73 | "load",
74 | "log",
75 | "max",
76 | "min",
77 | "nearest_po2",
78 | "parse_json",
79 | "polar2cartesian",
80 | "pow",
81 | "preload",
82 | "print",
83 | "print_stack",
84 | "printerr",
85 | "printraw",
86 | "prints",
87 | "printt",
88 | "rad2def",
89 | "rand_range",
90 | "rand_seed",
91 | "randf",
92 | "randi",
93 | "randomize",
94 | "range",
95 | "range_lerp",
96 | "round",
97 | "seed",
98 | "sign",
99 | "sin",
100 | "sinh",
101 | "sqrt",
102 | "stepify",
103 | "str",
104 | "str2var",
105 | "tan",
106 | "tanh",
107 | "to_json",
108 | "type_exists",
109 | "typeof",
110 | "validate_json",
111 | "var2bytes",
112 | "var2str",
113 | "weakref",
114 | "wrapf",
115 | "wrapi",
116 | "yield"
117 | ]
118 |
--------------------------------------------------------------------------------
/godot/src/Components/Title.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=2]
2 |
3 | [ext_resource path="res://assets/theme/fonts/font_title.tres" type="DynamicFont" id=1]
4 |
5 |
6 | [node name="Title" type="Label"]
7 | anchor_left = 0.5
8 | anchor_top = 0.5
9 | anchor_right = 0.5
10 | anchor_bottom = 0.5
11 | margin_left = -376.0
12 | margin_top = -18.0
13 | margin_right = 376.0
14 | margin_bottom = 18.0
15 | custom_fonts/font = ExtResource( 1 )
16 | text = "Color palette"
17 | align = 1
18 | valign = 1
19 | uppercase = true
20 |
21 |
--------------------------------------------------------------------------------
/godot/src/Debug/DebugDock.gd:
--------------------------------------------------------------------------------
1 | extends MarginContainer
2 | # Contains UI widgets that display debug info about the game world
3 |
4 |
5 | func _ready() -> void:
6 | visible = false
7 |
8 |
9 | func _input(event: InputEvent) -> void:
10 | if event.is_action_pressed('toggle_debug_menu'):
11 | visible = not visible
12 | accept_event()
13 |
--------------------------------------------------------------------------------
/godot/src/Debug/DebugPanel.gd:
--------------------------------------------------------------------------------
1 | tool
2 | extends Control
3 | # Displays the values of properties of a given node
4 | # You can directly change the `properties` property to display multiple values from the `reference` node
5 | # E.g. properties = PoolStringArray(['speed', 'position', 'modulate'])
6 |
7 |
8 | export var reference_path: NodePath
9 | export var properties: PoolStringArray setget set_properties
10 | export var round_decimals: = 2
11 |
12 | onready var _container: VBoxContainer = $VBoxContainer/MarginContainer/VBoxContainer
13 | onready var _title: Label = $VBoxContainer/ReferenceName
14 | onready var reference: Node = get_node(reference_path) setget set_reference
15 |
16 | var _step: = 1.0 / pow(10, round_decimals)
17 |
18 | func _ready() -> void:
19 | if not reference:
20 | return
21 | _setup()
22 |
23 |
24 | func _process(delta) -> void:
25 | _update()
26 |
27 |
28 | func _setup() -> void:
29 | _clear()
30 | _title.text = reference.name
31 | for property in properties:
32 | track(property)
33 |
34 |
35 | func _get_configuration_warning() -> String:
36 | return "" if not reference_path.is_empty() else "Reference Path should not be empty."
37 |
38 |
39 | func track(property: String) -> void:
40 | var label: = Label.new()
41 | label.autowrap = true
42 | label.name = property.capitalize()
43 | _container.add_child(label)
44 | if not property in properties:
45 | properties.append(property)
46 |
47 |
48 | func _clear() -> void:
49 | for property_label in _container.get_children():
50 | property_label.queue_free()
51 |
52 |
53 | func _update() -> void:
54 | if Engine.editor_hint:
55 | return
56 | var search_array: Array = properties
57 | for property in properties:
58 | var value = reference.get(property)
59 | var label: Label = _container.get_child(search_array.find(property))
60 | var text: = ""
61 | if value is float:
62 | text = str(stepify(value, _step))
63 | if value is Vector2:
64 | text = "(%s %s)" % [
65 | stepify(value.x, _step),
66 | stepify(value.y, _step)
67 | ]
68 | elif value is Vector3:
69 | text = get_vector3_as_string(value)
70 | elif value is Transform:
71 | var elements: PoolStringArray = [
72 | get_vector3_as_string(value.basis.x),
73 | get_vector3_as_string(value.basis.y),
74 | get_vector3_as_string(value.basis.z),
75 | get_vector3_as_string(value.origin)
76 | ]
77 | text = elements.join("\n")
78 | else:
79 | text = str(value)
80 | label.text = "%s: %s" % [property.capitalize(), text]
81 |
82 |
83 | func get_vector2_as_string(vector: Vector2) -> String:
84 | return "(%s %s)" % [
85 | stepify(vector.x, _step),
86 | stepify(vector.y, _step)
87 | ]
88 |
89 |
90 | func get_vector3_as_string(vector: Vector3) -> String:
91 | return "(%s %s %s)" % [
92 | stepify(vector.x, _step),
93 | stepify(vector.y, _step),
94 | stepify(vector.z, _step)
95 | ]
96 |
97 |
98 | func set_properties(value: PoolStringArray) -> void:
99 | properties = value
100 | if not reference:
101 | return
102 | _setup()
103 |
104 |
105 | func set_reference(value: Node) -> void:
106 | reference = value
107 | if reference:
108 | _setup()
109 |
--------------------------------------------------------------------------------
/godot/src/Debug/DebugPanel.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=4 format=2]
2 |
3 | [ext_resource path="res://assets/theme/gdquest.theme" type="Theme" id=1]
4 | [ext_resource path="res://src/Debug/DebugPanel.gd" type="Script" id=2]
5 | [ext_resource path="res://assets/theme/fonts/font_title.tres" type="DynamicFont" id=3]
6 |
7 |
8 | [node name="DebugPanel" type="PanelContainer"]
9 | anchor_right = 1.0
10 | anchor_bottom = 1.0
11 | margin_right = -1630.0
12 | margin_bottom = -998.0
13 | theme = ExtResource( 1 )
14 | script = ExtResource( 2 )
15 | reference_path = NodePath("")
16 | properties = PoolStringArray( )
17 |
18 | [node name="VBoxContainer" type="VBoxContainer" parent="."]
19 | margin_right = 290.0
20 | margin_bottom = 102.0
21 |
22 | [node name="ReferenceName" type="Label" parent="VBoxContainer"]
23 | margin_right = 290.0
24 | margin_bottom = 54.0
25 | rect_min_size = Vector2( 0, 54 )
26 | custom_fonts/font = ExtResource( 3 )
27 | text = "DebugPanel"
28 | align = 1
29 | valign = 1
30 |
31 | [node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
32 | margin_top = 62.0
33 | margin_right = 290.0
34 | margin_bottom = 102.0
35 | size_flags_horizontal = 3
36 | size_flags_vertical = 3
37 | custom_constants/margin_right = 20
38 | custom_constants/margin_top = 20
39 | custom_constants/margin_left = 20
40 | custom_constants/margin_bottom = 20
41 |
42 | [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer"]
43 | margin_left = 20.0
44 | margin_top = 20.0
45 | margin_right = 270.0
46 | margin_bottom = 20.0
47 | size_flags_horizontal = 3
48 | size_flags_vertical = 3
49 |
--------------------------------------------------------------------------------
/godot/src/Styleguide.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=2]
2 |
3 | [ext_resource path="res://assets/theme/gdquest.theme" type="Theme" id=1]
4 | [ext_resource path="res://src/Components/TextEdit/TextEdit.tscn" type="PackedScene" id=2]
5 | [ext_resource path="res://assets/theme/fonts/default_font_bold.tres" type="DynamicFont" id=3]
6 | [ext_resource path="res://src/Components/Title.tscn" type="PackedScene" id=4]
7 |
8 | [node name="Styleguide" type="Control"]
9 | anchor_right = 1.0
10 | anchor_bottom = 1.0
11 | theme = ExtResource( 1 )
12 | __meta__ = {
13 | "_edit_lock_": true
14 | }
15 |
16 | [node name="Panel" type="PanelContainer" parent="."]
17 | margin_left = 32.0
18 | margin_top = 32.0
19 | margin_right = 848.0
20 | margin_bottom = 832.0
21 |
22 | [node name="MarginContainer" type="MarginContainer" parent="Panel"]
23 | margin_right = 816.0
24 | margin_bottom = 800.0
25 | custom_constants/margin_right = 32
26 | custom_constants/margin_top = 32
27 | custom_constants/margin_left = 32
28 | custom_constants/margin_bottom = 32
29 |
30 | [node name="Column" type="VBoxContainer" parent="Panel/MarginContainer"]
31 | margin_left = 32.0
32 | margin_top = 32.0
33 | margin_right = 784.0
34 | margin_bottom = 768.0
35 |
36 | [node name="VisualReference" type="VBoxContainer" parent="Panel/MarginContainer/Column"]
37 | margin_right = 752.0
38 | margin_bottom = 118.0
39 |
40 | [node name="Title3" parent="Panel/MarginContainer/Column/VisualReference" instance=ExtResource( 4 )]
41 | anchor_left = 0.0
42 | anchor_top = 0.0
43 | anchor_right = 0.0
44 | anchor_bottom = 0.0
45 | margin_left = 0.0
46 | margin_top = 0.0
47 | margin_right = 752.0
48 | margin_bottom = 36.0
49 | text = "Visual Reference"
50 |
51 | [node name="Label4" type="Label" parent="Panel/MarginContainer/Column/VisualReference"]
52 | margin_top = 44.0
53 | margin_right = 752.0
54 | margin_bottom = 70.0
55 | text = "Normal paragraph text"
56 |
57 | [node name="Row" type="HBoxContainer" parent="Panel/MarginContainer/Column/VisualReference"]
58 | margin_top = 78.0
59 | margin_right = 752.0
60 | margin_bottom = 118.0
61 |
62 | [node name="Button" type="Button" parent="Panel/MarginContainer/Column/VisualReference/Row"]
63 | margin_right = 245.0
64 | margin_bottom = 40.0
65 | rect_min_size = Vector2( 0, 40 )
66 | size_flags_horizontal = 3
67 | text = "Button"
68 |
69 | [node name="Button2" type="Button" parent="Panel/MarginContainer/Column/VisualReference/Row"]
70 | margin_left = 253.0
71 | margin_right = 498.0
72 | margin_bottom = 40.0
73 | rect_min_size = Vector2( 0, 40 )
74 | size_flags_horizontal = 3
75 | text = "Button"
76 |
77 | [node name="Button3" type="Button" parent="Panel/MarginContainer/Column/VisualReference/Row"]
78 | margin_left = 506.0
79 | margin_right = 752.0
80 | margin_bottom = 40.0
81 | rect_min_size = Vector2( 0, 40 )
82 | size_flags_horizontal = 3
83 | text = "Button"
84 |
85 | [node name="HSeparator" type="HSeparator" parent="Panel/MarginContainer/Column"]
86 | margin_top = 126.0
87 | margin_right = 752.0
88 | margin_bottom = 130.0
89 |
90 | [node name="ColorPalette" type="VBoxContainer" parent="Panel/MarginContainer/Column"]
91 | margin_top = 138.0
92 | margin_right = 752.0
93 | margin_bottom = 386.0
94 |
95 | [node name="Title" parent="Panel/MarginContainer/Column/ColorPalette" instance=ExtResource( 4 )]
96 | anchor_left = 0.0
97 | anchor_top = 0.0
98 | anchor_right = 0.0
99 | anchor_bottom = 0.0
100 | margin_left = 0.0
101 | margin_top = 0.0
102 | margin_right = 752.0
103 | margin_bottom = 36.0
104 |
105 | [node name="Label2" type="Label" parent="Panel/MarginContainer/Column/ColorPalette"]
106 | margin_top = 44.0
107 | margin_right = 752.0
108 | margin_bottom = 70.0
109 | custom_fonts/font = ExtResource( 3 )
110 | text = "Background"
111 |
112 | [node name="Row2" type="HBoxContainer" parent="Panel/MarginContainer/Column/ColorPalette"]
113 | margin_top = 78.0
114 | margin_right = 752.0
115 | margin_bottom = 118.0
116 |
117 | [node name="Color" type="ColorRect" parent="Panel/MarginContainer/Column/ColorPalette/Row2"]
118 | margin_right = 372.0
119 | margin_bottom = 40.0
120 | rect_min_size = Vector2( 0, 40 )
121 | size_flags_horizontal = 3
122 | color = Color( 0, 0, 0, 1 )
123 |
124 | [node name="Label" type="Label" parent="Panel/MarginContainer/Column/ColorPalette/Row2/Color"]
125 | anchor_right = 1.0
126 | anchor_bottom = 1.0
127 | margin_left = 16.0
128 | margin_bottom = -1.0
129 | text = "Dark"
130 | valign = 1
131 |
132 | [node name="Color2" type="ColorRect" parent="Panel/MarginContainer/Column/ColorPalette/Row2"]
133 | margin_left = 380.0
134 | margin_right = 752.0
135 | margin_bottom = 40.0
136 | rect_min_size = Vector2( 0, 40 )
137 | size_flags_horizontal = 3
138 | color = Color( 0.301961, 0.294118, 0.321569, 1 )
139 |
140 | [node name="Label" type="Label" parent="Panel/MarginContainer/Column/ColorPalette/Row2/Color2"]
141 | anchor_right = 1.0
142 | anchor_bottom = 1.0
143 | margin_left = 16.0
144 | margin_bottom = -1.0
145 | text = "Faint"
146 | valign = 1
147 |
148 | [node name="Label3" type="Label" parent="Panel/MarginContainer/Column/ColorPalette"]
149 | margin_top = 126.0
150 | margin_right = 752.0
151 | margin_bottom = 152.0
152 | custom_fonts/font = ExtResource( 3 )
153 | text = "Theme"
154 |
155 | [node name="Row4" type="HBoxContainer" parent="Panel/MarginContainer/Column/ColorPalette"]
156 | margin_top = 160.0
157 | margin_right = 752.0
158 | margin_bottom = 200.0
159 |
160 | [node name="Color" type="ColorRect" parent="Panel/MarginContainer/Column/ColorPalette/Row4"]
161 | margin_right = 372.0
162 | margin_bottom = 40.0
163 | rect_min_size = Vector2( 0, 40 )
164 | size_flags_horizontal = 3
165 | color = Color( 0.0352941, 0.65098, 0.792157, 1 )
166 |
167 | [node name="Label" type="Label" parent="Panel/MarginContainer/Column/ColorPalette/Row4/Color"]
168 | anchor_right = 1.0
169 | anchor_bottom = 1.0
170 | margin_left = 16.0
171 | text = "Primary"
172 | valign = 1
173 |
174 | [node name="Color2" type="ColorRect" parent="Panel/MarginContainer/Column/ColorPalette/Row4"]
175 | margin_left = 380.0
176 | margin_right = 752.0
177 | margin_bottom = 40.0
178 | rect_min_size = Vector2( 0, 40 )
179 | size_flags_horizontal = 3
180 | color = Color( 0, 0.27451, 1, 1 )
181 |
182 | [node name="Label4" type="Label" parent="Panel/MarginContainer/Column/ColorPalette/Row4/Color2"]
183 | anchor_right = 1.0
184 | anchor_bottom = 1.0
185 | margin_left = 20.0
186 | text = "Secondary"
187 | valign = 1
188 |
189 | [node name="Row3" type="HBoxContainer" parent="Panel/MarginContainer/Column/ColorPalette"]
190 | margin_top = 208.0
191 | margin_right = 752.0
192 | margin_bottom = 248.0
193 |
194 | [node name="Color" type="ColorRect" parent="Panel/MarginContainer/Column/ColorPalette/Row3"]
195 | margin_right = 245.0
196 | margin_bottom = 40.0
197 | rect_min_size = Vector2( 0, 40 )
198 | size_flags_horizontal = 3
199 | color = Color( 0.172549, 0.713726, 0.219608, 1 )
200 |
201 | [node name="Label" type="Label" parent="Panel/MarginContainer/Column/ColorPalette/Row3/Color"]
202 | anchor_right = 1.0
203 | anchor_bottom = 1.0
204 | margin_left = 16.0
205 | text = "Success"
206 | valign = 1
207 |
208 | [node name="Color2" type="ColorRect" parent="Panel/MarginContainer/Column/ColorPalette/Row3"]
209 | margin_left = 253.0
210 | margin_right = 498.0
211 | margin_bottom = 40.0
212 | rect_min_size = Vector2( 0, 40 )
213 | size_flags_horizontal = 3
214 | color = Color( 1, 0.607843, 0, 1 )
215 |
216 | [node name="Label" type="Label" parent="Panel/MarginContainer/Column/ColorPalette/Row3/Color2"]
217 | anchor_right = 1.0
218 | anchor_bottom = 1.0
219 | margin_left = 16.0
220 | text = "Warning"
221 | valign = 1
222 |
223 | [node name="Color3" type="ColorRect" parent="Panel/MarginContainer/Column/ColorPalette/Row3"]
224 | margin_left = 506.0
225 | margin_right = 752.0
226 | margin_bottom = 40.0
227 | rect_min_size = Vector2( 0, 40 )
228 | size_flags_horizontal = 3
229 | color = Color( 1, 0, 0.305882, 1 )
230 |
231 | [node name="Label" type="Label" parent="Panel/MarginContainer/Column/ColorPalette/Row3/Color3"]
232 | anchor_right = 1.0
233 | anchor_bottom = 1.0
234 | margin_left = 16.0
235 | text = "Error"
236 | valign = 1
237 |
238 | [node name="HSeparator2" type="HSeparator" parent="Panel/MarginContainer/Column"]
239 | margin_top = 394.0
240 | margin_right = 752.0
241 | margin_bottom = 398.0
242 |
243 | [node name="CodeBlock2" type="VBoxContainer" parent="Panel/MarginContainer/Column"]
244 | margin_top = 406.0
245 | margin_right = 752.0
246 | margin_bottom = 730.0
247 |
248 | [node name="Title2" parent="Panel/MarginContainer/Column/CodeBlock2" instance=ExtResource( 4 )]
249 | anchor_left = 0.0
250 | anchor_top = 0.0
251 | anchor_right = 0.0
252 | anchor_bottom = 0.0
253 | margin_left = 0.0
254 | margin_top = 0.0
255 | margin_right = 752.0
256 | margin_bottom = 36.0
257 | text = "Code block"
258 |
259 | [node name="TextEdit" parent="Panel/MarginContainer/Column/CodeBlock2" instance=ExtResource( 2 )]
260 | anchor_right = 0.0
261 | anchor_bottom = 0.0
262 | margin_top = 44.0
263 | margin_right = 752.0
264 | margin_bottom = 324.0
265 | rect_min_size = Vector2( 0, 280 )
266 | text = "tool
267 | extends TextEdit
268 | \"\"\"
269 | Adds syntax highlighting for common GDScript keywords on
270 | top of TextEdit's defaults
271 | \"\"\"
272 |
273 | export var class_color : = Color(0.6, 0.6, 1.0)
274 | export var member_color : = Color(0.6, 1.0, 0.6)
275 | export var keyword_color : = Color(1.0, 0.6, 0.6)
276 | export var quotes_color : = Color(1.0, 1.0, 0.6)
277 | export var comments_color : = Color(\"959595\")
278 |
279 | func _ready() -> void:
280 | _add_keywords_highlighting()
281 | "
282 | class_color = Color( 0.6, 0.6, 1, 1 )
283 | member_color = Color( 0.6, 1, 0.6, 1 )
284 | keyword_color = Color( 1, 0.6, 0.6, 1 )
285 | quotes_color = Color( 1, 1, 0.6, 1 )
286 | comments_color = Color( 0.584314, 0.584314, 0.584314, 1 )
287 |
288 | [node name="Panel2" type="Panel" parent="."]
289 | margin_left = 880.0
290 | margin_top = 32.0
291 | margin_right = 1696.0
292 | margin_bottom = 512.0
293 |
294 | [node name="Column" type="VBoxContainer" parent="Panel2"]
295 | anchor_right = 1.0
296 | anchor_bottom = 1.0
297 | margin_left = 32.0
298 | margin_top = 32.0
299 | margin_right = -32.0
300 | margin_bottom = -32.0
301 |
302 | [node name="Title3" parent="Panel2/Column" instance=ExtResource( 4 )]
303 | anchor_left = 0.0
304 | anchor_top = 0.0
305 | anchor_right = 0.0
306 | anchor_bottom = 0.0
307 | margin_left = 0.0
308 | margin_top = 0.0
309 | margin_right = 752.0
310 | margin_bottom = 36.0
311 | text = "Styleguide"
312 |
313 | [node name="Label3" type="Label" parent="Panel2/Column"]
314 | margin_top = 44.0
315 | margin_right = 752.0
316 | margin_bottom = 157.0
317 | text = "The project contains reusable UI components to create in-game debug tools efficiently.
318 | We're designing these tools both for debugging purposes and to visualize information for tutorials."
319 | autowrap = true
320 |
321 | [node name="HSeparator" type="HSeparator" parent="Panel2/Column"]
322 | margin_top = 165.0
323 | margin_right = 752.0
324 | margin_bottom = 169.0
325 |
326 | [node name="Title4" parent="Panel2/Column" instance=ExtResource( 4 )]
327 | anchor_left = 0.0
328 | anchor_top = 0.0
329 | anchor_right = 0.0
330 | anchor_bottom = 0.0
331 | margin_left = 0.0
332 | margin_top = 177.0
333 | margin_right = 752.0
334 | margin_bottom = 213.0
335 | text = "Design Principles"
336 |
337 | [node name="Label2" type="RichTextLabel" parent="Panel2/Column"]
338 | margin_top = 221.0
339 | margin_right = 752.0
340 | margin_bottom = 361.0
341 | rect_min_size = Vector2( 0, 140 )
342 | bbcode_enabled = true
343 | bbcode_text = "- [b]Simple[/b] and sober. We're going for a flat design that doesn't draw too much attention away from what's happening in the game.
344 | - [b]Informative[/b]. Colors, shape, and animations should be intentional and convey meaning."
345 | text = "- Simple and sober. We're going for a flat design that doesn't draw too much attention away from what's happening in the game.
346 | - Informative. Colors, shape, and animations should be intentional and convey meaning."
347 | scroll_active = false
348 |
--------------------------------------------------------------------------------
/img/gdquest-ui-debug-tools-banner.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------