extends Control

@onready
var about_panel: Panel = %AboutPanel

@onready
var version_label: Label = %VersionLabel

@onready
var whats_new_label: Label = %WhatsNewLabel



# Changelog as Dictionary with version as key and description as value
const WHATS_NEW: Dictionary = {
	"1.8.5": "#9: New winner screen with positions of all players
	#32: New setting for how long to hide the beginning
	#33: Fixed bug with hiding beginning when song restarts",
	"1.8.0": "#14: Updated About page
	#15: Create new keymap page
	#20: The winner song can now be stopped
	#24: The speed of the inspiration list can now be changed
	#29: New settings to hide time left and things like that
	#31: Added a QR page",
	"1.7.0": "#22: Now block add player if player name is empty
	#23: Add a log for when points are given to players
	#25: Fixed some graphical stuff
	#26: Changed so the same character can be on a song multiple times
	#27: Turning off statistics after win",
	"1.6.1": "#17: Removed Debug text in release
	#18: Fixed bug with new character select screen",
	"1.6.0": "#1: Fixed bug with inspiration list not reloading after sync
	#2: New dialog for sync
	#4: Now downloads characters from the server
	#5: New character select screen
	#6: Now show progress during sync
	#7: Blocking all requests to the server during sync
	#8: Added functionality to cache more than one song",
	"1.5.0": "Made big changes to players and the song list and how the local song list works",
	"0.9.0-Beta": "Fixed settings and updated the player view",
	"0.8.0-Beta": "Fixed reset buttons and some other small things",
	"0.7.8-Beta": "Added shortcuts. Added dialog for winner. Started cleaning code.",
	"0.7.5-Beta": "Added settings menu, most things don't do anything yet",
	"0.7-Beta": "Can now hop between songs"
}


func _input(event: InputEvent) -> void:
	if self.visible == true:
		if event is InputEventMouseButton && event.is_pressed():
			var evLocal: InputEvent = make_input_local(event)
			if !Rect2(Vector2(0, 0), about_panel.size).has_point(evLocal.position):
				self.visible = false


func show_window() -> void:
	visible = true
	version_label.text = Settings.version
	
	# Build changelog text with version headers
	var changelog_text: String = ""
	for version: String in WHATS_NEW.keys():
		changelog_text += "\n" + version + "\n"
		changelog_text += WHATS_NEW[version] + "\n"
	
	whats_new_label.text = changelog_text


func hide_window() -> void:
	visible = false
