make Game.gd not rely on autoload/global

This commit is contained in:
2025-06-24 01:14:50 +10:00
parent 20cde0a778
commit 64befd8ec7
33 changed files with 194 additions and 411 deletions

View File

@ -9,18 +9,20 @@ class_name GameEndScreen extends PanelContainer
@export var total_losses_label: Label
@export var undefeated_enemies: VBoxContainer
var game_manager: GameManager
func _ready() -> void:
winrate_label.text = "Your 20-game winrate is now: " + str(Data.save_data.winrate) + "%!"
total_games_label.text = "Total games: " + str(Data.save_data.wins + Data.save_data.losses)
total_wins_label.text = "Total wins: " + str(Data.save_data.wins)
total_losses_label.text = "Total losses: " + str(Data.save_data.losses)
for wave_key: int in Game.stats.enemies_undefeated:
for wave_key: int in game_manager.stats.enemies_undefeated:
var spawned_box: EnemyBox = box.instantiate() as EnemyBox
undefeated_enemies.add_child(spawned_box)
spawned_box.set_wave(wave_key)
for enemy_key: Enemy in Game.stats.enemies_undefeated[wave_key]:
spawned_box.add_enemy_tag(enemy_key, Game.stats.enemies_undefeated[wave_key][enemy_key])
for enemy_key: Enemy in game_manager.stats.enemies_undefeated[wave_key]:
spawned_box.add_enemy_tag(enemy_key, game_manager.stats.enemies_undefeated[wave_key][enemy_key])
func set_outcome_message(message: String) -> void:
@ -28,15 +30,15 @@ func set_outcome_message(message: String) -> void:
func _on_quit_button_pressed() -> void:
Game.scene_switch_main_menu()
game_manager.scene_switch_main_menu()
queue_free()
func _on_play_button_pressed() -> void:
if Game.gamemode.daily == false and !Game.gamemode.seeded:
Game.gamemode.rng_seed = randi()
Game.setup()
Game.start()
if game_manager.gamemode.daily == false and !game_manager.gamemode.seeded:
game_manager.gamemode.rng_seed = randi()
game_manager.setup()
game_manager.start()
queue_free()

View File

@ -1,5 +1,8 @@
class_name MainMenu extends Control
signal singleplayer_game_requested
signal multiplayer_game_requested
@export var bg_level: Level
@export var game_select_menu: Control
@export var main_controls: Control
@ -7,6 +10,7 @@ class_name MainMenu extends Control
@export var profile_controls: Control
@export var mods_controls: ModMenu
var game: GameManager
var gamemode: GameMode = GameMode.new()
var confirmation_popup_scene: PackedScene = preload("res://Scenes/Menus/confirmation_popup.tscn")
@ -24,7 +28,7 @@ func _ready() -> void:
#bg_level.a_star_graph_3d.build_random_maze(70)
#bg_level.a_star_graph_3d.place_random_towers(30)
#bg_level.a_star_graph_3d.disable_all_tower_frames()
Game.level = bg_level
#Game.level = bg_level
#WaveManager.generate_wave(WaveManager.calculate_spawn_power(50, 4), bg_level.enemy_pool, bg_level.enemy_spawns)
#for spawn: EnemySpawner in bg_level.enemy_spawns:
# spawn.enemy_died_callback = enemy_died
@ -67,6 +71,7 @@ func quit_game(confirmation: bool) -> void:
func _on_options_button_pressed() -> void:
var menu: OptionsMenu = options_menu_scene.instantiate()
menu.game_manager = game
add_child(menu)
@ -75,12 +80,11 @@ func _on_button_mouse_entered() -> void:
func start_game() -> void:
Game.level = null
Game.gamemode = gamemode
if gamemode.multiplayer:
Game.scene_switch_to_multiplayer_lobby()
game.gamemode = gamemode
if !gamemode.multiplayer:
singleplayer_game_requested.emit()
else:
Game.scene_switch_to_singleplayer_lobby()
multiplayer_game_requested.emit()
func _on_play_button_pressed() -> void:
@ -96,7 +100,7 @@ func _on_multiplayer_button_pressed() -> void:
func open_game_menu() -> void:
main_controls.visible = false
game_select_menu.visible = true
func _on_back_button_pressed() -> void:
main_controls.visible = true

View File

@ -1,9 +1,12 @@
class_name PauseMenu extends Control
signal closed()
signal closed
signal quit_to_main_menu_pressed
signal quit_to_desktop_pressed
var options_menu_scene: PackedScene = preload("res://Scenes/Menus/options_menu.tscn")
var confirmation_popup_scene: PackedScene = preload("res://Scenes/Menus/confirmation_popup.tscn")
var game_manager: GameManager
func _unhandled_input(event: InputEvent) -> void:
@ -19,6 +22,7 @@ func _on_resume_pressed() -> void:
func _on_options_pressed() -> void:
var menu: OptionsMenu = options_menu_scene.instantiate()
menu.game_manager = game_manager
add_child(menu)
@ -31,7 +35,7 @@ func _on_quit_to_main_menu_pressed() -> void:
func return_to_menu(confirmation: bool) -> void:
if confirmation:
Game.scene_switch_main_menu()
quit_to_main_menu_pressed.emit()
func _on_quit_to_desktop_pressed() -> void:
@ -43,7 +47,7 @@ func _on_quit_to_desktop_pressed() -> void:
func quit_game(confirmation: bool) -> void:
if confirmation:
Game.quit_to_desktop()
quit_to_desktop_pressed.emit()
func _on_button_mouse_entered() -> void: