Add build directory to .gitignore, create export presets for Web and Windows Desktop, adjust z-index and mouse filter in level_1.tscn, add update_game_state function in level.gd, change main_scene path in project.godot, set rendering method to "gl_compatibility", add LevelSelect and related nodes in main_menu.tscn, create scene_manager.tscn with MainMenu node, implement functionality for menu button selection in main_menu.gd.
This commit is contained in:
parent
ca4788ce6f
commit
b6cdb68b4e
21 changed files with 499 additions and 10 deletions
38
scenes/scripts/main_menu.gd
Normal file
38
scenes/scripts/main_menu.gd
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
extends Level
|
||||
class_name MainMenu
|
||||
|
||||
@onready var level_select = get_node("%MenuButton")
|
||||
@onready var high_scores = get_node("%HighScores")
|
||||
@onready var exit_button = get_node("%ExitGame")
|
||||
|
||||
func _ready():
|
||||
level_select.get_popup().id_pressed.connect(_on_item_menu_pressed)
|
||||
high_scores.connect("pressed", Callable(self, "on_high_scores_pressed"))
|
||||
exit_button.connect("pressed", Callable(self, "on_exit_pressed"))
|
||||
update_game_state()
|
||||
|
||||
|
||||
func _on_item_menu_pressed(id):
|
||||
## Load the appropriate level based on the selection that has been made
|
||||
Log.pr(id)
|
||||
|
||||
match id:
|
||||
1:
|
||||
# Load level 1
|
||||
SceneMgr.load_scene("LEVEL1")
|
||||
#get_tree().change_scene_to_file("res://levels/level_1.tscn")
|
||||
2:
|
||||
# Load level 2
|
||||
SceneMgr.load_scene("LEVEL2")
|
||||
3:
|
||||
# Load level 3
|
||||
SceneMgr.load_scene("LEVEL3")
|
||||
|
||||
func on_high_scores_pressed():
|
||||
## Load the high scores screen
|
||||
Log.pr("High scores button pressed")
|
||||
pass
|
||||
|
||||
func on_exit_pressed():
|
||||
# Quit the game
|
||||
get_tree().quit()
|
||||
33
scenes/scripts/scene_manager.gd
Normal file
33
scenes/scripts/scene_manager.gd
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
extends Node2D
|
||||
class_name SceneManager
|
||||
|
||||
const SCENES : Dictionary = {
|
||||
"MAINMENU" : "res://scenes/main_menu.tscn",
|
||||
"HIGHSCORES" : "res://scenes/highscores.tscn",
|
||||
"LEVEL1" : "res://levels/level_1.tscn",
|
||||
"LEVEL2" : "res://levels/level_2.tscn",
|
||||
"LEVEL3" : "res://levels/level_3.tscn",
|
||||
"LEVEL4" : "res://levels/level_4.tscn",
|
||||
"LEVEL5" : "res://levels/level_5.tscn",
|
||||
"LEVEL6" : "res://levels/level_6.tscn",
|
||||
}
|
||||
|
||||
var loading_scene_res : Resource = null
|
||||
|
||||
func _ready():
|
||||
Log.pr("SceneManager is ready.")
|
||||
SceneMgr.connect("change_scene", Callable(self, "_on_change_scene"))
|
||||
$TransitionScene.connect("transitioned", Callable(self, "_on_transition_scene_transitioned"))
|
||||
|
||||
func _on_change_scene(scene_name):
|
||||
Log.pr("Going to load a scene.", scene_name)
|
||||
if SCENES.has(scene_name):
|
||||
loading_scene_res = load(SCENES[scene_name])
|
||||
Log.pr("Loading scene: ", loading_scene_res)
|
||||
$TransitionScene.transition()
|
||||
else:
|
||||
loading_scene_res = null
|
||||
|
||||
func _on_transition_scene_transitioned():
|
||||
$CurrentScene.get_child(0).queue_free()
|
||||
$CurrentScene.add_child(loading_scene_res.instantiate())
|
||||
19
scenes/scripts/transition_scene.gd
Normal file
19
scenes/scripts/transition_scene.gd
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
extends CanvasLayer
|
||||
|
||||
signal transitioned
|
||||
|
||||
func _ready():
|
||||
$AnimationPlayer.play("fade_to_normal")
|
||||
|
||||
func transition():
|
||||
$AnimationPlayer.play("fade_to_black")
|
||||
Log.pr("Fading to black")
|
||||
|
||||
func _on_animation_player_animation_finished(anim_name:StringName):
|
||||
if anim_name == "fade_to_black":
|
||||
Log.pr("Sending transitioned signal...")
|
||||
emit_signal("transitioned")
|
||||
$AnimationPlayer.play("fade_to_normal")
|
||||
if anim_name == "fade_to_normal":
|
||||
Log.pr("Faded to normal")
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue