make Game.gd not rely on autoload/global
This commit is contained in:
@ -22,7 +22,7 @@ func generate_rarity() -> int:
|
||||
for rarity: String in Data.Rarity:
|
||||
weight_total += Data.rarity_weights[rarity]
|
||||
|
||||
var generated_rarity: int = Game.randi_in_range(4 * cards_generated, 0, weight_total)
|
||||
var generated_rarity: int = NoiseRandom.randi_in_range(4 * cards_generated, 0, weight_total)
|
||||
cards_generated += 1
|
||||
var decided_rarity: int = 0
|
||||
|
||||
@ -53,7 +53,7 @@ func randomize_cards(faction: Card.Faction) -> void:
|
||||
decided_rarity -= 1
|
||||
var card: Card
|
||||
if card_array.size() > 0:
|
||||
card = card_array[Game.randi_in_range(132 * cards_generated, 0, card_array.size() - 1)]
|
||||
card = card_array[NoiseRandom.randi_in_range(132 * cards_generated, 0, card_array.size() - 1)]
|
||||
cards_generated += 1
|
||||
card_array.erase(card)
|
||||
var item: CardItem = reply_player.hero_class.card_item.instantiate() as CardItem
|
||||
|
@ -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()
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -42,7 +42,7 @@ func randomize_cards() -> void:
|
||||
var chosen_card: Card = null
|
||||
for x: int in 3:
|
||||
if cheap_cards.size() > 0:
|
||||
chosen_card = cheap_cards[Game.randi_in_range(12 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
chosen_card = cheap_cards[NoiseRandom.randi_in_range(12 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
cards_generated += 1
|
||||
if chosen_card != null:
|
||||
cards[x].set_card(chosen_card)
|
||||
@ -53,9 +53,9 @@ func randomize_cards() -> void:
|
||||
Data.save_data.saw_mage_card_in_shop()
|
||||
for x: int in 2:
|
||||
if medium_cards.size() > 0:
|
||||
chosen_card = medium_cards[Game.randi_in_range(9 * cards_generated, 0, medium_cards.size() - 1)]
|
||||
chosen_card = medium_cards[NoiseRandom.randi_in_range(9 * cards_generated, 0, medium_cards.size() - 1)]
|
||||
elif cheap_cards.size() > 0:
|
||||
chosen_card = cheap_cards[Game.randi_in_range(9 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
chosen_card = cheap_cards[NoiseRandom.randi_in_range(9 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
cards_generated += 1
|
||||
if chosen_card != null:
|
||||
cards[x+3].set_card(chosen_card)
|
||||
@ -66,11 +66,11 @@ func randomize_cards() -> void:
|
||||
Data.save_data.saw_mage_card_in_shop()
|
||||
for x: int in 1:
|
||||
if pricey_cards.size() > 0:
|
||||
chosen_card = pricey_cards[Game.randi_in_range(50 * cards_generated, 0, pricey_cards.size() - 1)]
|
||||
chosen_card = pricey_cards[NoiseRandom.randi_in_range(50 * cards_generated, 0, pricey_cards.size() - 1)]
|
||||
elif medium_cards.size() > 0:
|
||||
chosen_card = medium_cards[Game.randi_in_range(50 * cards_generated, 0, medium_cards.size() - 1)]
|
||||
chosen_card = medium_cards[NoiseRandom.randi_in_range(50 * cards_generated, 0, medium_cards.size() - 1)]
|
||||
elif cheap_cards.size() > 0:
|
||||
chosen_card = cheap_cards[Game.randi_in_range(50 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
chosen_card = cheap_cards[NoiseRandom.randi_in_range(50 * cards_generated, 0, cheap_cards.size() - 1)]
|
||||
cards_generated += 1
|
||||
if chosen_card != null:
|
||||
cards[x+5].set_card(chosen_card)
|
||||
|
@ -5,6 +5,7 @@ class_name TowerBase extends StaticBody3D
|
||||
@export var collider: CollisionShape3D
|
||||
@export var minimap_icon: Sprite3D
|
||||
|
||||
var game_manager: GameManager
|
||||
var owner_id: int
|
||||
var point: FlowNode
|
||||
var tower: Tower = null
|
||||
@ -51,8 +52,8 @@ func networked_spawn_tower(card_index: int, caller_id: int) -> void:
|
||||
|
||||
@rpc("reliable", "call_local", "any_peer")
|
||||
func networked_remove_tower() -> void:
|
||||
Game.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
|
||||
Game.connected_players_nodes[tower.owner_id].unready_self()
|
||||
game_manager.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
|
||||
game_manager.connected_players_nodes[tower.owner_id].unready_self()
|
||||
tower.queue_free()
|
||||
tower = null
|
||||
minimap_icon.modulate = Color.GREEN
|
||||
|
Reference in New Issue
Block a user