Short songs (#30): a quiz settings switch and a Seconds per song row (30 by default, 10-120 in steps of 5), saved with the quiz settings. Only part of each quiz song plays, from a random point 10-60% into it, picked once per song so restart and repeat play the same part. The progress bar, time and seeking stay within the part, a hidden beginning counts inside it, and its end counts as the song ending (repeat, stop or go to the next song as set). Random songs (#51): the low-played switch in Settings is now a Normal / Low played / Classic choice, stored as Settings.random_mode and not saved. fetch_random_song(mode) picks /music/rand, /music/rand/low or /music/rand/classic. Closes #30 Closes #51 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0fc3be79e1
commit
a735c515bf
20 files changed
+1325
-327
No files matched your search
@@ -205,12 +205,31 @@ action_mode = 0
|
||||
theme_type_variation = &"StepButton"
|
||||
text = "+1"
|
||||
|
||||
[node name="LowPlayedCheckButton" type="CheckButton" parent="SettingsPanel/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
[node name="RandomModeRow" type="HBoxContainer" parent="SettingsPanel/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Title" type="Label" parent="SettingsPanel/VBoxContainer/RandomModeRow"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_type_variation = &"SettingsRowLabel"
|
||||
text = "Random songs"
|
||||
|
||||
[node name="RandomModeButton" type="OptionButton" parent="SettingsPanel/VBoxContainer/RandomModeRow"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(180, 0)
|
||||
layout_mode = 2
|
||||
tooltip_text = "Normal: a random soundtrack, then one of its songs.
|
||||
Low played: the same, but soundtracks played less than average come up more often.
|
||||
Classic: every song has the same chance, whatever its soundtrack."
|
||||
focus_mode = 0
|
||||
action_mode = 0
|
||||
text = "Prefer less played soundtracks"
|
||||
selected = 0
|
||||
item_count = 3
|
||||
popup/item_0/text = "Normal"
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = "Low played"
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = "Classic"
|
||||
popup/item_2/id = 2
|
||||
|
||||
[node name="AddToDatabaseCheckButton" type="CheckButton" parent="SettingsPanel/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
class_name SettingsPopup
|
||||
extends BasePopup
|
||||
## The application settings: which MusicServer or music folder to play from, the theme,
|
||||
## fullscreen, fewer animations, how many songs to download ahead, whether to prefer less played soundtracks
|
||||
## and whether plays count in the statistics, and a button that opens the folder the
|
||||
## settings are kept in. Opened from the Settings button in the top bar.
|
||||
## fullscreen, fewer animations, how many songs to download ahead, how random songs are
|
||||
## picked and whether plays count in the statistics, and a button that opens the folder
|
||||
## the settings are kept in. Opened from the Settings button in the top bar.
|
||||
##
|
||||
## A music folder (see [MusicFolder]) is used instead of the server until Use server is
|
||||
## pressed or the game is closed. The settings that need the server are off meanwhile.
|
||||
@@ -30,7 +30,7 @@ const PADDING: Vector2 = Vector2(20, 12)
|
||||
@onready var cache_label: Label = %CacheLabel
|
||||
@onready var lower_cache_button: Button = %LowerCacheButton
|
||||
@onready var increase_cache_button: Button = %IncreaseCacheButton
|
||||
@onready var low_played_button: CheckButton = %LowPlayedCheckButton
|
||||
@onready var random_mode_button: OptionButton = %RandomModeButton
|
||||
@onready var add_to_database_button: CheckButton = %AddToDatabaseCheckButton
|
||||
@onready var rows: VBoxContainer = %VBoxContainer
|
||||
@onready var folder_label: Label = %FolderLabel
|
||||
@@ -81,8 +81,8 @@ func _ready() -> void:
|
||||
lower_cache_button.pressed.connect(lower_cache)
|
||||
increase_cache_button.pressed.connect(increase_cache)
|
||||
select_server_button.item_selected.connect(select_server)
|
||||
low_played_button.toggled.connect(
|
||||
func(on: bool) -> void: Settings.use_low_played_mode = on)
|
||||
random_mode_button.item_selected.connect(
|
||||
func(mode: int) -> void: Settings.random_mode = mode as Settings.RandomMode)
|
||||
add_to_database_button.toggled.connect(func(on: bool) -> void: Settings.add_to_stats = on)
|
||||
visibility_changed.connect(_on_visibility_changed)
|
||||
# Alt+Enter switches fullscreen from the main window, which resizes the window
|
||||
@@ -189,7 +189,7 @@ func _use_server(new_server: int) -> void:
|
||||
func _on_visibility_changed() -> void:
|
||||
if visible:
|
||||
_update_fullscreen_button()
|
||||
low_played_button.set_pressed_no_signal(Settings.use_low_played_mode)
|
||||
random_mode_button.select(Settings.random_mode)
|
||||
add_to_database_button.set_pressed_no_signal(Settings.add_to_stats)
|
||||
else:
|
||||
folder_error_label.visible = false
|
||||
@@ -224,7 +224,7 @@ func _show_music_source() -> void:
|
||||
characters_label.text = "From " + folder.display_name()
|
||||
else:
|
||||
characters_label.text = "From the server"
|
||||
for control: BaseButton in [select_server_button, low_played_button, add_to_database_button]:
|
||||
for control: BaseButton in [select_server_button, random_mode_button, add_to_database_button]:
|
||||
control.disabled = folder != null
|
||||
_fit_to_rows()
|
||||
|
||||
|
||||
Reference in new issue
Block a user