GameLog.debug() prints only in debug builds, and GameLog.warning() reports problems such as unexpected server data or failed downloads.
121 lines
3.1 KiB
GDScript
121 lines
3.1 KiB
GDScript
extends Control
|
|
## The main window: the top bar, the popups opened from it and the quiz below it.
|
|
##
|
|
## Everything that is not part of a quiz lives here, so other views can be added next
|
|
## to the quiz later.
|
|
|
|
@onready
|
|
var top_bar: TopBar = $TopBar
|
|
|
|
@onready
|
|
var quiz: Quiz = $Quiz
|
|
|
|
@onready
|
|
var search_view: Control = $Search
|
|
|
|
@onready
|
|
var sync_window: Control = %SyncWindow
|
|
|
|
@onready
|
|
var shortcuts_window: Control = %ShortcutsWindow
|
|
|
|
@onready
|
|
var qr_window: Control = %QRWindow
|
|
|
|
@onready
|
|
var about_window: Control = %AboutWindow
|
|
|
|
@onready
|
|
var log_window: Control = %Log
|
|
|
|
@onready
|
|
var statistic_popup: PopupPanel = $StatisticsPopupPanel
|
|
|
|
@onready
|
|
var statistic_label: Label = $StatisticsPopupPanel/StatisticsLabel
|
|
|
|
## Dims the window behind an open popup and keeps clicks from reaching the buttons under it.
|
|
var popup_backdrop: PopupBackdrop
|
|
|
|
|
|
func _ready() -> void:
|
|
popup_backdrop = PopupBackdrop.add_to(self, _popups())
|
|
if OS.has_feature("macos"):
|
|
GameLog.debug("is_mac")
|
|
top_bar.search_pressed.connect(show_search)
|
|
top_bar.sync_pressed.connect(sync_soundtracks)
|
|
top_bar.statistics_pressed.connect(get_statistics)
|
|
top_bar.shortcuts_pressed.connect(show_shortcuts)
|
|
top_bar.about_pressed.connect(show_about)
|
|
top_bar.qr_pressed.connect(show_qr)
|
|
|
|
sync_window.connect("sync_started", _on_sync_started)
|
|
sync_window.connect("sync_finished", _on_sync_finished)
|
|
quiz.server_changed.connect(search_view.get_list_of_soundtracks)
|
|
quiz.event_logged.connect(log_window.add_log_row)
|
|
|
|
search_view.get_list_of_soundtracks()
|
|
|
|
|
|
func _input(event: InputEvent) -> void:
|
|
if event is InputEventKey and event.pressed:
|
|
if event.alt_pressed && event.keycode == KEY_ENTER:
|
|
GameLog.debug("Alt + Enter pressed")
|
|
Settings.fullscreen = !Settings.fullscreen
|
|
if Settings.fullscreen == true:
|
|
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
|
|
if Settings.fullscreen == false:
|
|
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
|
|
if event.alt_pressed && event.keycode == KEY_K:
|
|
shortcuts_window.toggle()
|
|
if event.alt_pressed && event.keycode == KEY_L:
|
|
log_window.toggle()
|
|
|
|
|
|
func _popups() -> Array[PopupWindow]:
|
|
return [search_view, sync_window, qr_window, shortcuts_window, about_window, log_window]
|
|
|
|
|
|
func show_search() -> void:
|
|
GameLog.debug("show_search")
|
|
search_view.toggle()
|
|
|
|
|
|
func show_about() -> void:
|
|
GameLog.debug("show_about")
|
|
about_window.open()
|
|
|
|
|
|
func show_shortcuts() -> void:
|
|
GameLog.debug("show_shortcuts")
|
|
shortcuts_window.open()
|
|
|
|
|
|
func show_qr() -> void:
|
|
GameLog.debug("show_qr")
|
|
qr_window.open()
|
|
|
|
|
|
func get_statistics() -> void:
|
|
GameLog.debug("get_statistics")
|
|
statistic_popup.visible = true
|
|
statistic_label.text = "Total amount of soundtracks in the playlist: " \
|
|
+ str(search_view.soundtracks.size())
|
|
|
|
|
|
func sync_soundtracks() -> void:
|
|
GameLog.debug("sync_soundtracks")
|
|
sync_window.start_sync()
|
|
|
|
|
|
func _on_sync_started() -> void:
|
|
GameLog.debug("_on_sync_started")
|
|
top_bar.sync_button.disabled = false
|
|
quiz.lock_for_sync()
|
|
|
|
|
|
func _on_sync_finished() -> void:
|
|
GameLog.debug("_on_sync_finished")
|
|
search_view.get_list_of_soundtracks()
|
|
quiz.on_sync_finished()
|