taqin/src/NewGamePanel.gd

78 lines
3.1 KiB
GDScript3
Raw Normal View History

2020-04-13 17:54:11 +02:00
tool
class_name NewGamePanel
extends PopupPanel
signal start_triggered(config)
2020-05-22 15:34:52 +02:00
const pref_path = "user://preferences.cfg"
2020-05-23 19:02:18 +02:00
export var window_scale_factor = 0.9 # how big the popup will be compared to screen
2020-05-22 15:34:52 +02:00
var preferences = ConfigFile.new()
2020-05-23 18:27:02 +02:00
var fade_duration = 0.2
2020-05-23 19:02:18 +02:00
var fade_scale_factor = 0.9
2020-05-23 18:27:02 +02:00
2020-05-29 16:55:20 +02:00
onready var popup = $"."
onready var panel = $Panel
2020-05-23 18:27:02 +02:00
onready var tween = $Tween
2020-05-28 19:03:23 +02:00
onready var easy_button = $Panel/Difficulty/Easy
onready var normal_button = $Panel/Difficulty/Normal
onready var hard_button = $Panel/Difficulty/Hard
2020-05-22 15:34:52 +02:00
2020-04-13 17:54:11 +02:00
func _init():
2020-05-22 15:34:52 +02:00
var err = preferences.load(pref_path)
2020-04-13 17:54:11 +02:00
func _ready():
2020-05-29 16:55:20 +02:00
assert(popup.theme != null)
var popup_style : = popup.get_stylebox("panel", "PopupPanel") as StyleBoxFlat
assert(popup_style != null)
var panel_style := panel.get_stylebox("panel", "Panel") as StyleBoxFlat
assert(panel_style != null)
var modified_panel_style = panel_style.duplicate()
modified_panel_style.corner_radius_bottom_left = popup_style.corner_radius_bottom_left
modified_panel_style.corner_radius_bottom_right = popup_style.corner_radius_bottom_right
modified_panel_style.corner_radius_top_left = popup_style.corner_radius_top_left
modified_panel_style.corner_radius_top_right = popup_style.corner_radius_top_right
panel.set("custom_styles/panel", modified_panel_style)
2020-04-13 17:54:11 +02:00
2020-05-23 18:27:02 +02:00
func fade_out():
tween.remove_all()
2020-05-23 19:02:18 +02:00
tween.interpolate_property(self, "rect_scale", Vector2(1.0, 1.0), Vector2(fade_scale_factor, fade_scale_factor), fade_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
var scaled_center_position: Vector2 = (OS.window_size - (rect_size * fade_scale_factor)) / 2
tween.interpolate_property(self, "rect_position", rect_position, scaled_center_position, fade_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
2020-05-23 18:27:02 +02:00
tween.interpolate_property(self, "modulate:a", 1.0, 0.0, fade_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.interpolate_callback(self, fade_duration, "hide")
tween.start()
2020-04-13 17:54:11 +02:00
func _on_Cancel_pressed():
2020-05-23 18:27:02 +02:00
fade_out()
2020-04-13 17:54:11 +02:00
func _on_Start_pressed():
2020-05-28 19:03:23 +02:00
if easy_button.pressed:
2020-05-22 15:34:52 +02:00
preferences.set_value("game", "difficulty", "easy")
2020-05-28 19:03:23 +02:00
if normal_button.pressed:
2020-05-22 15:34:52 +02:00
preferences.set_value("game", "difficulty", "normal")
2020-05-28 19:03:23 +02:00
if hard_button.pressed:
2020-05-22 15:34:52 +02:00
preferences.set_value("game", "difficulty", "hard")
preferences.save(pref_path)
emit_signal("start_triggered", preferences)
2020-05-23 18:27:02 +02:00
fade_out()
2020-05-22 15:34:52 +02:00
func _on_NewGamePanel_about_to_show():
var difficulty = preferences.get_value("game", "difficulty", "normal")
2020-05-28 19:03:23 +02:00
easy_button.pressed = difficulty == "easy"
normal_button.pressed = difficulty == "normal"
hard_button.pressed = difficulty == "hard"
2020-05-22 15:34:52 +02:00
$Panel/Start.grab_focus()
2020-05-23 18:27:02 +02:00
2020-05-23 19:02:18 +02:00
var size = OS.window_size * window_scale_factor
tween.interpolate_property(self, "rect_scale", Vector2(fade_scale_factor, fade_scale_factor), Vector2(1.0, 1.0), fade_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
var original_position: Vector2 = (OS.window_size - size) / 2
var scaled_center_position: Vector2 = (OS.window_size - (size * fade_scale_factor)) / 2
tween.interpolate_property(self, "rect_position", scaled_center_position, original_position, fade_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.interpolate_property(self, "modulate:a", 0.0, 1.0, fade_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
2020-05-23 18:27:02 +02:00
tween.start()