Add working tests, fix bugs, rework popups and automate releases #36
No files matched your search
+8
-33
@@ -2,58 +2,33 @@ class_name ListRow
|
||||
extends PanelContainer
|
||||
## 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
|
||||
## 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
|
||||
## Every row has its own background, alternating between the theme's [code]ListRowEven[/code]
|
||||
## and [code]ListRowOdd[/code] styles, so it is clear where an item starts even when its
|
||||
## text wraps over several lines.
|
||||
|
||||
## The label showing the item's text.
|
||||
var label: Label
|
||||
|
||||
## The item's text.
|
||||
var text: String:
|
||||
|
||||
|
||||
get:
|
||||
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(
|
||||
item_text: String,
|
||||
row: int,
|
||||
font_size: int,
|
||||
label_style: StringName,
|
||||
alignment: HorizontalAlignment = HORIZONTAL_ALIGNMENT_LEFT,
|
||||
) -> ListRow:
|
||||
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.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.horizontal_alignment = alignment
|
||||
list_row.label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
list_row.add_child(list_row.label)
|
||||
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://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="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"]
|
||||
|
||||
[node name="MainWindow" type="Control" unique_id=407149696]
|
||||
@@ -20,6 +19,16 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
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="Quiz" parent="." unique_id=1357908642 instance=ExtResource("quiz_scene")]
|
||||
@@ -60,7 +69,6 @@ offset_right = 1262.0
|
||||
offset_bottom = 860.0
|
||||
|
||||
[node name="StatisticsPopupPanel" type="PopupPanel" parent="." unique_id=298311407]
|
||||
theme = ExtResource("popup_theme")
|
||||
oversampling_override = 1.0
|
||||
initial_position = 2
|
||||
size = Vector2i(450, 100)
|
||||
|
||||
+1
-5
@@ -2,9 +2,6 @@
|
||||
|
||||
[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"]
|
||||
device = -1
|
||||
alt_pressed = true
|
||||
@@ -34,8 +31,8 @@ offset_top = 12.0
|
||||
offset_right = 369.0
|
||||
offset_bottom = 50.0
|
||||
size_flags_horizontal = 0
|
||||
theme_type_variation = &"Title"
|
||||
text = "Music Player Randomizer"
|
||||
label_settings = SubResource("LabelSettings_ychxr")
|
||||
|
||||
[node name="SyncButton" type="Button" parent="." unique_id=1228313556]
|
||||
layout_mode = 0
|
||||
@@ -97,4 +94,3 @@ offset_bottom = 48.0
|
||||
focus_mode = 0
|
||||
action_mode = 0
|
||||
text = "QR"
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
[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="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
||||
|
||||
[node name="AboutPopup" type="Control" unique_id=1626010355 node_paths=PackedStringArray("panel")]
|
||||
theme = ExtResource("popup_theme")
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -19,6 +17,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_right = 600.0
|
||||
offset_bottom = 640.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="TitleLabel" type="Label" parent="AboutPanel" unique_id=200295721]
|
||||
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="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"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
@@ -15,7 +12,7 @@ script = ExtResource("1_pjt0s")
|
||||
layout_mode = 0
|
||||
offset_right = 240.0
|
||||
offset_bottom = 145.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_pjt0s")
|
||||
theme_type_variation = &"CharacterCard"
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel"]
|
||||
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="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")]
|
||||
theme = ExtResource("popup_theme")
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
script = ExtResource("1_h4tdp")
|
||||
@@ -18,6 +13,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_right = 1290.0
|
||||
offset_bottom = 665.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CharacterPanel"]
|
||||
layout_mode = 0
|
||||
@@ -29,8 +25,8 @@ size_flags_horizontal = 3
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme_type_variation = &"Title"
|
||||
text = "Character Select"
|
||||
label_settings = SubResource("LabelSettings_p4iny")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[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="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
||||
|
||||
[node name="LogPopup" type="Control" node_paths=PackedStringArray("panel")]
|
||||
theme = ExtResource("popup_theme")
|
||||
custom_minimum_size = Vector2(700, 700)
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
@@ -22,13 +20,14 @@ custom_minimum_size = Vector2(700, 700)
|
||||
layout_mode = 0
|
||||
offset_right = 700.0
|
||||
offset_bottom = 700.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="TitleLabel" type="Label" parent="LogPanel"]
|
||||
layout_mode = 0
|
||||
offset_top = 8.0
|
||||
offset_right = 700.0
|
||||
offset_bottom = 48.0
|
||||
theme_override_font_sizes/font_size = 25
|
||||
theme_type_variation = &"Title"
|
||||
text = "Log"
|
||||
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://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")]
|
||||
theme = ExtResource("popup_theme")
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -20,6 +18,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_right = 450.0
|
||||
offset_bottom = 520.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="QRCodeRect" type="TextureRect" parent="QRPanel" unique_id=1054378438]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
[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="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
||||
|
||||
[node name="SearchPopup" type="Control" unique_id=616238617 node_paths=PackedStringArray("panel")]
|
||||
theme = ExtResource("popup_theme")
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -19,6 +17,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_right = 1152.0
|
||||
offset_bottom = 640.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="ClearButton" type="Button" parent="." unique_id=1549439398]
|
||||
layout_mode = 0
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
[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="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")]
|
||||
theme = ExtResource("popup_theme")
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -22,6 +17,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_right = 500.0
|
||||
offset_bottom = 640.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="SettingsPanel" unique_id=1325795358]
|
||||
layout_mode = 0
|
||||
@@ -39,8 +35,8 @@ size_flags_horizontal = 3
|
||||
[node name="Label" type="Label" parent="SettingsPanel/ScrollContainer/VBoxContainer" unique_id=1111531402]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme_type_variation = &"Title"
|
||||
text = "Settings"
|
||||
label_settings = SubResource("LabelSettings_3xrlm")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[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="Theme" path="res://themes/popup_theme.tres" id="popup_theme"]
|
||||
|
||||
[node name="ShortcutsPopup" type="Control" node_paths=PackedStringArray("panel")]
|
||||
theme = ExtResource("popup_theme")
|
||||
custom_minimum_size = Vector2(700, 700)
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
@@ -21,6 +19,7 @@ custom_minimum_size = Vector2(700, 700)
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="ShortcutsPanel"]
|
||||
custom_minimum_size = Vector2(700, 700)
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
[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="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")]
|
||||
theme = ExtResource("popup_theme")
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -22,6 +17,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_right = 1500.0
|
||||
offset_bottom = 640.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="SyncPanel" unique_id=1289116349]
|
||||
layout_mode = 0
|
||||
@@ -40,8 +36,8 @@ theme_override_constants/separation = 12
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme_type_variation = &"Title"
|
||||
text = "Sync"
|
||||
label_settings = SubResource("LabelSettings_anbfi")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="SyncTime" type="Label" parent="SyncPanel/ScrollContainer/SyncVBoxContainer" unique_id=1344333200]
|
||||
@@ -55,8 +51,8 @@ unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme_type_variation = &"Title"
|
||||
text = "No changes since last sync"
|
||||
label_settings = SubResource("LabelSettings_anbfi")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[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="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")]
|
||||
theme = ExtResource("popup_theme")
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -23,6 +18,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_right = 500.0
|
||||
offset_bottom = 600.0
|
||||
theme_type_variation = &"PopupBackground"
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="WinnerPanel" unique_id=471159349]
|
||||
layout_mode = 0
|
||||
@@ -44,8 +40,8 @@ stretch_mode = 5
|
||||
[node name="WinnerLabel" type="Label" parent="WinnerPanel/VBoxContainer" unique_id=1437597286]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"TitleMedium"
|
||||
text = "Winner!"
|
||||
label_settings = SubResource("LabelSettings_hr75l")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 2
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ func add_log_row(text: String) -> void:
|
||||
|
||||
func make_log_label(row: String) -> Label:
|
||||
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.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||
return log_label
|
||||
|
||||
@@ -15,10 +15,10 @@ var _popups: Array[BasePopup] = []
|
||||
static func add_to(parent: Control, popups: Array[BasePopup]) -> PopupBackdrop:
|
||||
var backdrop: PopupBackdrop = PopupBackdrop.new()
|
||||
backdrop.name = "PopupBackdrop"
|
||||
backdrop.color = Color(0, 0, 0, 0.55)
|
||||
backdrop.mouse_filter = Control.MOUSE_FILTER_STOP
|
||||
backdrop._popups = popups
|
||||
parent.add_child(backdrop)
|
||||
backdrop.color = backdrop.get_theme_color(&"backdrop", &"Palette")
|
||||
backdrop.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
||||
for popup: BasePopup in popups:
|
||||
parent.move_child(popup, -1)
|
||||
|
||||
@@ -25,15 +25,12 @@ var shortcuts_dic: Dictionary = {
|
||||
@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:
|
||||
shortcuts_dic.sort()
|
||||
Settings.delete_children(shortcuts_vbox)
|
||||
|
||||
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.text = "Shortcuts"
|
||||
shortcuts_vbox.add_child(title)
|
||||
@@ -45,23 +42,21 @@ func _ready() -> void:
|
||||
hbox.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||
|
||||
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.text = shortcut
|
||||
label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||
label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
|
||||
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.text = shortcuts_dic[shortcut]
|
||||
label2.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||
label2.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
|
||||
if count % 2 == 0:
|
||||
var new_stylebox_normal: Resource = panel.get_theme_stylebox("panel").duplicate()
|
||||
new_stylebox_normal.bg_color = Color(0.18, 0.18, 0.18)
|
||||
panel.add_theme_stylebox_override("panel", new_stylebox_normal)
|
||||
panel.theme_type_variation = &"ShortcutRowDark"
|
||||
|
||||
hbox.add_child(label)
|
||||
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:
|
||||
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.add_theme_color_override("font_color", Color(1, 0.5, 0))
|
||||
label.text = text
|
||||
vbox.add_child(label)
|
||||
|
||||
|
||||
# Items alternate between white and orange text as well as background shade
|
||||
func make_soundtrack_row(text: String, row: int) -> ListRow:
|
||||
var list_row: ListRow = ListRow.create(text, row, 18, HORIZONTAL_ALIGNMENT_CENTER)
|
||||
if row % 2 != 0:
|
||||
list_row.label.add_theme_color_override("font_color", Color(1, 0.5, 0))
|
||||
return list_row
|
||||
var label_style: StringName = &"HighlightMedium" if row % 2 != 0 else &"TextMedium"
|
||||
return ListRow.create(text, row, label_style, HORIZONTAL_ALIGNMENT_CENTER)
|
||||
|
||||
|
||||
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")
|
||||
|
||||
[gui]
|
||||
|
||||
theme/custom="res://themes/main_theme.tres"
|
||||
|
||||
[input]
|
||||
|
||||
ui_accept={
|
||||
|
||||
@@ -2,13 +2,12 @@
|
||||
|
||||
[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="Theme" uid="uid://rxexo3ur85as" path="res://themes/light_gray_theme.tres" id="7_wxbv6"]
|
||||
|
||||
[node name="MusicListPanel" type="PanelContainer" unique_id=2011292375]
|
||||
layout_mode = 3
|
||||
theme = ExtResource("7_wxbv6")
|
||||
offset_right = 1088.0
|
||||
offset_bottom = 512.0
|
||||
theme_type_variation = &"MusicList"
|
||||
script = ExtResource("part_script")
|
||||
|
||||
[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"]
|
||||
|
||||
[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]
|
||||
layout_mode = 3
|
||||
offset_right = 1088.0
|
||||
@@ -17,13 +11,13 @@ script = ExtResource("part_script")
|
||||
[node name="SoundtrackLabel" type="Label" parent="." unique_id=173147793]
|
||||
custom_minimum_size = Vector2(1, 1)
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_qspbu")
|
||||
theme_type_variation = &"TitleLarge"
|
||||
horizontal_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="SongLabel" type="Label" parent="." unique_id=1687490027]
|
||||
custom_minimum_size = Vector2(1, 1)
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_3m52w")
|
||||
theme_type_variation = &"TitleMedium"
|
||||
horizontal_alignment = 1
|
||||
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="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"]
|
||||
|
||||
[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"]
|
||||
custom_minimum_size = Vector2(2.08165e-12, 40)
|
||||
layout_mode = 3
|
||||
@@ -39,7 +24,7 @@ grow_vertical = 2
|
||||
[node name="Panel4" type="Panel" parent="HBoxContainer"]
|
||||
custom_minimum_size = Vector2(5, 40)
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_821k2")
|
||||
theme_type_variation = &"DarkSpacer"
|
||||
|
||||
[node name="Name" type="Label" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
@@ -55,7 +40,7 @@ text_overrun_behavior = 3
|
||||
[node name="Panel3" type="Panel" parent="HBoxContainer"]
|
||||
custom_minimum_size = Vector2(16, 2.08165e-12)
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_w10e8")
|
||||
theme_type_variation = &"DarkSpacer"
|
||||
|
||||
[node name="Character" type="TextureButton" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
@@ -70,7 +55,7 @@ stretch_mode = 5
|
||||
[node name="Panel2" type="Panel" parent="HBoxContainer"]
|
||||
custom_minimum_size = Vector2(30, 40)
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_78a8g")
|
||||
theme_type_variation = &"DarkSpacer"
|
||||
|
||||
[node name="AddPoint" type="Button" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
@@ -83,7 +68,7 @@ text = "+1"
|
||||
[node name="Panel5" type="Panel" parent="HBoxContainer"]
|
||||
custom_minimum_size = Vector2(3, 40)
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_i56hb")
|
||||
theme_type_variation = &"DarkSpacer"
|
||||
|
||||
[node name="RemovePoint" type="Button" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
@@ -96,7 +81,7 @@ text = "-1"
|
||||
[node name="Panel" type="Panel" parent="HBoxContainer"]
|
||||
custom_minimum_size = Vector2(30, 40)
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_b2crt")
|
||||
theme_type_variation = &"DarkSpacer"
|
||||
|
||||
[node name="RemovePlayer" type="TextureButton" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -13,12 +13,6 @@ unicode = 63743
|
||||
[sub_resource type="Shortcut" id="Shortcut_jafqj"]
|
||||
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]
|
||||
layout_mode = 3
|
||||
offset_right = 641.0
|
||||
@@ -60,7 +54,7 @@ layout_mode = 2
|
||||
[node name="Panel" type="Panel" parent="VBoxContainer/AddPlayerContainer" unique_id=1569854056]
|
||||
layout_mode = 2
|
||||
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]
|
||||
unique_name_in_owner = true
|
||||
@@ -80,7 +74,7 @@ text = "Add"
|
||||
custom_minimum_size = Vector2(2.08165e-12, 40)
|
||||
layout_mode = 2
|
||||
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]
|
||||
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="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"]
|
||||
custom_minimum_size = Vector2(1000, 0)
|
||||
offset_right = 1088.0
|
||||
offset_bottom = 59.0
|
||||
theme = ExtResource("1_x7fq8")
|
||||
theme_type_variation = &"SongRow"
|
||||
script = ExtResource("1_lspki")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
@@ -23,9 +21,7 @@ custom_minimum_size = Vector2(865, 28)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
mouse_filter = 1
|
||||
theme = ExtResource("1_x7fq8")
|
||||
theme_override_font_sizes/font_size = 20
|
||||
theme_override_styles/normal = ExtResource("3_5h84f")
|
||||
theme_type_variation = &"SongRowLabel"
|
||||
text = "Final Fantasy Dissidia 012 Duodecim (Sista Fantasin Meningsskiljaktigheter 012 Tolv) - 'Crystal Cave -arrange-'' from FINAL FANTASY III"
|
||||
autowrap_mode = 2
|
||||
|
||||
|
||||
@@ -65,4 +65,4 @@ func show_soundtracks(list: Array) -> void:
|
||||
soundtracks.append_array(list)
|
||||
Settings.delete_children(_rows)
|
||||
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
|
||||
song_list_label.custom_minimum_size = Vector2(1000 - size_to_change, 28)
|
||||
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()
|
||||
|
||||
|
||||
|
||||
+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",
|
||||
}
|
||||
|
||||
## 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
|
||||
## state names are what the popups were first called, so screenshots taken before they
|
||||
## 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/order", SOUNDTRACKS)
|
||||
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/addQue", PackedByteArray())
|
||||
server.respond_json("/music/info", SONG_INFO)
|
||||
@@ -64,6 +71,16 @@ static func make_server() -> FakeHttpTransport:
|
||||
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
|
||||
## window is created.
|
||||
static func prepare_autoloads() -> void:
|
||||
@@ -104,6 +121,10 @@ func run(on_state: Callable) -> void:
|
||||
_call("play_next_song")
|
||||
await _settle()
|
||||
_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(1).add_point()
|
||||
|
||||
@@ -1,73 +1,14 @@
|
||||
extends GdUnitTestSuite
|
||||
## Checks that every node of the main window is where it was before the window was
|
||||
## split into scenes.
|
||||
## Checks that every node of the main window is where it was when the baseline was taken.
|
||||
##
|
||||
## [code]tests/data/layout_baseline.json[/code] was written by
|
||||
## [code]tools/take_screenshots.gd[/code] before the split. It holds the position, size
|
||||
## and visibility of every node in each UiTour state, keyed by the node's old path. This
|
||||
## test runs the same tour and compares, after moving each old path to where the node
|
||||
## lives now.
|
||||
## [code]tests/data/layout_baseline.json[/code] is written by
|
||||
## [code]tools/take_screenshots.gd[/code] (run it with --headless and copy its layout.json).
|
||||
## It holds the position, size and visibility of every node in each UiTour state, keyed
|
||||
## by the node's path from the main window. Take a new baseline when the layout is
|
||||
## meant to change, e.g. after moving a button.
|
||||
|
||||
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.
|
||||
## Their position and width are still checked.
|
||||
const HEIGHT_FOLLOWS_TEXT: Array[String] = [
|
||||
@@ -105,21 +46,6 @@ func after() -> void:
|
||||
_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:
|
||||
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()
|
||||
for state: String in baseline:
|
||||
var actual: Dictionary = _layout.get(state, {})
|
||||
for old_path: String in baseline[state]:
|
||||
var path: String = new_path(old_path)
|
||||
var expected: Dictionary = baseline[state][old_path]
|
||||
for path: String in baseline[state]:
|
||||
var expected: Dictionary = baseline[state][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
|
||||
var rect: Array = actual[path].rect
|
||||
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.
|
||||
|
||||
const MAIN_WINDOW_CHILDREN: Array[String] = [
|
||||
"TopBar", "Quiz", "PopupBackdrop", "SearchPopup", "SyncPopup", "QRPopup",
|
||||
"Background", "TopBar", "Quiz", "PopupBackdrop", "SearchPopup", "SyncPopup", "QRPopup",
|
||||
"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
|
||||
|
||||
|
||||
## 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:
|
||||
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")
|
||||
|
||||
|
||||
func test_neighbouring_rows_have_different_backgrounds() -> void:
|
||||
var first: ListRow = auto_free(ListRow.create("Chrono Trigger", 0, 20))
|
||||
var second: ListRow = auto_free(ListRow.create("Chrono Cross", 1, 20))
|
||||
var third: ListRow = auto_free(ListRow.create("Xenogears", 2, 20))
|
||||
var first: ListRow = _shown(ListRow.create("Chrono Trigger", 0, &"TextLarge"))
|
||||
var second: ListRow = _shown(ListRow.create("Chrono Cross", 1, &"TextLarge"))
|
||||
var third: ListRow = _shown(ListRow.create("Xenogears", 2, &"TextLarge"))
|
||||
|
||||
assert_that(_background(first)).is_not_equal(_background(second))
|
||||
assert_that(_background(first)).is_equal(_background(third))
|
||||
|
||||
|
||||
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)
|
||||
@@ -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