imported main menu scene addon
This commit is contained in:
50
evolve-die-repeat/scenes/menus/main_menu/main_menu.gd
Normal file
50
evolve-die-repeat/scenes/menus/main_menu/main_menu.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
extends MainMenu
|
||||
## Main menu extension that adds options.
|
||||
## The scene adds a 'Continue' button if a game is in progress.
|
||||
|
||||
## Optional scene to open when the player clicks a 'Level Select' button.
|
||||
@export var level_select_packed_scene: PackedScene
|
||||
## If true, have the player confirm before starting a new game if a game is in progress.
|
||||
@export var confirm_new_game : bool = true
|
||||
|
||||
@onready var continue_game_button = %ContinueGameButton
|
||||
@onready var level_select_button = %LevelSelectButton
|
||||
@onready var new_game_confirmation = %NewGameConfirmation
|
||||
|
||||
func load_game_scene() -> void:
|
||||
GameState.start_game()
|
||||
super.load_game_scene()
|
||||
|
||||
func new_game() -> void:
|
||||
if confirm_new_game and continue_game_button.visible:
|
||||
new_game_confirmation.show()
|
||||
else:
|
||||
GameState.reset()
|
||||
load_game_scene()
|
||||
|
||||
func _add_level_select_if_set() -> void:
|
||||
if level_select_packed_scene == null: return
|
||||
if GameState.get_levels_reached() <= 1 : return
|
||||
level_select_button.show()
|
||||
|
||||
func _show_continue_if_set() -> void:
|
||||
if GameState.get_current_level_path().is_empty(): return
|
||||
continue_game_button.show()
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
_add_level_select_if_set()
|
||||
_show_continue_if_set()
|
||||
|
||||
func _on_continue_game_button_pressed() -> void:
|
||||
GameState.continue_game()
|
||||
load_game_scene()
|
||||
|
||||
func _on_level_select_button_pressed() -> void:
|
||||
var level_select_scene := _open_sub_menu(level_select_packed_scene)
|
||||
if level_select_scene.has_signal("level_selected"):
|
||||
level_select_scene.connect("level_selected", load_game_scene)
|
||||
|
||||
func _on_new_game_confirmation_confirmed() -> void:
|
||||
GameState.reset()
|
||||
load_game_scene()
|
||||
Reference in New Issue
Block a user