Put the whole look into one project theme
themes/main_theme.tres is the project theme. It holds Godot's default look for every control type the game uses, plus named styles for the game's own look (popups, the background, spacers, list rows, title and text sizes, highlights) and a palette for the popup dimming. Scenes and scripts name these styles instead of setting colours, sizes or style boxes, and the five old theme files are gone. themes/README.md explains the styles and how to make a new theme. The screenshot tour now uses the real character pictures, so the layout baseline is taken again. Screenshots are pixel-identical to before, and test_theme.gd checks that the look stays in the theme.
This commit was merged in pull request #36.
This commit is contained in:
1 parent
a7bf38c5f9
commit
8b71723a34
39 files changed
+3283
-1869
No files matched your search
+8
-33
@@ -2,58 +2,33 @@ class_name ListRow
|
|||||||
extends PanelContainer
|
extends PanelContainer
|
||||||
## One item in a list of names, such as the inspiration list or a sync result column.
|
## One item in a list of names, such as the inspiration list or a sync result column.
|
||||||
##
|
##
|
||||||
## Every row has its own background, alternating between two shades, so it is clear
|
## Every row has its own background, alternating between the theme's [code]ListRowEven[/code]
|
||||||
## where an item starts even when its text wraps over several lines.
|
## and [code]ListRowOdd[/code] styles, so it is clear where an item starts even when its
|
||||||
|
## text wraps over several lines.
|
||||||
const EVEN_BACKGROUND: Color = Color(1, 1, 1, 0.05)
|
|
||||||
const ODD_BACKGROUND: Color = Color(1, 1, 1, 0.11)
|
|
||||||
|
|
||||||
static var _even_style: StyleBoxFlat
|
|
||||||
static var _odd_style: StyleBoxFlat
|
|
||||||
|
|
||||||
## The label showing the item's text.
|
## The label showing the item's text.
|
||||||
var label: Label
|
var label: Label
|
||||||
|
|
||||||
## The item's text.
|
## The item's text.
|
||||||
var text: String:
|
var text: String:
|
||||||
|
|
||||||
|
|
||||||
get:
|
get:
|
||||||
return label.text
|
return label.text
|
||||||
|
|
||||||
|
|
||||||
## Creates the row for item number [param row] (counting from 0) in a list.
|
## Creates the row for item number [param row] (counting from 0) in a list. The text uses
|
||||||
|
## the theme's [param label_style], e.g. [code]TextLarge[/code].
|
||||||
static func create(
|
static func create(
|
||||||
item_text: String,
|
item_text: String,
|
||||||
row: int,
|
row: int,
|
||||||
font_size: int,
|
label_style: StringName,
|
||||||
alignment: HorizontalAlignment = HORIZONTAL_ALIGNMENT_LEFT,
|
alignment: HorizontalAlignment = HORIZONTAL_ALIGNMENT_LEFT,
|
||||||
) -> ListRow:
|
) -> ListRow:
|
||||||
var list_row: ListRow = ListRow.new()
|
var list_row: ListRow = ListRow.new()
|
||||||
list_row.add_theme_stylebox_override("panel", _style(row % 2 != 0))
|
list_row.theme_type_variation = &"ListRowOdd" if row % 2 != 0 else &"ListRowEven"
|
||||||
list_row.label = Label.new()
|
list_row.label = Label.new()
|
||||||
list_row.label.add_theme_font_size_override("font_size", font_size)
|
list_row.label.theme_type_variation = label_style
|
||||||
list_row.label.text = item_text
|
list_row.label.text = item_text
|
||||||
list_row.label.horizontal_alignment = alignment
|
list_row.label.horizontal_alignment = alignment
|
||||||
list_row.label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
list_row.label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||||
list_row.add_child(list_row.label)
|
list_row.add_child(list_row.label)
|
||||||
return list_row
|
return list_row
|
||||||
|
|
||||||
|
|
||||||
# Rows share two styles instead of each creating its own
|
|
||||||
static func _style(odd: bool) -> StyleBoxFlat:
|
|
||||||
if _even_style == null:
|
|
||||||
_even_style = _make_style(EVEN_BACKGROUND)
|
|
||||||
_odd_style = _make_style(ODD_BACKGROUND)
|
|
||||||
return _odd_style if odd else _even_style
|
|
||||||
|
|
||||||
|
|
||||||
static func _make_style(background: Color) -> StyleBoxFlat:
|
|
||||||
var style: StyleBoxFlat = StyleBoxFlat.new()
|
|
||||||
style.bg_color = background
|
|
||||||
style.set_corner_radius_all(4)
|
|
||||||
style.content_margin_left = 8
|
|
||||||
style.content_margin_right = 8
|
|
||||||
style.content_margin_top = 2
|
|
||||||
style.content_margin_bottom = 2
|
|
||||||
return style
|
|
||||||
+10
-2
@@ -8,7 +8,6 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://bd1by80q1v27e" path="res://popups/ShortcutsPopup.tscn" id="13_8eebo"]
|
[ext_resource type="PackedScene" uid="uid://bd1by80q1v27e" path="res://popups/ShortcutsPopup.tscn" id="13_8eebo"]
|
||||||
[ext_resource type="PackedScene" uid="uid://btupbowehiyyu" path="res://popups/QRPopup.tscn" id="15_qr_window"]
|
[ext_resource type="PackedScene" uid="uid://btupbowehiyyu" path="res://popups/QRPopup.tscn" id="15_qr_window"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cp54idaudb8dp" path="res://popups/AboutPopup.tscn" id="16_about_window"]
|
[ext_resource type="PackedScene" uid="uid://cp54idaudb8dp" path="res://popups/AboutPopup.tscn" id="16_about_window"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bijh5h5yrivm3" path="res://popups/LogPopup.tscn" id="14_26rwn"]
|
[ext_resource type="PackedScene" uid="uid://bijh5h5yrivm3" path="res://popups/LogPopup.tscn" id="14_26rwn"]
|
||||||
|
|
||||||
[node name="MainWindow" type="Control" unique_id=407149696]
|
[node name="MainWindow" type="Control" unique_id=407149696]
|
||||||
@@ -20,6 +19,16 @@ grow_horizontal = 2
|
|||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_eu0t5")
|
script = ExtResource("1_eu0t5")
|
||||||
|
|
||||||
|
[node name="Background" type="Panel" parent="." unique_id=1093825566]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
theme_type_variation = &"WindowBackground"
|
||||||
|
|
||||||
[node name="TopBar" parent="." unique_id=1734261695 instance=ExtResource("top_bar_scene")]
|
[node name="TopBar" parent="." unique_id=1734261695 instance=ExtResource("top_bar_scene")]
|
||||||
|
|
||||||
[node name="Quiz" parent="." unique_id=1357908642 instance=ExtResource("quiz_scene")]
|
[node name="Quiz" parent="." unique_id=1357908642 instance=ExtResource("quiz_scene")]
|
||||||
@@ -60,7 +69,6 @@ offset_right = 1262.0
|
|||||||
offset_bottom = 860.0
|
offset_bottom = 860.0
|
||||||
|
|
||||||
[node name="StatisticsPopupPanel" type="PopupPanel" parent="." unique_id=298311407]
|
[node name="StatisticsPopupPanel" type="PopupPanel" parent="." unique_id=298311407]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
oversampling_override = 1.0
|
oversampling_override = 1.0
|
||||||
initial_position = 2
|
initial_position = 2
|
||||||
size = Vector2i(450, 100)
|
size = Vector2i(450, 100)
|
||||||
|
|||||||
+1
-5
@@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" path="res://main/top_bar.gd" id="top_bar_script"]
|
[ext_resource type="Script" path="res://main/top_bar.gd" id="top_bar_script"]
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_ychxr"]
|
|
||||||
font_size = 25
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_ujjlu"]
|
[sub_resource type="InputEventKey" id="InputEventKey_ujjlu"]
|
||||||
device = -1
|
device = -1
|
||||||
alt_pressed = true
|
alt_pressed = true
|
||||||
@@ -34,8 +31,8 @@ offset_top = 12.0
|
|||||||
offset_right = 369.0
|
offset_right = 369.0
|
||||||
offset_bottom = 50.0
|
offset_bottom = 50.0
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
|
theme_type_variation = &"Title"
|
||||||
text = "Music Player Randomizer"
|
text = "Music Player Randomizer"
|
||||||
label_settings = SubResource("LabelSettings_ychxr")
|
|
||||||
|
|
||||||
[node name="SyncButton" type="Button" parent="." unique_id=1228313556]
|
[node name="SyncButton" type="Button" parent="." unique_id=1228313556]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
@@ -97,4 +94,3 @@ offset_bottom = 48.0
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
action_mode = 0
|
action_mode = 0
|
||||||
text = "QR"
|
text = "QR"
|
||||||
|
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
[gd_scene format=3 uid="uid://cp54idaudb8dp"]
|
[gd_scene format=3 uid="uid://cp54idaudb8dp"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b7bh0of7olbcb" path="res://popups/about_popup.gd" id="1_about_script"]
|
[ext_resource type="Script" uid="uid://b7bh0of7olbcb" path="res://popups/about_popup.gd" id="1_about_script"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[node name="AboutPopup" type="Control" unique_id=1626010355 node_paths=PackedStringArray("panel")]
|
[node name="AboutPopup" type="Control" unique_id=1626010355 node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -19,6 +17,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 600.0
|
offset_right = 600.0
|
||||||
offset_bottom = 640.0
|
offset_bottom = 640.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="TitleLabel" type="Label" parent="AboutPanel" unique_id=200295721]
|
[node name="TitleLabel" type="Label" parent="AboutPanel" unique_id=200295721]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://c7ecjj2af6usf"]
|
[gd_scene format=3 uid="uid://c7ecjj2af6usf"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://i35b3scbpwpu" path="res://popups/character_card.gd" id="1_pjt0s"]
|
[ext_resource type="Script" uid="uid://i35b3scbpwpu" path="res://popups/character_card.gd" id="1_pjt0s"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cv3hdd6bsruau" path="res://icon.svg" id="2_pjt0s"]
|
[ext_resource type="Texture2D" uid="uid://cv3hdd6bsruau" path="res://icon.svg" id="2_pjt0s"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pjt0s"]
|
|
||||||
bg_color = Color(0.302, 0.302, 0.302, 1)
|
|
||||||
|
|
||||||
[node name="CharacterCard" type="Control"]
|
[node name="CharacterCard" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
@@ -15,7 +12,7 @@ script = ExtResource("1_pjt0s")
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 240.0
|
offset_right = 240.0
|
||||||
offset_bottom = 145.0
|
offset_bottom = 145.0
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_pjt0s")
|
theme_type_variation = &"CharacterCard"
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="Panel"]
|
[node name="MarginContainer" type="MarginContainer" parent="Panel"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://cdy4kvemwaiom"]
|
[gd_scene format=3 uid="uid://cdy4kvemwaiom"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cvffg87wr6r3y" path="res://popups/character_select_popup.gd" id="1_h4tdp"]
|
[ext_resource type="Script" uid="uid://cvffg87wr6r3y" path="res://popups/character_select_popup.gd" id="1_h4tdp"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_p4iny"]
|
|
||||||
font_size = 25
|
|
||||||
|
|
||||||
[node name="CharacterSelectPopup" type="Control" node_paths=PackedStringArray("panel")]
|
[node name="CharacterSelectPopup" type="Control" node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
script = ExtResource("1_h4tdp")
|
script = ExtResource("1_h4tdp")
|
||||||
@@ -18,6 +13,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 1290.0
|
offset_right = 1290.0
|
||||||
offset_bottom = 665.0
|
offset_bottom = 665.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="CharacterPanel"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="CharacterPanel"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
@@ -29,8 +25,8 @@ size_flags_horizontal = 3
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
|
theme_type_variation = &"Title"
|
||||||
text = "Character Select"
|
text = "Character Select"
|
||||||
label_settings = SubResource("LabelSettings_p4iny")
|
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="CharacterPanel/VBoxContainer"]
|
[node name="MarginContainer" type="MarginContainer" parent="CharacterPanel/VBoxContainer"]
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
[gd_scene load_steps=2 format=3 uid="uid://bijh5h5yrivm3"]
|
[gd_scene format=3 uid="uid://bijh5h5yrivm3"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cw41y87l64qo7" path="res://popups/log_popup.gd" id="1_q72ua"]
|
[ext_resource type="Script" uid="uid://cw41y87l64qo7" path="res://popups/log_popup.gd" id="1_q72ua"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[node name="LogPopup" type="Control" node_paths=PackedStringArray("panel")]
|
[node name="LogPopup" type="Control" node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
custom_minimum_size = Vector2(700, 700)
|
custom_minimum_size = Vector2(700, 700)
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -22,13 +20,14 @@ custom_minimum_size = Vector2(700, 700)
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 700.0
|
offset_right = 700.0
|
||||||
offset_bottom = 700.0
|
offset_bottom = 700.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="TitleLabel" type="Label" parent="LogPanel"]
|
[node name="TitleLabel" type="Label" parent="LogPanel"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_top = 8.0
|
offset_top = 8.0
|
||||||
offset_right = 700.0
|
offset_right = 700.0
|
||||||
offset_bottom = 48.0
|
offset_bottom = 48.0
|
||||||
theme_override_font_sizes/font_size = 25
|
theme_type_variation = &"Title"
|
||||||
text = "Log"
|
text = "Log"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bsa6xg5xos6h7" path="res://popups/qr_popup.gd" id="1_qr_script"]
|
[ext_resource type="Script" uid="uid://bsa6xg5xos6h7" path="res://popups/qr_popup.gd" id="1_qr_script"]
|
||||||
[ext_resource type="Script" uid="uid://dynulhnyq5hpq" path="res://addons/kenyoni/qr_code/qr_code_rect.gd" id="2_jpsxt"]
|
[ext_resource type="Script" uid="uid://dynulhnyq5hpq" path="res://addons/kenyoni/qr_code/qr_code_rect.gd" id="2_jpsxt"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[node name="QRPopup" type="Control" unique_id=1996957585 node_paths=PackedStringArray("panel")]
|
[node name="QRPopup" type="Control" unique_id=1996957585 node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -20,6 +18,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 450.0
|
offset_right = 450.0
|
||||||
offset_bottom = 520.0
|
offset_bottom = 520.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="QRCodeRect" type="TextureRect" parent="QRPanel" unique_id=1054378438]
|
[node name="QRCodeRect" type="TextureRect" parent="QRPanel" unique_id=1054378438]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
[gd_scene format=3 uid="uid://bxydgil1yifps"]
|
[gd_scene format=3 uid="uid://bxydgil1yifps"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bg5yo08638600" path="res://popups/search_popup.gd" id="1_m7bij"]
|
[ext_resource type="Script" uid="uid://bg5yo08638600" path="res://popups/search_popup.gd" id="1_m7bij"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[node name="SearchPopup" type="Control" unique_id=616238617 node_paths=PackedStringArray("panel")]
|
[node name="SearchPopup" type="Control" unique_id=616238617 node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -19,6 +17,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 1152.0
|
offset_right = 1152.0
|
||||||
offset_bottom = 640.0
|
offset_bottom = 640.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="ClearButton" type="Button" parent="." unique_id=1549439398]
|
[node name="ClearButton" type="Button" parent="." unique_id=1549439398]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
[gd_scene format=3 uid="uid://dldpeo5y3l5hq"]
|
[gd_scene format=3 uid="uid://dldpeo5y3l5hq"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dukqyjoduf1af" path="res://popups/settings_popup.gd" id="1_bt55j"]
|
[ext_resource type="Script" uid="uid://dukqyjoduf1af" path="res://popups/settings_popup.gd" id="1_bt55j"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_3xrlm"]
|
|
||||||
font_size = 25
|
|
||||||
|
|
||||||
[node name="SettingsPopup" type="Control" unique_id=1298840328 node_paths=PackedStringArray("panel")]
|
[node name="SettingsPopup" type="Control" unique_id=1298840328 node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -22,6 +17,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 500.0
|
offset_right = 500.0
|
||||||
offset_bottom = 640.0
|
offset_bottom = 640.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="SettingsPanel" unique_id=1325795358]
|
[node name="ScrollContainer" type="ScrollContainer" parent="SettingsPanel" unique_id=1325795358]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
@@ -39,8 +35,8 @@ size_flags_horizontal = 3
|
|||||||
[node name="Label" type="Label" parent="SettingsPanel/ScrollContainer/VBoxContainer" unique_id=1111531402]
|
[node name="Label" type="Label" parent="SettingsPanel/ScrollContainer/VBoxContainer" unique_id=1111531402]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
|
theme_type_variation = &"Title"
|
||||||
text = "Settings"
|
text = "Settings"
|
||||||
label_settings = SubResource("LabelSettings_3xrlm")
|
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="StopAfterCurrentCheckButton" type="CheckButton" parent="SettingsPanel/ScrollContainer/VBoxContainer" unique_id=508305575]
|
[node name="StopAfterCurrentCheckButton" type="CheckButton" parent="SettingsPanel/ScrollContainer/VBoxContainer" unique_id=508305575]
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
[gd_scene load_steps=2 format=3 uid="uid://bd1by80q1v27e"]
|
[gd_scene format=3 uid="uid://bd1by80q1v27e"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://rolypd0cqd6h" path="res://popups/shortcuts_popup.gd" id="1_12pxi"]
|
[ext_resource type="Script" uid="uid://rolypd0cqd6h" path="res://popups/shortcuts_popup.gd" id="1_12pxi"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[node name="ShortcutsPopup" type="Control" node_paths=PackedStringArray("panel")]
|
[node name="ShortcutsPopup" type="Control" node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
custom_minimum_size = Vector2(700, 700)
|
custom_minimum_size = Vector2(700, 700)
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -21,6 +19,7 @@ custom_minimum_size = Vector2(700, 700)
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 40.0
|
offset_right = 40.0
|
||||||
offset_bottom = 40.0
|
offset_bottom = 40.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="ShortcutsPanel"]
|
[node name="ScrollContainer" type="ScrollContainer" parent="ShortcutsPanel"]
|
||||||
custom_minimum_size = Vector2(700, 700)
|
custom_minimum_size = Vector2(700, 700)
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
[gd_scene format=3 uid="uid://dpdem7pdxweb5"]
|
[gd_scene format=3 uid="uid://dpdem7pdxweb5"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://c3ejukwth512a" path="res://popups/sync_popup.gd" id="1_8ba47"]
|
[ext_resource type="Script" uid="uid://c3ejukwth512a" path="res://popups/sync_popup.gd" id="1_8ba47"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_anbfi"]
|
|
||||||
font_size = 25
|
|
||||||
|
|
||||||
[node name="SyncPopup" type="Control" unique_id=1302914356 node_paths=PackedStringArray("panel")]
|
[node name="SyncPopup" type="Control" unique_id=1302914356 node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -22,6 +17,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 1500.0
|
offset_right = 1500.0
|
||||||
offset_bottom = 640.0
|
offset_bottom = 640.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="SyncPanel" unique_id=1289116349]
|
[node name="ScrollContainer" type="ScrollContainer" parent="SyncPanel" unique_id=1289116349]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
@@ -40,8 +36,8 @@ theme_override_constants/separation = 12
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
|
theme_type_variation = &"Title"
|
||||||
text = "Sync"
|
text = "Sync"
|
||||||
label_settings = SubResource("LabelSettings_anbfi")
|
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="SyncTime" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer" unique_id=1344333200]
|
[node name="SyncTime" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer" unique_id=1344333200]
|
||||||
@@ -55,8 +51,8 @@ unique_name_in_owner = true
|
|||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
|
theme_type_variation = &"Title"
|
||||||
text = "No changes since last sync"
|
text = "No changes since last sync"
|
||||||
label_settings = SubResource("LabelSettings_anbfi")
|
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="ProgressHBoxContainer" type="HBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer" unique_id=196414805]
|
[node name="ProgressHBoxContainer" type="HBoxContainer" parent="SyncPanel/ScrollContainer/SyncVBoxContainer" unique_id=196414805]
|
||||||
|
|||||||
@@ -2,13 +2,8 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dxpb22xbwf3t1" path="res://popups/winner_popup.gd" id="1_winner_script"]
|
[ext_resource type="Script" uid="uid://dxpb22xbwf3t1" path="res://popups/winner_popup.gd" id="1_winner_script"]
|
||||||
[ext_resource type="Texture2D" uid="uid://r4as0nmtoa7p" path="res://noCharacter.png" id="2_no_character"]
|
[ext_resource type="Texture2D" uid="uid://r4as0nmtoa7p" path="res://noCharacter.png" id="2_no_character"]
|
||||||
[ext_resource type="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_hr75l"]
|
|
||||||
font_size = 35
|
|
||||||
|
|
||||||
[node name="WinnerPopup" type="Control" unique_id=1111111111 node_paths=PackedStringArray("panel")]
|
[node name="WinnerPopup" type="Control" unique_id=1111111111 node_paths=PackedStringArray("panel")]
|
||||||
theme = ExtResource("popup_theme")
|
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -23,6 +18,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 500.0
|
offset_right = 500.0
|
||||||
offset_bottom = 600.0
|
offset_bottom = 600.0
|
||||||
|
theme_type_variation = &"PopupBackground"
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="WinnerPanel" unique_id=471159349]
|
[node name="VBoxContainer" type="VBoxContainer" parent="WinnerPanel" unique_id=471159349]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
@@ -44,8 +40,8 @@ stretch_mode = 5
|
|||||||
[node name="WinnerLabel" type="Label" parent="WinnerPanel/VBoxContainer" unique_id=1437597286]
|
[node name="WinnerLabel" type="Label" parent="WinnerPanel/VBoxContainer" unique_id=1437597286]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
theme_type_variation = &"TitleMedium"
|
||||||
text = "Winner!"
|
text = "Winner!"
|
||||||
label_settings = SubResource("LabelSettings_hr75l")
|
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 2
|
vertical_alignment = 2
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ func add_log_row(text: String) -> void:
|
|||||||
|
|
||||||
func make_log_label(row: String) -> Label:
|
func make_log_label(row: String) -> Label:
|
||||||
var log_label: Label = Label.new()
|
var log_label: Label = Label.new()
|
||||||
log_label.add_theme_font_size_override("font_size", 20)
|
log_label.theme_type_variation = &"TextLarge"
|
||||||
log_label.text = row
|
log_label.text = row
|
||||||
log_label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
log_label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||||
return log_label
|
return log_label
|
||||||
|
|||||||
@@ -15,10 +15,10 @@ var _popups: Array[BasePopup] = []
|
|||||||
static func add_to(parent: Control, popups: Array[BasePopup]) -> PopupBackdrop:
|
static func add_to(parent: Control, popups: Array[BasePopup]) -> PopupBackdrop:
|
||||||
var backdrop: PopupBackdrop = PopupBackdrop.new()
|
var backdrop: PopupBackdrop = PopupBackdrop.new()
|
||||||
backdrop.name = "PopupBackdrop"
|
backdrop.name = "PopupBackdrop"
|
||||||
backdrop.color = Color(0, 0, 0, 0.55)
|
|
||||||
backdrop.mouse_filter = Control.MOUSE_FILTER_STOP
|
backdrop.mouse_filter = Control.MOUSE_FILTER_STOP
|
||||||
backdrop._popups = popups
|
backdrop._popups = popups
|
||||||
parent.add_child(backdrop)
|
parent.add_child(backdrop)
|
||||||
|
backdrop.color = backdrop.get_theme_color(&"backdrop", &"Palette")
|
||||||
backdrop.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
backdrop.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
||||||
for popup: BasePopup in popups:
|
for popup: BasePopup in popups:
|
||||||
parent.move_child(popup, -1)
|
parent.move_child(popup, -1)
|
||||||
|
|||||||
@@ -25,15 +25,12 @@ var shortcuts_dic: Dictionary = {
|
|||||||
@onready var shortcuts_panel: Panel = %ShortcutsPanel
|
@onready var shortcuts_panel: Panel = %ShortcutsPanel
|
||||||
|
|
||||||
|
|
||||||
#Color(0.18, 0.18, 0.18)
|
|
||||||
#Color(0.302, 0.302, 0.302)
|
|
||||||
#Color(0.259, 0.259, 0.259)
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
shortcuts_dic.sort()
|
shortcuts_dic.sort()
|
||||||
Settings.delete_children(shortcuts_vbox)
|
Settings.delete_children(shortcuts_vbox)
|
||||||
|
|
||||||
var title: Label = Label.new()
|
var title: Label = Label.new()
|
||||||
title.add_theme_font_size_override("font_size", 20)
|
title.theme_type_variation = &"TextLarge"
|
||||||
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
title.text = "Shortcuts"
|
title.text = "Shortcuts"
|
||||||
shortcuts_vbox.add_child(title)
|
shortcuts_vbox.add_child(title)
|
||||||
@@ -45,23 +42,21 @@ func _ready() -> void:
|
|||||||
hbox.alignment = BoxContainer.ALIGNMENT_CENTER
|
hbox.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||||
|
|
||||||
var label: Label = Label.new()
|
var label: Label = Label.new()
|
||||||
label.add_theme_font_size_override("font_size", 20)
|
label.theme_type_variation = &"TextLarge"
|
||||||
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
label.text = shortcut
|
label.text = shortcut
|
||||||
label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||||
label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||||
|
|
||||||
var label2: Label = Label.new()
|
var label2: Label = Label.new()
|
||||||
label2.add_theme_font_size_override("font_size", 20)
|
label2.theme_type_variation = &"TextLarge"
|
||||||
label2.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
label2.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
label2.text = shortcuts_dic[shortcut]
|
label2.text = shortcuts_dic[shortcut]
|
||||||
label2.autowrap_mode = TextServer.AUTOWRAP_WORD
|
label2.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||||
label2.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
label2.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||||
|
|
||||||
if count % 2 == 0:
|
if count % 2 == 0:
|
||||||
var new_stylebox_normal: Resource = panel.get_theme_stylebox("panel").duplicate()
|
panel.theme_type_variation = &"ShortcutRowDark"
|
||||||
new_stylebox_normal.bg_color = Color(0.18, 0.18, 0.18)
|
|
||||||
panel.add_theme_stylebox_override("panel", new_stylebox_normal)
|
|
||||||
|
|
||||||
hbox.add_child(label)
|
hbox.add_child(label)
|
||||||
hbox.add_child(label2)
|
hbox.add_child(label2)
|
||||||
|
|||||||
@@ -171,19 +171,16 @@ func list_visible(vbox: VBoxContainer, separator: VSeparator) -> void:
|
|||||||
|
|
||||||
func make_header_label(vbox: VBoxContainer, text: String) -> void:
|
func make_header_label(vbox: VBoxContainer, text: String) -> void:
|
||||||
var label: Label = Label.new()
|
var label: Label = Label.new()
|
||||||
label.add_theme_font_size_override("font_size", 20)
|
label.theme_type_variation = &"HighlightLarge"
|
||||||
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
label.add_theme_color_override("font_color", Color(1, 0.5, 0))
|
|
||||||
label.text = text
|
label.text = text
|
||||||
vbox.add_child(label)
|
vbox.add_child(label)
|
||||||
|
|
||||||
|
|
||||||
# Items alternate between white and orange text as well as background shade
|
# Items alternate between white and orange text as well as background shade
|
||||||
func make_soundtrack_row(text: String, row: int) -> ListRow:
|
func make_soundtrack_row(text: String, row: int) -> ListRow:
|
||||||
var list_row: ListRow = ListRow.create(text, row, 18, HORIZONTAL_ALIGNMENT_CENTER)
|
var label_style: StringName = &"HighlightMedium" if row % 2 != 0 else &"TextMedium"
|
||||||
if row % 2 != 0:
|
return ListRow.create(text, row, label_style, HORIZONTAL_ALIGNMENT_CENTER)
|
||||||
list_row.label.add_theme_color_override("font_color", Color(1, 0.5, 0))
|
|
||||||
return list_row
|
|
||||||
|
|
||||||
|
|
||||||
func reset_sync_result() -> void:
|
func reset_sync_result() -> void:
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ project/assembly_name="MusicPlayer"
|
|||||||
|
|
||||||
enabled=PackedStringArray("res://addons/kenyoni/qr_code/plugin.cfg", "res://addons/gdUnit4/plugin.cfg")
|
enabled=PackedStringArray("res://addons/kenyoni/qr_code/plugin.cfg", "res://addons/gdUnit4/plugin.cfg")
|
||||||
|
|
||||||
|
[gui]
|
||||||
|
|
||||||
|
theme/custom="res://themes/main_theme.tres"
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
ui_accept={
|
ui_accept={
|
||||||
|
|||||||
@@ -2,13 +2,12 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" path="res://quiz/music_list_panel.gd" id="part_script"]
|
[ext_resource type="Script" path="res://quiz/music_list_panel.gd" id="part_script"]
|
||||||
[ext_resource type="Script" uid="uid://gf1bk6xbe3j" path="res://quiz/scroll_to_end_container.gd" id="7_dj026"]
|
[ext_resource type="Script" uid="uid://gf1bk6xbe3j" path="res://quiz/scroll_to_end_container.gd" id="7_dj026"]
|
||||||
[ext_resource type="Theme" uid="uid://rxexo3ur85as" path="res://themes/light_gray_theme.tres" id="7_wxbv6"]
|
|
||||||
|
|
||||||
[node name="MusicListPanel" type="PanelContainer" unique_id=2011292375]
|
[node name="MusicListPanel" type="PanelContainer" unique_id=2011292375]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
theme = ExtResource("7_wxbv6")
|
|
||||||
offset_right = 1088.0
|
offset_right = 1088.0
|
||||||
offset_bottom = 512.0
|
offset_bottom = 512.0
|
||||||
|
theme_type_variation = &"MusicList"
|
||||||
script = ExtResource("part_script")
|
script = ExtResource("part_script")
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=707750459]
|
[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=707750459]
|
||||||
|
|||||||
@@ -2,12 +2,6 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" path="res://quiz/now_playing.gd" id="part_script"]
|
[ext_resource type="Script" path="res://quiz/now_playing.gd" id="part_script"]
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_qspbu"]
|
|
||||||
font_size = 50
|
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_3m52w"]
|
|
||||||
font_size = 35
|
|
||||||
|
|
||||||
[node name="NowPlaying" type="VBoxContainer" unique_id=42468498]
|
[node name="NowPlaying" type="VBoxContainer" unique_id=42468498]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
offset_right = 1088.0
|
offset_right = 1088.0
|
||||||
@@ -17,13 +11,13 @@ script = ExtResource("part_script")
|
|||||||
[node name="SoundtrackLabel" type="Label" parent="." unique_id=173147793]
|
[node name="SoundtrackLabel" type="Label" parent="." unique_id=173147793]
|
||||||
custom_minimum_size = Vector2(1, 1)
|
custom_minimum_size = Vector2(1, 1)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
label_settings = SubResource("LabelSettings_qspbu")
|
theme_type_variation = &"TitleLarge"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
|
|
||||||
[node name="SongLabel" type="Label" parent="." unique_id=1687490027]
|
[node name="SongLabel" type="Label" parent="." unique_id=1687490027]
|
||||||
custom_minimum_size = Vector2(1, 1)
|
custom_minimum_size = Vector2(1, 1)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
label_settings = SubResource("LabelSettings_3m52w")
|
theme_type_variation = &"TitleMedium"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
+6
-21
@@ -1,24 +1,9 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://cslogy2csnd7a"]
|
[gd_scene format=3 uid="uid://cslogy2csnd7a"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dl6no2wr2c86y" path="res://quiz/player_row.gd" id="1_if4kc"]
|
[ext_resource type="Script" uid="uid://dl6no2wr2c86y" path="res://quiz/player_row.gd" id="1_if4kc"]
|
||||||
[ext_resource type="Texture2D" uid="uid://r4as0nmtoa7p" path="res://noCharacter.png" id="2_hpj3s"]
|
[ext_resource type="Texture2D" uid="uid://r4as0nmtoa7p" path="res://noCharacter.png" id="2_hpj3s"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b2kj6m8qpsgb1" path="res://icons/person_remove_light.svg" id="3_j3uxe"]
|
[ext_resource type="Texture2D" uid="uid://b2kj6m8qpsgb1" path="res://icons/person_remove_light.svg" id="3_j3uxe"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_821k2"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_w10e8"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_78a8g"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i56hb"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_b2crt"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
|
|
||||||
[node name="PlayerRow" type="Control"]
|
[node name="PlayerRow" type="Control"]
|
||||||
custom_minimum_size = Vector2(2.08165e-12, 40)
|
custom_minimum_size = Vector2(2.08165e-12, 40)
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
@@ -39,7 +24,7 @@ grow_vertical = 2
|
|||||||
[node name="Panel4" type="Panel" parent="HBoxContainer"]
|
[node name="Panel4" type="Panel" parent="HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(5, 40)
|
custom_minimum_size = Vector2(5, 40)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_821k2")
|
theme_type_variation = &"DarkSpacer"
|
||||||
|
|
||||||
[node name="Name" type="Label" parent="HBoxContainer"]
|
[node name="Name" type="Label" parent="HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -55,7 +40,7 @@ text_overrun_behavior = 3
|
|||||||
[node name="Panel3" type="Panel" parent="HBoxContainer"]
|
[node name="Panel3" type="Panel" parent="HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(16, 2.08165e-12)
|
custom_minimum_size = Vector2(16, 2.08165e-12)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_w10e8")
|
theme_type_variation = &"DarkSpacer"
|
||||||
|
|
||||||
[node name="Character" type="TextureButton" parent="HBoxContainer"]
|
[node name="Character" type="TextureButton" parent="HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -70,7 +55,7 @@ stretch_mode = 5
|
|||||||
[node name="Panel2" type="Panel" parent="HBoxContainer"]
|
[node name="Panel2" type="Panel" parent="HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(30, 40)
|
custom_minimum_size = Vector2(30, 40)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_78a8g")
|
theme_type_variation = &"DarkSpacer"
|
||||||
|
|
||||||
[node name="AddPoint" type="Button" parent="HBoxContainer"]
|
[node name="AddPoint" type="Button" parent="HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -83,7 +68,7 @@ text = "+1"
|
|||||||
[node name="Panel5" type="Panel" parent="HBoxContainer"]
|
[node name="Panel5" type="Panel" parent="HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(3, 40)
|
custom_minimum_size = Vector2(3, 40)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_i56hb")
|
theme_type_variation = &"DarkSpacer"
|
||||||
|
|
||||||
[node name="RemovePoint" type="Button" parent="HBoxContainer"]
|
[node name="RemovePoint" type="Button" parent="HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -96,7 +81,7 @@ text = "-1"
|
|||||||
[node name="Panel" type="Panel" parent="HBoxContainer"]
|
[node name="Panel" type="Panel" parent="HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(30, 40)
|
custom_minimum_size = Vector2(30, 40)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_b2crt")
|
theme_type_variation = &"DarkSpacer"
|
||||||
|
|
||||||
[node name="RemovePlayer" type="TextureButton" parent="HBoxContainer"]
|
[node name="RemovePlayer" type="TextureButton" parent="HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -13,12 +13,6 @@ unicode = 63743
|
|||||||
[sub_resource type="Shortcut" id="Shortcut_jafqj"]
|
[sub_resource type="Shortcut" id="Shortcut_jafqj"]
|
||||||
events = [SubResource("InputEventKey_03bm3")]
|
events = [SubResource("InputEventKey_03bm3")]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qk7sj"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k1ygi"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
|
|
||||||
[node name="PlayersPanel" type="PanelContainer" unique_id=1708375945]
|
[node name="PlayersPanel" type="PanelContainer" unique_id=1708375945]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
offset_right = 641.0
|
offset_right = 641.0
|
||||||
@@ -60,7 +54,7 @@ layout_mode = 2
|
|||||||
[node name="Panel" type="Panel" parent="VBoxContainer/AddPlayerContainer" unique_id=1569854056]
|
[node name="Panel" type="Panel" parent="VBoxContainer/AddPlayerContainer" unique_id=1569854056]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_qk7sj")
|
theme_type_variation = &"DarkSpacer"
|
||||||
|
|
||||||
[node name="PlayerNameField" type="TextEdit" parent="VBoxContainer/AddPlayerContainer" unique_id=332535327]
|
[node name="PlayerNameField" type="TextEdit" parent="VBoxContainer/AddPlayerContainer" unique_id=332535327]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -80,7 +74,7 @@ text = "Add"
|
|||||||
custom_minimum_size = Vector2(2.08165e-12, 40)
|
custom_minimum_size = Vector2(2.08165e-12, 40)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_k1ygi")
|
theme_type_variation = &"DarkSpacer"
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer" unique_id=1000000001]
|
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer" unique_id=1000000001]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|||||||
+3
-7
@@ -1,15 +1,13 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://1jbtmhbqolqe"]
|
[gd_scene format=3 uid="uid://1jbtmhbqolqe"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://c8r7ykphss4c2" path="res://characters/Link.png" id="1_ll28s"]
|
[ext_resource type="Texture2D" uid="uid://c8r7ykphss4c2" path="res://characters/Link.png" id="1_ll28s"]
|
||||||
[ext_resource type="Script" uid="uid://cjo13wixip8mq" path="res://quiz/song_row.gd" id="1_lspki"]
|
[ext_resource type="Script" uid="uid://cjo13wixip8mq" path="res://quiz/song_row.gd" id="1_lspki"]
|
||||||
[ext_resource type="Theme" uid="uid://8bllart6xn1f" path="res://themes/default_theme.tres" id="1_x7fq8"]
|
|
||||||
[ext_resource type="StyleBox" uid="uid://bsv6yb0yir04l" path="res://themes/style_box_flat.tres" id="3_5h84f"]
|
|
||||||
|
|
||||||
[node name="SongRow" type="PanelContainer"]
|
[node name="SongRow" type="PanelContainer"]
|
||||||
custom_minimum_size = Vector2(1000, 0)
|
custom_minimum_size = Vector2(1000, 0)
|
||||||
offset_right = 1088.0
|
offset_right = 1088.0
|
||||||
offset_bottom = 59.0
|
offset_bottom = 59.0
|
||||||
theme = ExtResource("1_x7fq8")
|
theme_type_variation = &"SongRow"
|
||||||
script = ExtResource("1_lspki")
|
script = ExtResource("1_lspki")
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||||
@@ -23,9 +21,7 @@ custom_minimum_size = Vector2(865, 28)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
mouse_filter = 1
|
mouse_filter = 1
|
||||||
theme = ExtResource("1_x7fq8")
|
theme_type_variation = &"SongRowLabel"
|
||||||
theme_override_font_sizes/font_size = 20
|
|
||||||
theme_override_styles/normal = ExtResource("3_5h84f")
|
|
||||||
text = "Final Fantasy Dissidia 012 Duodecim (Sista Fantasin Meningsskiljaktigheter 012 Tolv) - 'Crystal Cave -arrange-'' from FINAL FANTASY III"
|
text = "Final Fantasy Dissidia 012 Duodecim (Sista Fantasin Meningsskiljaktigheter 012 Tolv) - 'Crystal Cave -arrange-'' from FINAL FANTASY III"
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
|
|
||||||
|
|||||||
@@ -65,4 +65,4 @@ func show_soundtracks(list: Array) -> void:
|
|||||||
soundtracks.append_array(list)
|
soundtracks.append_array(list)
|
||||||
Settings.delete_children(_rows)
|
Settings.delete_children(_rows)
|
||||||
for i: int in soundtracks.size():
|
for i: int in soundtracks.size():
|
||||||
_rows.add_child(ListRow.create(soundtracks[i], i, 20))
|
_rows.add_child(ListRow.create(soundtracks[i], i, &"TextLarge"))
|
||||||
+1
-1
@@ -19,7 +19,7 @@ func set_label() -> void:
|
|||||||
var size_to_change: int = song_object.players_given_point.size() * 50
|
var size_to_change: int = song_object.players_given_point.size() * 50
|
||||||
song_list_label.custom_minimum_size = Vector2(1000 - size_to_change, 28)
|
song_list_label.custom_minimum_size = Vector2(1000 - size_to_change, 28)
|
||||||
if song_object.is_playing:
|
if song_object.is_playing:
|
||||||
song_list_label.add_theme_color_override("font_color", Color(1, 0.5, 0))
|
song_list_label.theme_type_variation = &"SongRowLabelPlaying"
|
||||||
song_list_label.text = song_object.get_song_info()
|
song_list_label.text = song_object.get_song_info()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2085
-1587
File diff suppressed because it is too large.
Load diff
+22
-1
@@ -27,6 +27,9 @@ const SYNC_RESULT: Dictionary = {
|
|||||||
"total_time": "00:00:03",
|
"total_time": "00:00:03",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## The character pictures the fake server hands out.
|
||||||
|
const CHARACTERS_DIR: String = "res://characters"
|
||||||
|
|
||||||
## Popups in the order the tour opens them: the state name, then the popup's node. The
|
## Popups in the order the tour opens them: the state name, then the popup's node. The
|
||||||
## state names are what the popups were first called, so screenshots taken before they
|
## state names are what the popups were first called, so screenshots taken before they
|
||||||
## were renamed can still be compared with new ones.
|
## were renamed can still be compared with new ones.
|
||||||
@@ -53,7 +56,11 @@ static func make_server() -> FakeHttpTransport:
|
|||||||
server.respond_json("/music/all", SOUNDTRACKS)
|
server.respond_json("/music/all", SOUNDTRACKS)
|
||||||
server.respond_json("/music/all/order", SOUNDTRACKS)
|
server.respond_json("/music/all/order", SOUNDTRACKS)
|
||||||
server.respond_json("/music/list", [])
|
server.respond_json("/music/list", [])
|
||||||
server.respond_json("/characters", [])
|
var characters: Array[String] = character_names()
|
||||||
|
server.respond_json("/characters", characters)
|
||||||
|
for character_name: String in characters:
|
||||||
|
server.respond_bytes("/character?name=" + character_name.uri_encode(),
|
||||||
|
FileAccess.get_file_as_bytes(CHARACTERS_DIR.path_join(character_name)))
|
||||||
server.respond_bytes("/music/rand", mp3)
|
server.respond_bytes("/music/rand", mp3)
|
||||||
server.respond_bytes("/music/addQue", PackedByteArray())
|
server.respond_bytes("/music/addQue", PackedByteArray())
|
||||||
server.respond_json("/music/info", SONG_INFO)
|
server.respond_json("/music/info", SONG_INFO)
|
||||||
@@ -64,6 +71,16 @@ static func make_server() -> FakeHttpTransport:
|
|||||||
return server
|
return server
|
||||||
|
|
||||||
|
|
||||||
|
## The pictures in [constant CHARACTERS_DIR], sorted by name.
|
||||||
|
static func character_names() -> Array[String]:
|
||||||
|
var names: Array[String] = []
|
||||||
|
for file_name: String in DirAccess.get_files_at(CHARACTERS_DIR):
|
||||||
|
if file_name.ends_with(".png"):
|
||||||
|
names.append(file_name)
|
||||||
|
names.sort()
|
||||||
|
return names
|
||||||
|
|
||||||
|
|
||||||
## Puts Settings and Playlist in the state the tour expects. Call it before the main
|
## Puts Settings and Playlist in the state the tour expects. Call it before the main
|
||||||
## window is created.
|
## window is created.
|
||||||
static func prepare_autoloads() -> void:
|
static func prepare_autoloads() -> void:
|
||||||
@@ -104,6 +121,10 @@ func run(on_state: Callable) -> void:
|
|||||||
_call("play_next_song")
|
_call("play_next_song")
|
||||||
await _settle()
|
await _settle()
|
||||||
_freeze_music_player()
|
_freeze_music_player()
|
||||||
|
var picture: Image = Image.new()
|
||||||
|
picture.load_png_from_buffer(
|
||||||
|
FileAccess.get_file_as_bytes(CHARACTERS_DIR.path_join(character_names()[0])))
|
||||||
|
_player_row(0).new_character_selected(ImageTexture.create_from_image(picture))
|
||||||
_player_row(0).add_point()
|
_player_row(0).add_point()
|
||||||
_player_row(0).add_point()
|
_player_row(0).add_point()
|
||||||
_player_row(1).add_point()
|
_player_row(1).add_point()
|
||||||
|
|||||||
@@ -1,73 +1,14 @@
|
|||||||
extends GdUnitTestSuite
|
extends GdUnitTestSuite
|
||||||
## Checks that every node of the main window is where it was before the window was
|
## Checks that every node of the main window is where it was when the baseline was taken.
|
||||||
## split into scenes.
|
|
||||||
##
|
##
|
||||||
## [code]tests/data/layout_baseline.json[/code] was written by
|
## [code]tests/data/layout_baseline.json[/code] is written by
|
||||||
## [code]tools/take_screenshots.gd[/code] before the split. It holds the position, size
|
## [code]tools/take_screenshots.gd[/code] (run it with --headless and copy its layout.json).
|
||||||
## and visibility of every node in each UiTour state, keyed by the node's old path. This
|
## It holds the position, size and visibility of every node in each UiTour state, keyed
|
||||||
## test runs the same tour and compares, after moving each old path to where the node
|
## by the node's path from the main window. Take a new baseline when the layout is
|
||||||
## lives now.
|
## meant to change, e.g. after moving a button.
|
||||||
|
|
||||||
const BASELINE_PATH: String = "res://tests/data/layout_baseline.json"
|
const BASELINE_PATH: String = "res://tests/data/layout_baseline.json"
|
||||||
|
|
||||||
## Where each node of the old main window lives now: its old name, and the path that
|
|
||||||
## replaces it. Nodes that are not listed are still where they were.
|
|
||||||
const MOVED: Dictionary = {
|
|
||||||
# The top bar
|
|
||||||
"TopPanelContainer": "TopBar/TopPanelContainer",
|
|
||||||
"Title": "TopBar/Title",
|
|
||||||
"SearchButton": "TopBar/SearchButton",
|
|
||||||
"SyncButton": "TopBar/SyncButton",
|
|
||||||
"StatisticsButton": "TopBar/StatisticsButton",
|
|
||||||
"ShortcutsButton": "TopBar/ShortcutsButton",
|
|
||||||
"AboutButton": "TopBar/AboutButton",
|
|
||||||
"QRButton": "TopBar/QRButton",
|
|
||||||
# The popups of the main window, renamed from *Window to *Popup
|
|
||||||
"Search": "SearchPopup",
|
|
||||||
"SyncWindow": "SyncPopup",
|
|
||||||
"QRWindow": "QRPopup",
|
|
||||||
"ShortcutsWindow": "ShortcutsPopup",
|
|
||||||
"AboutWindow": "AboutPopup",
|
|
||||||
"Log": "LogPopup",
|
|
||||||
# The quiz and its parts
|
|
||||||
"Open": "Quiz/Open",
|
|
||||||
"FileDialog": "Quiz/FileDialog",
|
|
||||||
"DebugLabel": "Quiz/DebugLabel",
|
|
||||||
"MusicListPanel": "Quiz/MusicListPanel",
|
|
||||||
"Players": "Quiz/PlayersPanel",
|
|
||||||
"ScrollContainer": "Quiz/InspirationList",
|
|
||||||
"VBoxContainer": "Quiz/NowPlaying",
|
|
||||||
"MusicPlayer": "Quiz/MusicPlayer/PlayerBar",
|
|
||||||
"RepeatSongCheckButton": "Quiz/MusicPlayer/RepeatSongCheckButton",
|
|
||||||
"ResetPlaylistButton": "Quiz/QuizToolbar/ResetPlaylistButton",
|
|
||||||
"ResetPointsButton": "Quiz/QuizToolbar/ResetPointsButton",
|
|
||||||
"SettingsButton": "Quiz/QuizToolbar/SettingsButton",
|
|
||||||
"SoundTestButton": "Quiz/QuizToolbar/SoundTestButton",
|
|
||||||
"ShowAnswerButton": "Quiz/SongControls/ShowAnswerButton",
|
|
||||||
"NextButton": "Quiz/SongControls/NextButton",
|
|
||||||
"SettingsWindow": "Quiz/SettingsPopup",
|
|
||||||
"NewCharacterSelect": "Quiz/CharacterSelectPopup",
|
|
||||||
"WinnerWindow": "Quiz/WinnerPopup",
|
|
||||||
}
|
|
||||||
|
|
||||||
## Scenes that were renamed, by their old and new root name. A row added to a list is
|
|
||||||
## named after its scene's root when the name is still free, so these show up deeper in a
|
|
||||||
## path.
|
|
||||||
const RENAMED_SCENES: Dictionary = {
|
|
||||||
"SongListObject": "SongRow",
|
|
||||||
"Player": "PlayerRow",
|
|
||||||
}
|
|
||||||
|
|
||||||
const SYNC_COLUMNS: String = "SyncPopup/SyncPanel/ScrollContainer/SyncVBoxContainer"
|
|
||||||
|
|
||||||
## Nodes renamed inside a popup: the path after the moves above, and the new path.
|
|
||||||
const RENAMED_PATHS: Dictionary = {
|
|
||||||
"SearchPopup/ScrollContainer/VBoxContainer": "SearchPopup/ScrollContainer/SearchResults",
|
|
||||||
SYNC_COLUMNS + "/CatchedErrorsVBox": SYNC_COLUMNS + "/CaughtErrorsVBox",
|
|
||||||
SYNC_COLUMNS + "/CaughtErrorsVBox/CatchedErrorsLabel":
|
|
||||||
SYNC_COLUMNS + "/CaughtErrorsVBox/CaughtErrorsLabel",
|
|
||||||
}
|
|
||||||
|
|
||||||
## Nodes whose height follows text that changes between versions, such as the changelog.
|
## Nodes whose height follows text that changes between versions, such as the changelog.
|
||||||
## Their position and width are still checked.
|
## Their position and width are still checked.
|
||||||
const HEIGHT_FOLLOWS_TEXT: Array[String] = [
|
const HEIGHT_FOLLOWS_TEXT: Array[String] = [
|
||||||
@@ -105,21 +46,6 @@ func after() -> void:
|
|||||||
_snapshot.restore()
|
_snapshot.restore()
|
||||||
|
|
||||||
|
|
||||||
## Where the node that used to be at [param old_path] in the main window is now.
|
|
||||||
static func new_path(old_path: String) -> String:
|
|
||||||
var parts: PackedStringArray = old_path.split("/")
|
|
||||||
for i: int in parts.size():
|
|
||||||
parts[i] = RENAMED_SCENES.get(parts[i], parts[i])
|
|
||||||
var first: String = parts[0]
|
|
||||||
parts[0] = MOVED.get(first, first)
|
|
||||||
var path: String = "/".join(parts)
|
|
||||||
# In order, so a node inside a renamed node is found after its parent's rename
|
|
||||||
for renamed: String in RENAMED_PATHS:
|
|
||||||
if path == renamed || path.begins_with(renamed + "/"):
|
|
||||||
path = RENAMED_PATHS[renamed] + path.trim_prefix(renamed)
|
|
||||||
return path
|
|
||||||
|
|
||||||
|
|
||||||
func _baseline() -> Dictionary:
|
func _baseline() -> Dictionary:
|
||||||
return JSON.parse_string(FileAccess.get_file_as_string(BASELINE_PATH))
|
return JSON.parse_string(FileAccess.get_file_as_string(BASELINE_PATH))
|
||||||
|
|
||||||
@@ -133,11 +59,10 @@ func test_every_node_is_where_it_was() -> void:
|
|||||||
var baseline: Dictionary = _baseline()
|
var baseline: Dictionary = _baseline()
|
||||||
for state: String in baseline:
|
for state: String in baseline:
|
||||||
var actual: Dictionary = _layout.get(state, {})
|
var actual: Dictionary = _layout.get(state, {})
|
||||||
for old_path: String in baseline[state]:
|
for path: String in baseline[state]:
|
||||||
var path: String = new_path(old_path)
|
var expected: Dictionary = baseline[state][path]
|
||||||
var expected: Dictionary = baseline[state][old_path]
|
|
||||||
if !actual.has(path):
|
if !actual.has(path):
|
||||||
problems.append("%s: %s is missing (was %s)" % [state, path, old_path])
|
problems.append("%s: %s is missing" % [state, path])
|
||||||
continue
|
continue
|
||||||
var rect: Array = actual[path].rect
|
var rect: Array = actual[path].rect
|
||||||
var sides: int = 3 if _height_follows_text(path) else 4
|
var sides: int = 3 if _height_follows_text(path) else 4
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ extends MainWindowTestSuite
|
|||||||
## server and the keyboard shortcuts reach both the main window and the quiz.
|
## server and the keyboard shortcuts reach both the main window and the quiz.
|
||||||
|
|
||||||
const MAIN_WINDOW_CHILDREN: Array[String] = [
|
const MAIN_WINDOW_CHILDREN: Array[String] = [
|
||||||
"TopBar", "Quiz", "PopupBackdrop", "SearchPopup", "SyncPopup", "QRPopup",
|
"Background", "TopBar", "Quiz", "PopupBackdrop", "SearchPopup", "SyncPopup", "QRPopup",
|
||||||
"ShortcutsPopup", "StatisticsPopupPanel", "AboutPopup", "LogPopup",
|
"ShortcutsPopup", "StatisticsPopupPanel", "AboutPopup", "LogPopup",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
extends GdUnitTestSuite
|
||||||
|
## The whole look comes from the project theme, themes/main_theme.tres: scenes and
|
||||||
|
## scripts name its styles instead of setting colours, sizes or style boxes themselves.
|
||||||
|
|
||||||
|
const THEME_PATH: String = "res://themes/main_theme.tres"
|
||||||
|
|
||||||
|
## Folders with the game's scenes and scripts.
|
||||||
|
const GAME_FOLDERS: Array[String] = [
|
||||||
|
"res://main", "res://quiz", "res://player", "res://popups", "res://common", "res://data",
|
||||||
|
"res://server",
|
||||||
|
]
|
||||||
|
|
||||||
|
## The named styles the game uses, and the type each one is based on.
|
||||||
|
const STYLES: Dictionary = {
|
||||||
|
"WindowBackground": "Panel",
|
||||||
|
"PopupBackground": "Panel",
|
||||||
|
"DarkSpacer": "Panel",
|
||||||
|
"CharacterCard": "Panel",
|
||||||
|
"MusicList": "PanelContainer",
|
||||||
|
"SongRow": "PanelContainer",
|
||||||
|
"ShortcutRowDark": "PanelContainer",
|
||||||
|
"ListRowEven": "PanelContainer",
|
||||||
|
"ListRowOdd": "PanelContainer",
|
||||||
|
"TitleLarge": "Label",
|
||||||
|
"TitleMedium": "Label",
|
||||||
|
"Title": "Label",
|
||||||
|
"TextLarge": "Label",
|
||||||
|
"TextMedium": "Label",
|
||||||
|
"HighlightLarge": "Label",
|
||||||
|
"HighlightMedium": "Label",
|
||||||
|
"SongRowLabel": "Label",
|
||||||
|
"SongRowLabelPlaying": "Label",
|
||||||
|
}
|
||||||
|
|
||||||
|
var _theme: Theme = load(THEME_PATH)
|
||||||
|
|
||||||
|
|
||||||
|
## Every file in [param folder] and its subfolders whose name ends with [param extension].
|
||||||
|
func _files(folder: String, extension: String) -> Array[String]:
|
||||||
|
var found: Array[String] = []
|
||||||
|
for file_name: String in DirAccess.get_files_at(folder):
|
||||||
|
if file_name.ends_with(extension):
|
||||||
|
found.append(folder.path_join(file_name))
|
||||||
|
for subfolder: String in DirAccess.get_directories_at(folder):
|
||||||
|
found.append_array(_files(folder.path_join(subfolder), extension))
|
||||||
|
return found
|
||||||
|
|
||||||
|
|
||||||
|
func _game_files(extension: String) -> Array[String]:
|
||||||
|
var found: Array[String] = []
|
||||||
|
for folder: String in GAME_FOLDERS:
|
||||||
|
found.append_array(_files(folder, extension))
|
||||||
|
return found
|
||||||
|
|
||||||
|
|
||||||
|
func _lines_matching(files: Array[String], pattern: String) -> Array[String]:
|
||||||
|
var regex: RegEx = RegEx.create_from_string(pattern)
|
||||||
|
var hits: Array[String] = []
|
||||||
|
for path: String in files:
|
||||||
|
var lines: PackedStringArray = FileAccess.get_file_as_string(path).split("\n")
|
||||||
|
for i: int in lines.size():
|
||||||
|
if regex.search(lines[i]) != null:
|
||||||
|
hits.append("%s:%d: %s" % [path, i + 1, lines[i].strip_edges()])
|
||||||
|
return hits
|
||||||
|
|
||||||
|
|
||||||
|
func test_project_uses_the_main_theme() -> void:
|
||||||
|
assert_str(ProjectSettings.get_setting("gui/theme/custom")).is_equal(THEME_PATH)
|
||||||
|
|
||||||
|
|
||||||
|
func test_theme_has_every_named_style() -> void:
|
||||||
|
for style: String in STYLES:
|
||||||
|
assert_str(String(_theme.get_type_variation_base(style))) \
|
||||||
|
.override_failure_message(style + " is missing or has the wrong base") \
|
||||||
|
.is_equal(STYLES[style])
|
||||||
|
|
||||||
|
|
||||||
|
func test_theme_has_the_palette() -> void:
|
||||||
|
assert_bool(_theme.has_color("backdrop", "Palette")).is_true()
|
||||||
|
|
||||||
|
|
||||||
|
func test_every_style_named_in_scenes_and_scripts_exists() -> void:
|
||||||
|
var regex: RegEx = RegEx.create_from_string('&"([A-Z][A-Za-z]+)"')
|
||||||
|
var missing: Array[String] = []
|
||||||
|
for path: String in _game_files(".tscn") + _game_files(".gd"):
|
||||||
|
for found: RegExMatch in regex.search_all(FileAccess.get_file_as_string(path)):
|
||||||
|
var style: String = found.get_string(1)
|
||||||
|
if !(style in STYLES) && style != "Palette":
|
||||||
|
missing.append("%s: %s" % [path, style])
|
||||||
|
assert_array(missing).override_failure_message(
|
||||||
|
"Styles not in the theme:\n" + "\n".join(missing)).is_empty()
|
||||||
|
|
||||||
|
|
||||||
|
func test_scenes_take_their_look_from_the_theme() -> void:
|
||||||
|
var hits: Array[String] = _lines_matching(_game_files(".tscn"),
|
||||||
|
"^(theme = |label_settings = |theme_override_(styles|colors|font_sizes|fonts)/)" \
|
||||||
|
+ "|^\\[sub_resource type=\"(StyleBoxFlat|LabelSettings|Theme)\"")
|
||||||
|
assert_array(hits).override_failure_message(
|
||||||
|
"Look set in a scene instead of the theme:\n" + "\n".join(hits)).is_empty()
|
||||||
|
|
||||||
|
|
||||||
|
func test_scripts_take_their_look_from_the_theme() -> void:
|
||||||
|
var hits: Array[String] = _lines_matching(_game_files(".gd"),
|
||||||
|
"add_theme_[a-z_]+_override|StyleBoxFlat\\.new|Color\\(")
|
||||||
|
assert_array(hits).override_failure_message(
|
||||||
|
"Look set in a script instead of the theme:\n" + "\n".join(hits)).is_empty()
|
||||||
|
|
||||||
|
|
||||||
|
func test_main_window_background_comes_from_the_theme_and_lets_clicks_through() -> void:
|
||||||
|
var main: Control = auto_free(load("res://main/MainWindow.tscn").instantiate())
|
||||||
|
var background: Panel = main.get_child(0)
|
||||||
|
|
||||||
|
assert_str(background.name).is_equal("Background")
|
||||||
|
assert_str(String(background.theme_type_variation)).is_equal("WindowBackground")
|
||||||
|
assert_int(background.mouse_filter).is_equal(Control.MOUSE_FILTER_IGNORE)
|
||||||
|
assert_float(background.anchor_right).is_equal(1.0)
|
||||||
|
assert_float(background.anchor_bottom).is_equal(1.0)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://b2wva7kaaq8ua
|
||||||
@@ -6,22 +6,29 @@ func _background(list_row: ListRow) -> Color:
|
|||||||
return (list_row.get_theme_stylebox("panel") as StyleBoxFlat).bg_color
|
return (list_row.get_theme_stylebox("panel") as StyleBoxFlat).bg_color
|
||||||
|
|
||||||
|
|
||||||
|
## Adds [param list_row] to the tree, where it gets its look from the project theme.
|
||||||
|
func _shown(list_row: ListRow) -> ListRow:
|
||||||
|
add_child(auto_free(list_row))
|
||||||
|
return list_row
|
||||||
|
|
||||||
|
|
||||||
func test_row_shows_text() -> void:
|
func test_row_shows_text() -> void:
|
||||||
var list_row: ListRow = auto_free(ListRow.create("Chrono Trigger", 0, 20))
|
var list_row: ListRow = auto_free(ListRow.create("Chrono Trigger", 0, &"TextLarge"))
|
||||||
|
|
||||||
assert_str(list_row.text).is_equal("Chrono Trigger")
|
assert_str(list_row.text).is_equal("Chrono Trigger")
|
||||||
|
|
||||||
|
|
||||||
func test_neighbouring_rows_have_different_backgrounds() -> void:
|
func test_neighbouring_rows_have_different_backgrounds() -> void:
|
||||||
var first: ListRow = auto_free(ListRow.create("Chrono Trigger", 0, 20))
|
var first: ListRow = _shown(ListRow.create("Chrono Trigger", 0, &"TextLarge"))
|
||||||
var second: ListRow = auto_free(ListRow.create("Chrono Cross", 1, 20))
|
var second: ListRow = _shown(ListRow.create("Chrono Cross", 1, &"TextLarge"))
|
||||||
var third: ListRow = auto_free(ListRow.create("Xenogears", 2, 20))
|
var third: ListRow = _shown(ListRow.create("Xenogears", 2, &"TextLarge"))
|
||||||
|
|
||||||
assert_that(_background(first)).is_not_equal(_background(second))
|
assert_that(_background(first)).is_not_equal(_background(second))
|
||||||
assert_that(_background(first)).is_equal(_background(third))
|
assert_that(_background(first)).is_equal(_background(third))
|
||||||
|
|
||||||
|
|
||||||
func test_long_text_wraps() -> void:
|
func test_long_text_wraps() -> void:
|
||||||
var list_row: ListRow = auto_free(ListRow.create("Castlevania: Symphony of the Night", 0, 20))
|
var list_row: ListRow = auto_free(
|
||||||
|
ListRow.create("Castlevania: Symphony of the Night", 0, &"TextLarge"))
|
||||||
|
|
||||||
assert_int(list_row.label.autowrap_mode).is_equal(TextServer.AUTOWRAP_WORD_SMART)
|
assert_int(list_row.label.autowrap_mode).is_equal(TextServer.AUTOWRAP_WORD_SMART)
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# Themes
|
||||||
|
|
||||||
|
The whole look of the game comes from one theme, `main_theme.tres`. It is the project
|
||||||
|
theme (Project Settings → GUI → Theme → Custom), so every scene uses it without setting
|
||||||
|
anything. Scenes and scripts never set colours, font sizes or style boxes themselves;
|
||||||
|
they name one of the theme's styles instead, and `tests/integration/test_theme.gd`
|
||||||
|
checks that it stays that way.
|
||||||
|
|
||||||
|
## Making a new theme
|
||||||
|
|
||||||
|
1. Copy `main_theme.tres`, e.g. to `dark_blue_theme.tres`.
|
||||||
|
2. Open the copy in Godot (double-click it) and change its colours, style boxes and font
|
||||||
|
sizes in the theme editor. Keep every style's name.
|
||||||
|
3. Point Project Settings → GUI → Theme → Custom at the copy.
|
||||||
|
|
||||||
|
Icons (play, restart, add player, the slider and switch knobs) are not part of the theme;
|
||||||
|
they come from the image files in `icons/` and Godot's built-in theme.
|
||||||
|
|
||||||
|
## What is in the theme
|
||||||
|
|
||||||
|
**Godot's default look** for every kind of control the game uses (Button, Label, Panel,
|
||||||
|
CheckButton, sliders, scroll bars, text fields and so on), copied in so it can be changed
|
||||||
|
here.
|
||||||
|
|
||||||
|
**Named styles** (theme type variations), picked with *Theme Type Variation* in a node's
|
||||||
|
inspector or `theme_type_variation` in code:
|
||||||
|
|
||||||
|
| Style | Based on | Used for |
|
||||||
|
|---|---|---|
|
||||||
|
| `WindowBackground` | Panel | The background behind everything in the main window |
|
||||||
|
| `PopupBackground` | Panel | The panel of every popup: dark, bordered and rounded |
|
||||||
|
| `DarkSpacer` | Panel | The dark gaps in the player list and the add player row |
|
||||||
|
| `CharacterCard` | Panel | A character in the character select popup |
|
||||||
|
| `MusicList` | PanelContainer | The list of songs in the quiz |
|
||||||
|
| `SongRow` | PanelContainer | One song in that list |
|
||||||
|
| `ShortcutRowDark` | PanelContainer | Every other row in the shortcuts popup |
|
||||||
|
| `ListRowEven`, `ListRowOdd` | PanelContainer | Alternating rows in the inspiration and sync lists |
|
||||||
|
| `TitleLarge` | Label | The soundtrack that is playing (50) |
|
||||||
|
| `TitleMedium` | Label | The song that is playing, and the winner (35) |
|
||||||
|
| `Title` | Label | The window title and popup titles (25) |
|
||||||
|
| `TextLarge` | Label | Log rows, shortcuts and the inspiration list (20) |
|
||||||
|
| `TextMedium` | Label | Rows in the sync result (18) |
|
||||||
|
| `HighlightLarge`, `HighlightMedium` | Label | Orange text: sync headers and every other sync row |
|
||||||
|
| `SongRowLabel`, `SongRowLabelPlaying` | Label | A song's text, and the one that is playing |
|
||||||
|
|
||||||
|
The **PopupPanel** type itself is styled too, for the Statistics popup.
|
||||||
|
|
||||||
|
**Palette**: colours used from code.
|
||||||
|
|
||||||
|
| Colour | Used for |
|
||||||
|
|---|---|
|
||||||
|
| `backdrop` | The dimming behind an open popup |
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://8bllart6xn1f"]
|
|
||||||
|
|
||||||
[ext_resource type="StyleBox" uid="uid://bsv6yb0yir04l" path="res://themes/style_box_flat.tres" id="1_uierc"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
PanelContainer/styles/panel = ExtResource("1_uierc")
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://rxexo3ur85as"]
|
|
||||||
|
|
||||||
[ext_resource type="StyleBox" uid="uid://blf3g88mugovr" path="res://themes/neutral_gray.tres" id="1_alhp2"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
Label/styles/normal = ExtResource("1_alhp2")
|
|
||||||
PanelContainer/styles/panel = ExtResource("1_alhp2")
|
|
||||||
@@ -0,0 +1,916 @@
|
|||||||
|
[gd_resource type="Theme" format=3]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vxwtt"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.3)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rjgu6"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vu6l5"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.225, 0.225, 0.225, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ydht1"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8gw6x"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0, 0, 0, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g21io"]
|
||||||
|
bg_color = Color(0.302, 0.302, 0.302, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7ceur"]
|
||||||
|
content_margin_left = 6.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 6.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uobgu"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_puucq"]
|
||||||
|
content_margin_left = 6.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 6.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1mjdo"]
|
||||||
|
content_margin_left = 6.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 6.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s5e0q"]
|
||||||
|
content_margin_left = 6.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 6.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0x86e"]
|
||||||
|
content_margin_left = 6.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 6.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_f5ubn"]
|
||||||
|
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7qy2x"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.4)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_myxx4"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3kvey"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.75, 0.75, 0.75, 0.75)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5iri2"]
|
||||||
|
content_margin_left = 0.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 0.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3scot"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxLine" id="StyleBoxLine_puicy"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
color = Color(0.5, 0.5, 0.5, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_quqgn"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.4)
|
||||||
|
corner_radius_top_left = 4
|
||||||
|
corner_radius_top_right = 4
|
||||||
|
corner_radius_bottom_right = 4
|
||||||
|
corner_radius_bottom_left = 4
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_m01q4"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
corner_radius_top_left = 4
|
||||||
|
corner_radius_top_right = 4
|
||||||
|
corner_radius_bottom_right = 4
|
||||||
|
corner_radius_bottom_left = 4
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k36pm"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 4
|
||||||
|
corner_radius_top_right = 4
|
||||||
|
corner_radius_bottom_right = 4
|
||||||
|
corner_radius_bottom_left = 4
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6h40v"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s47sh"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_u5sc5"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 2.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.05)
|
||||||
|
corner_radius_top_left = 4
|
||||||
|
corner_radius_top_right = 4
|
||||||
|
corner_radius_bottom_right = 4
|
||||||
|
corner_radius_bottom_left = 4
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mxy8k"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 2.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.11)
|
||||||
|
corner_radius_top_left = 4
|
||||||
|
corner_radius_top_right = 4
|
||||||
|
corner_radius_bottom_right = 4
|
||||||
|
corner_radius_bottom_left = 4
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_33f1l"]
|
||||||
|
bg_color = Color(0.257813, 0.257813, 0.257813, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wbnll"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.3)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bmtpa"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.3)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_f5lmb"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qtlom"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.225, 0.225, 0.225, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t2i82"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.225, 0.225, 0.225, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a4gt2"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uisqs"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dinf2"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0, 0, 0, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a0ksy"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0, 0, 0, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hwwyi"]
|
||||||
|
content_margin_left = 0.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 0.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wl3gy"]
|
||||||
|
content_margin_left = 0.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 0.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vputg"]
|
||||||
|
content_margin_left = 12.0
|
||||||
|
content_margin_top = 12.0
|
||||||
|
content_margin_right = 12.0
|
||||||
|
content_margin_bottom = 12.0
|
||||||
|
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.36, 0.36, 0.36, 1)
|
||||||
|
corner_radius_top_left = 6
|
||||||
|
corner_radius_top_right = 6
|
||||||
|
corner_radius_bottom_right = 6
|
||||||
|
corner_radius_bottom_left = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1de2m"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.4, 0.4, 0.4, 1)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxLine" id="StyleBoxLine_bacd5"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
color = Color(0.5, 0.5, 0.5, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxLine" id="StyleBoxLine_k3nwn"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
color = Color(0.5, 0.5, 0.5, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_axpob"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.25, 0.25, 0.25, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.175, 0.175, 0.175, 1)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxLine" id="StyleBoxLine_cl37w"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
color = Color(0.5, 0.5, 0.5, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_07kyi"]
|
||||||
|
content_margin_left = 2.0
|
||||||
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 2.0
|
||||||
|
content_margin_bottom = 2.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.3)
|
||||||
|
corner_radius_top_left = 6
|
||||||
|
corner_radius_top_right = 6
|
||||||
|
corner_radius_bottom_right = 6
|
||||||
|
corner_radius_bottom_left = 6
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ouuwv"]
|
||||||
|
content_margin_left = 2.0
|
||||||
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 2.0
|
||||||
|
content_margin_bottom = 2.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.4)
|
||||||
|
corner_radius_top_left = 6
|
||||||
|
corner_radius_top_right = 6
|
||||||
|
corner_radius_bottom_right = 6
|
||||||
|
corner_radius_bottom_left = 6
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_35dwi"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(1, 1, 1, 0.75)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 4.0
|
||||||
|
expand_margin_top = 4.0
|
||||||
|
expand_margin_right = 4.0
|
||||||
|
expand_margin_bottom = 4.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_r3gy8"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_anjdx"]
|
||||||
|
content_margin_left = 0.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 0.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
bg_color = Color(0.18, 0.18, 0.18, 1)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_oxgwg"]
|
||||||
|
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r1nnu"]
|
||||||
|
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lkqs8"]
|
||||||
|
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1tv07"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0ly2h"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0, 0, 0, 0.6)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o0qds"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.3)
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0, 0, 0, 0.3)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ogk6w"]
|
||||||
|
content_margin_left = 8.0
|
||||||
|
content_margin_top = 2.0
|
||||||
|
content_margin_right = 8.0
|
||||||
|
content_margin_bottom = 2.0
|
||||||
|
bg_color = Color(0, 0, 0, 0.5)
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dwgvb"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.4)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uoaln"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x5u8n"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.75, 0.75, 0.75, 0.75)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6fedo"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 0.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 0.0
|
||||||
|
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||||
|
corner_radius_top_left = 10
|
||||||
|
corner_radius_top_right = 10
|
||||||
|
corner_radius_bottom_right = 10
|
||||||
|
corner_radius_bottom_left = 10
|
||||||
|
corner_detail = 6
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8sdcv"]
|
||||||
|
content_margin_left = 4.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 4.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(1, 1, 1, 0.75)
|
||||||
|
draw_center = false
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
corner_radius_top_left = 3
|
||||||
|
corner_radius_top_right = 3
|
||||||
|
corner_radius_bottom_right = 3
|
||||||
|
corner_radius_bottom_left = 3
|
||||||
|
corner_detail = 5
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxLine" id="StyleBoxLine_r3erx"]
|
||||||
|
content_margin_left = 0.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 0.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
color = Color(0.5, 0.5, 0.5, 1)
|
||||||
|
vertical = true
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2mdtn"]
|
||||||
|
bg_color = Color(0.3, 0.3, 0.3, 1)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
Button/colors/font_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
Button/colors/font_disabled_color = Color(0.875, 0.875, 0.875, 0.5)
|
||||||
|
Button/colors/font_focus_color = Color(0.95, 0.95, 0.95, 1)
|
||||||
|
Button/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1)
|
||||||
|
Button/colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
Button/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
Button/colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
Button/colors/icon_disabled_color = Color(1, 1, 1, 0.4)
|
||||||
|
Button/colors/icon_focus_color = Color(1, 1, 1, 1)
|
||||||
|
Button/colors/icon_hover_color = Color(1, 1, 1, 1)
|
||||||
|
Button/colors/icon_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
Button/colors/icon_normal_color = Color(1, 1, 1, 1)
|
||||||
|
Button/colors/icon_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
Button/constants/align_to_largest_stylebox = 0
|
||||||
|
Button/constants/h_separation = 4
|
||||||
|
Button/constants/icon_max_width = 0
|
||||||
|
Button/constants/outline_size = 0
|
||||||
|
Button/font_sizes/font_size = 16
|
||||||
|
Button/styles/disabled = SubResource("StyleBoxFlat_vxwtt")
|
||||||
|
Button/styles/focus = SubResource("StyleBoxFlat_rjgu6")
|
||||||
|
Button/styles/hover = SubResource("StyleBoxFlat_vu6l5")
|
||||||
|
Button/styles/normal = SubResource("StyleBoxFlat_ydht1")
|
||||||
|
Button/styles/pressed = SubResource("StyleBoxFlat_8gw6x")
|
||||||
|
CharacterCard/base_type = &"Panel"
|
||||||
|
CharacterCard/styles/panel = SubResource("StyleBoxFlat_g21io")
|
||||||
|
CheckButton/colors/button_checked_color = Color(1, 1, 1, 1)
|
||||||
|
CheckButton/colors/button_unchecked_color = Color(1, 1, 1, 1)
|
||||||
|
CheckButton/colors/font_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
CheckButton/colors/font_disabled_color = Color(0.875, 0.875, 0.875, 0.5)
|
||||||
|
CheckButton/colors/font_focus_color = Color(0.95, 0.95, 0.95, 1)
|
||||||
|
CheckButton/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1)
|
||||||
|
CheckButton/colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
CheckButton/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
CheckButton/colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
CheckButton/constants/check_v_offset = 0
|
||||||
|
CheckButton/constants/h_separation = 4
|
||||||
|
CheckButton/constants/outline_size = 0
|
||||||
|
CheckButton/font_sizes/font_size = 16
|
||||||
|
CheckButton/styles/disabled = SubResource("StyleBoxEmpty_7ceur")
|
||||||
|
CheckButton/styles/focus = SubResource("StyleBoxFlat_uobgu")
|
||||||
|
CheckButton/styles/hover = SubResource("StyleBoxEmpty_puucq")
|
||||||
|
CheckButton/styles/hover_pressed = SubResource("StyleBoxEmpty_1mjdo")
|
||||||
|
CheckButton/styles/normal = SubResource("StyleBoxEmpty_s5e0q")
|
||||||
|
CheckButton/styles/pressed = SubResource("StyleBoxEmpty_0x86e")
|
||||||
|
DarkSpacer/base_type = &"Panel"
|
||||||
|
DarkSpacer/styles/panel = SubResource("StyleBoxFlat_f5ubn")
|
||||||
|
GridContainer/constants/h_separation = 4
|
||||||
|
GridContainer/constants/v_separation = 4
|
||||||
|
HBoxContainer/constants/separation = 4
|
||||||
|
HScrollBar/styles/grabber = SubResource("StyleBoxFlat_7qy2x")
|
||||||
|
HScrollBar/styles/grabber_highlight = SubResource("StyleBoxFlat_myxx4")
|
||||||
|
HScrollBar/styles/grabber_pressed = SubResource("StyleBoxFlat_3kvey")
|
||||||
|
HScrollBar/styles/scroll = SubResource("StyleBoxFlat_5iri2")
|
||||||
|
HScrollBar/styles/scroll_focus = SubResource("StyleBoxFlat_3scot")
|
||||||
|
HSeparator/constants/separation = 4
|
||||||
|
HSeparator/styles/separator = SubResource("StyleBoxLine_puicy")
|
||||||
|
HSlider/constants/center_grabber = 0
|
||||||
|
HSlider/constants/grabber_offset = 0
|
||||||
|
HSlider/constants/tick_offset = 0
|
||||||
|
HSlider/styles/grabber_area = SubResource("StyleBoxFlat_quqgn")
|
||||||
|
HSlider/styles/grabber_area_highlight = SubResource("StyleBoxFlat_m01q4")
|
||||||
|
HSlider/styles/slider = SubResource("StyleBoxFlat_k36pm")
|
||||||
|
HighlightLarge/base_type = &"Label"
|
||||||
|
HighlightLarge/colors/font_color = Color(1, 0.5, 0, 1)
|
||||||
|
HighlightLarge/font_sizes/font_size = 20
|
||||||
|
HighlightMedium/base_type = &"Label"
|
||||||
|
HighlightMedium/colors/font_color = Color(1, 0.5, 0, 1)
|
||||||
|
HighlightMedium/font_sizes/font_size = 18
|
||||||
|
Label/colors/font_color = Color(1, 1, 1, 1)
|
||||||
|
Label/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
Label/colors/font_shadow_color = Color(0, 0, 0, 0)
|
||||||
|
Label/constants/line_spacing = 3
|
||||||
|
Label/constants/outline_size = 0
|
||||||
|
Label/constants/shadow_offset_x = 1
|
||||||
|
Label/constants/shadow_offset_y = 1
|
||||||
|
Label/constants/shadow_outline_size = 1
|
||||||
|
Label/font_sizes/font_size = 16
|
||||||
|
Label/styles/focus = SubResource("StyleBoxFlat_6h40v")
|
||||||
|
Label/styles/normal = SubResource("StyleBoxEmpty_s47sh")
|
||||||
|
ListRowEven/base_type = &"PanelContainer"
|
||||||
|
ListRowEven/styles/panel = SubResource("StyleBoxFlat_u5sc5")
|
||||||
|
ListRowOdd/base_type = &"PanelContainer"
|
||||||
|
ListRowOdd/styles/panel = SubResource("StyleBoxFlat_mxy8k")
|
||||||
|
MarginContainer/constants/margin_bottom = 0
|
||||||
|
MarginContainer/constants/margin_left = 0
|
||||||
|
MarginContainer/constants/margin_right = 0
|
||||||
|
MarginContainer/constants/margin_top = 0
|
||||||
|
MusicList/base_type = &"PanelContainer"
|
||||||
|
MusicList/styles/panel = SubResource("StyleBoxFlat_33f1l")
|
||||||
|
OptionButton/colors/font_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
OptionButton/colors/font_disabled_color = Color(0.875, 0.875, 0.875, 0.5)
|
||||||
|
OptionButton/colors/font_focus_color = Color(0.95, 0.95, 0.95, 1)
|
||||||
|
OptionButton/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1)
|
||||||
|
OptionButton/colors/font_hover_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
OptionButton/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
OptionButton/colors/font_pressed_color = Color(1, 1, 1, 1)
|
||||||
|
OptionButton/constants/arrow_margin = 4
|
||||||
|
OptionButton/constants/h_separation = 4
|
||||||
|
OptionButton/constants/modulate_arrow = 0
|
||||||
|
OptionButton/constants/outline_size = 0
|
||||||
|
OptionButton/font_sizes/font_size = 16
|
||||||
|
OptionButton/styles/disabled = SubResource("StyleBoxFlat_wbnll")
|
||||||
|
OptionButton/styles/disabled_mirrored = SubResource("StyleBoxFlat_bmtpa")
|
||||||
|
OptionButton/styles/focus = SubResource("StyleBoxFlat_f5lmb")
|
||||||
|
OptionButton/styles/hover = SubResource("StyleBoxFlat_qtlom")
|
||||||
|
OptionButton/styles/hover_mirrored = SubResource("StyleBoxFlat_t2i82")
|
||||||
|
OptionButton/styles/normal = SubResource("StyleBoxFlat_a4gt2")
|
||||||
|
OptionButton/styles/normal_mirrored = SubResource("StyleBoxFlat_uisqs")
|
||||||
|
OptionButton/styles/pressed = SubResource("StyleBoxFlat_dinf2")
|
||||||
|
OptionButton/styles/pressed_mirrored = SubResource("StyleBoxFlat_a0ksy")
|
||||||
|
Palette/colors/backdrop = Color(0, 0, 0, 0.55)
|
||||||
|
Panel/styles/panel = SubResource("StyleBoxFlat_hwwyi")
|
||||||
|
PanelContainer/styles/panel = SubResource("StyleBoxFlat_wl3gy")
|
||||||
|
PopupBackground/base_type = &"Panel"
|
||||||
|
PopupBackground/styles/panel = SubResource("StyleBoxFlat_vputg")
|
||||||
|
PopupMenu/colors/font_accelerator_color = Color(0.7, 0.7, 0.7, 0.8)
|
||||||
|
PopupMenu/colors/font_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
PopupMenu/colors/font_disabled_color = Color(0.4, 0.4, 0.4, 0.8)
|
||||||
|
PopupMenu/colors/font_hover_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
PopupMenu/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
PopupMenu/colors/font_separator_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
PopupMenu/colors/font_separator_outline_color = Color(0, 0, 0, 1)
|
||||||
|
PopupMenu/constants/gutter_compact = 1
|
||||||
|
PopupMenu/constants/h_separation = 4
|
||||||
|
PopupMenu/constants/icon_max_width = 0
|
||||||
|
PopupMenu/constants/indent = 10
|
||||||
|
PopupMenu/constants/item_end_padding = 2
|
||||||
|
PopupMenu/constants/item_start_padding = 2
|
||||||
|
PopupMenu/constants/outline_size = 0
|
||||||
|
PopupMenu/constants/search_bar_separation = 4
|
||||||
|
PopupMenu/constants/separator_outline_size = 0
|
||||||
|
PopupMenu/constants/v_separation = 4
|
||||||
|
PopupMenu/font_sizes/font_separator_size = 16
|
||||||
|
PopupMenu/font_sizes/font_size = 16
|
||||||
|
PopupMenu/styles/hover = SubResource("StyleBoxFlat_1de2m")
|
||||||
|
PopupMenu/styles/labeled_separator_left = SubResource("StyleBoxLine_bacd5")
|
||||||
|
PopupMenu/styles/labeled_separator_right = SubResource("StyleBoxLine_k3nwn")
|
||||||
|
PopupMenu/styles/panel = SubResource("StyleBoxFlat_axpob")
|
||||||
|
PopupMenu/styles/separator = SubResource("StyleBoxLine_cl37w")
|
||||||
|
PopupPanel/styles/panel = SubResource("StyleBoxFlat_vputg")
|
||||||
|
ProgressBar/colors/font_color = Color(0.95, 0.95, 0.95, 1)
|
||||||
|
ProgressBar/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
ProgressBar/constants/outline_size = 0
|
||||||
|
ProgressBar/font_sizes/font_size = 16
|
||||||
|
ProgressBar/styles/background = SubResource("StyleBoxFlat_07kyi")
|
||||||
|
ProgressBar/styles/fill = SubResource("StyleBoxFlat_ouuwv")
|
||||||
|
ScrollContainer/colors/scroll_hint_horizontal_color = Color(0, 0, 0, 1)
|
||||||
|
ScrollContainer/colors/scroll_hint_vertical_color = Color(0, 0, 0, 1)
|
||||||
|
ScrollContainer/styles/focus = SubResource("StyleBoxFlat_35dwi")
|
||||||
|
ScrollContainer/styles/panel = SubResource("StyleBoxEmpty_r3gy8")
|
||||||
|
ShortcutRowDark/base_type = &"PanelContainer"
|
||||||
|
ShortcutRowDark/styles/panel = SubResource("StyleBoxFlat_anjdx")
|
||||||
|
SongRow/base_type = &"PanelContainer"
|
||||||
|
SongRow/styles/panel = SubResource("StyleBoxFlat_oxgwg")
|
||||||
|
SongRowLabel/base_type = &"Label"
|
||||||
|
SongRowLabel/font_sizes/font_size = 20
|
||||||
|
SongRowLabel/styles/normal = SubResource("StyleBoxFlat_r1nnu")
|
||||||
|
SongRowLabelPlaying/base_type = &"Label"
|
||||||
|
SongRowLabelPlaying/colors/font_color = Color(1, 0.5, 0, 1)
|
||||||
|
SongRowLabelPlaying/font_sizes/font_size = 20
|
||||||
|
SongRowLabelPlaying/styles/normal = SubResource("StyleBoxFlat_lkqs8")
|
||||||
|
TextEdit/colors/background_color = Color(0, 0, 0, 0)
|
||||||
|
TextEdit/colors/caret_background_color = Color(0, 0, 0, 1)
|
||||||
|
TextEdit/colors/caret_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
TextEdit/colors/current_line_color = Color(0.25, 0.25, 0.26, 0.8)
|
||||||
|
TextEdit/colors/font_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
TextEdit/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
TextEdit/colors/font_placeholder_color = Color(0.875, 0.875, 0.875, 0.6)
|
||||||
|
TextEdit/colors/font_readonly_color = Color(0.875, 0.875, 0.875, 0.5)
|
||||||
|
TextEdit/colors/font_selected_color = Color(0, 0, 0, 0)
|
||||||
|
TextEdit/colors/search_result_border_color = Color(0.3, 0.3, 0.3, 0.4)
|
||||||
|
TextEdit/colors/search_result_color = Color(0.3, 0.3, 0.3, 1)
|
||||||
|
TextEdit/colors/selection_color = Color(0.5, 0.5, 0.5, 1)
|
||||||
|
TextEdit/colors/word_highlighted_color = Color(0.5, 0.5, 0.5, 0.25)
|
||||||
|
TextEdit/constants/caret_width = 1
|
||||||
|
TextEdit/constants/line_spacing = 4
|
||||||
|
TextEdit/constants/outline_size = 0
|
||||||
|
TextEdit/constants/wrap_offset = 10
|
||||||
|
TextEdit/font_sizes/font_size = 16
|
||||||
|
TextEdit/styles/focus = SubResource("StyleBoxFlat_1tv07")
|
||||||
|
TextEdit/styles/normal = SubResource("StyleBoxFlat_0ly2h")
|
||||||
|
TextEdit/styles/read_only = SubResource("StyleBoxFlat_o0qds")
|
||||||
|
TextLarge/base_type = &"Label"
|
||||||
|
TextLarge/font_sizes/font_size = 20
|
||||||
|
TextMedium/base_type = &"Label"
|
||||||
|
TextMedium/font_sizes/font_size = 18
|
||||||
|
Title/base_type = &"Label"
|
||||||
|
Title/font_sizes/font_size = 25
|
||||||
|
TitleLarge/base_type = &"Label"
|
||||||
|
TitleLarge/font_sizes/font_size = 50
|
||||||
|
TitleMedium/base_type = &"Label"
|
||||||
|
TitleMedium/font_sizes/font_size = 35
|
||||||
|
TooltipLabel/colors/font_color = Color(0.875, 0.875, 0.875, 1)
|
||||||
|
TooltipLabel/colors/font_outline_color = Color(0, 0, 0, 1)
|
||||||
|
TooltipLabel/colors/font_shadow_color = Color(0, 0, 0, 0)
|
||||||
|
TooltipLabel/constants/outline_size = 0
|
||||||
|
TooltipLabel/constants/shadow_offset_x = 1
|
||||||
|
TooltipLabel/constants/shadow_offset_y = 1
|
||||||
|
TooltipLabel/font_sizes/font_size = 16
|
||||||
|
TooltipPanel/styles/panel = SubResource("StyleBoxFlat_ogk6w")
|
||||||
|
VBoxContainer/constants/separation = 4
|
||||||
|
VScrollBar/styles/grabber = SubResource("StyleBoxFlat_dwgvb")
|
||||||
|
VScrollBar/styles/grabber_highlight = SubResource("StyleBoxFlat_uoaln")
|
||||||
|
VScrollBar/styles/grabber_pressed = SubResource("StyleBoxFlat_x5u8n")
|
||||||
|
VScrollBar/styles/scroll = SubResource("StyleBoxFlat_6fedo")
|
||||||
|
VScrollBar/styles/scroll_focus = SubResource("StyleBoxFlat_8sdcv")
|
||||||
|
VSeparator/constants/separation = 4
|
||||||
|
VSeparator/styles/separator = SubResource("StyleBoxLine_r3erx")
|
||||||
|
WindowBackground/base_type = &"Panel"
|
||||||
|
WindowBackground/styles/panel = SubResource("StyleBoxFlat_2mdtn")
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[gd_resource type="StyleBoxFlat" format=3 uid="uid://blf3g88mugovr"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
bg_color = Color(0.257813, 0.257813, 0.257813, 1)
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
[gd_resource type="Theme" format=3]
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_popup"]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
border_width_left = 2
|
|
||||||
border_width_top = 2
|
|
||||||
border_width_right = 2
|
|
||||||
border_width_bottom = 2
|
|
||||||
border_color = Color(0.36, 0.36, 0.36, 1)
|
|
||||||
corner_radius_top_left = 6
|
|
||||||
corner_radius_top_right = 6
|
|
||||||
corner_radius_bottom_right = 6
|
|
||||||
corner_radius_bottom_left = 6
|
|
||||||
content_margin_left = 12.0
|
|
||||||
content_margin_top = 12.0
|
|
||||||
content_margin_right = 12.0
|
|
||||||
content_margin_bottom = 12.0
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
Panel/styles/panel = SubResource("StyleBoxFlat_popup")
|
|
||||||
PopupPanel/styles/panel = SubResource("StyleBoxFlat_popup")
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[gd_resource type="StyleBoxFlat" format=3 uid="uid://bsv6yb0yir04l"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
bg_color = Color(0.180392, 0.180392, 0.180392, 1)
|
|
||||||
Reference in new issue
Block a user