conforms file names to consistant standard

This commit is contained in:
2026-02-21 04:24:04 +11:00
parent 6b67dd9755
commit 5a4ad8633a
1991 changed files with 3836 additions and 7976 deletions

View File

@@ -0,0 +1,9 @@
extends PanelContainer
func _ready() -> void:
if Data.save_data.wins > 0:
$VBoxContainer/GridContainer/FirstWin.icon.region = Rect2(36, 0, 36, 36)
if Data.save_data.mage_cassette_seen_in_shop:
$VBoxContainer/GridContainer/SeenMagecassette.icon.region = Rect2(36, 0, 36, 36)
if Data.save_data.mage_unlocked:
$VBoxContainer/GridContainer/UnlockedMage.icon.region = Rect2(36, 0, 36, 36)

View File

@@ -0,0 +1 @@
uid://cjr0pbqisd51v

View File

@@ -0,0 +1,52 @@
class_name MainMenuLevelSelector extends PanelContainer
signal level_selected(specs: LevelConfig, side_chosen: int)
var side: int = 0
@export var levels: Array[LevelConfig] = []
func _on_button_pressed() -> void:
side = 0
$VBoxContainer/Label.text = tr("LABEL_CAMPAIGN_DESC")
func _on_button_2_pressed() -> void:
side = 1
$VBoxContainer/Label.text = tr("LABEL_ENDLESS_DESC")
func _ready() -> void:
var i: int = 0
for level: LevelConfig in levels:
i += 1
var button: Button = Button.new()
button.text = "Level " + str(i)
$VBoxContainer.add_child(button)
button.pressed.connect(start_level.bind(i - 1))
button.mouse_entered.connect(hover_config.bind(i - 1))
func hover_config(level: int) -> void:
if !side:
var high_score: int = 0
if Data.save_data.level_high_scores.has(levels[level].display_title):
high_score = Data.save_data.level_high_scores[levels[level].display_title]
if high_score > 0:
$VBoxContainer/HighScoreLabel.text = "Highest Wave: " + str(high_score)
else:
$VBoxContainer/HighScoreLabel.text = "Never attempted!"
else:
var high_score: int = 0
if Data.save_data.endless_high_scores.has(levels[level].display_title):
high_score = Data.save_data.endless_high_scores[levels[level].display_title]
if high_score > 0:
$VBoxContainer/HighScoreLabel.text = "Highest B-SIDE Wave: " + str(high_score)
else:
$VBoxContainer/HighScoreLabel.text = "Never attempted!"
func start_level(level: int) -> void:
level_selected.emit(levels[level], side)

View File

@@ -0,0 +1 @@
uid://bwsw4oq150v3p

View File

@@ -0,0 +1,253 @@
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
@export var seed_entry: LineEdit
@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")
var text_input_popup_scene: PackedScene = preload("res://Scenes/Menus/text_input_popup.tscn")
var multiplayer_lobby_scene_path: String = "res://Scenes/multiplayer_lobby.tscn"
var options_menu_scene: PackedScene = preload("res://UI/Menus/OptionsMenu/options_menu.tscn")
var temp_data: SaveData
var hovered_level_config: LevelConfig
func _ready() -> void:
load_stats(Data.save_data)
#bg_level.a_star_graph_3d.make_grid()
#bg_level.a_star_graph_3d.find_path()
#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
#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
# spawn.enemy_reached_goal_callback = damage_goal
# spawn.enemy_spawned.connect(increase_enemy_count)
# spawn.spawn_wave()
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("Pause"):
return_to_main_menu()
#these exist purely to make the enemies that spawn on the main menu happy
func enemy_died(_some_arg: Enemy) -> void:
pass
func damage_goal(_some_arg1: Enemy, _some_arg2: int) -> void:
pass
func increase_enemy_count() -> void:
pass
func _on_display_name_edit_pressed() -> void:
$ProfileManager.visible = true
$ProfileManager/VBoxContainer/DisplayName/LineEdit.placeholder_text = Data.player_profile.display_name
temp_data = SaveData.load_from_disk(0)
func change_profile_display_name(display_name: String) -> void:
$ProfileEditor/VBoxContainer/HBoxContainer/DisplayName.text = display_name
Data.player_profile.set_display_name(display_name)
func _on_quit_button_pressed() -> void:
var popup: ConfirmationPopup = confirmation_popup_scene.instantiate() as ConfirmationPopup
popup.set_popup("PROMPT_QUIT", "BUTTON_CONFIRM", "BUTTON_CANCEL")
popup.completed.connect(quit_game)
add_child(popup)
func quit_game(confirmation: bool) -> void:
if confirmation:
get_tree().quit()
func _on_options_button_pressed() -> void:
var menu: OptionsMenu = options_menu_scene.instantiate()
menu.game_manager = game
add_child(menu)
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()
func start_game() -> void:
game.gamemode = gamemode
if !gamemode.multiplayer:
singleplayer_game_requested.emit()
else:
level_selected($PanelContainer.levels[0], 0)
multiplayer_game_requested.emit()
func _on_play_button_pressed() -> void:
gamemode.multiplayer = false
open_game_menu()
#TODO: Clearn this part up
#TODO: new lobby system >>
#var lobby_panel: PanelContainer
func _on_multiplayer_button_pressed() -> void:
gamemode.multiplayer = true
start_game()
#if !lobby_panel:
#lobby_panel = PanelContainer.new()
#add_child(lobby_panel)
#lobby_panel.visible = true
#lobby_panel.anchor_top = 0.1
#lobby_panel.anchor_left = 0.3
#lobby_panel.anchor_right = 0.7
#lobby_panel.anchor_bottom = 0.9
#gamemode.multiplayer = true
#open_game_menu()
func open_game_menu() -> void:
main_controls.visible = false
game_select_menu.visible = true
func _on_back_button_pressed() -> void:
main_controls.visible = true
game_select_menu.visible = false
func return_to_main_menu() -> void:
main_controls.visible = true
game_select_menu.visible = false
profile_controls.visible = false
mods_controls.visible = false
func generate_seed() -> int:
var seed_generated: int = 0
if seed_entry.text != "":
if seed_entry.text.is_valid_int():
seed_generated = int(seed_entry.text)
else:
seed_generated = hash(seed_entry.text)
gamemode.seeded = true
else:
seed_generated = randi()
return seed_generated
func level_selected(level: LevelConfig, side: int) -> void:
gamemode.endless = true if side == 1 else false
gamemode.rng_seed = generate_seed() if gamemode.endless else level.game_seed
gamemode.daily = false
if gamemode.endless:
level.allowed_cassettes = Cassette.get_role_cassettes(level.hero_class.role)
level.waves = []
game.level_config = level
if !gamemode.multiplayer:
start_game()
func _on_standard_button_pressed() -> void:
generate_seed()
gamemode.endless = false
gamemode.daily = false
start_game()
func _on_daily_button_pressed() -> void:
gamemode.rng_seed = hash(Time.get_date_string_from_system(true))
gamemode.endless = false
gamemode.daily = true
start_game()
func _on_endless_button_pressed() -> void:
generate_seed()
gamemode.endless = true
gamemode.daily = false
start_game()
func _on_changelog_button_pressed() -> void:
main_controls.visible = true
profile_controls.visible = true
$Changelog.queue_free()
func load_stats(stats: SaveData) -> void:
$ProfileManager/VBoxContainer/Stats/Games/Label2.text = str(Data.save_data.wins + Data.save_data.losses)
$ProfileManager/VBoxContainer/Stats/Wins/Label2.text = str(Data.save_data.wins)
$ProfileManager/VBoxContainer/Stats/Losses/Label2.text = str(Data.save_data.losses)
$ProfileManager/VBoxContainer/Stats/Winrate/Label2.text = str(Data.save_data.winrate) + "%"
$ProfileManager/VBoxContainer/Stats/EngineercassettesBought/Label2.text = str(stats.engineer_cassettes_bought)
$ProfileManager/VBoxContainer/Stats/MagecassettesBought/Label2.text = str(stats.mage_cassettes_bought)
func _on_achievements_back_button_pressed() -> void:
$AchievementsMenu.visible = false
func _on_achievements_button_pressed() -> void:
$AchievementsMenu.visible = true
func _on_profile_manager_cancel_pressed() -> void:
profile_controls.visible = false
main_controls.visible = true
func _on_profile_manager_confirm_pressed() -> void:
profile_controls.visible = false
main_controls.visible = true
if $ProfileManager/VBoxContainer/DisplayName/LineEdit.text != "":
change_profile_display_name($ProfileManager/VBoxContainer/DisplayName/LineEdit.text)
$ProfileManager/VBoxContainer/DisplayName/LineEdit.text = ""
#Data.save_data = temp_data
Data.save_data.save_to_disc()
func _on_unlock_all_pressed() -> void:
temp_data.unlock_all_content()
func _on_lock_all_pressed() -> void:
temp_data.lock_all_content()
func _on_mods_button_pressed() -> void:
profile_controls.visible = false
main_controls.visible = false
mods_controls.visible = true
func _on_cancel_mods_pressed() -> void:
main_controls.visible = true
mods_controls.visible = false
func _on_confirm_mods_pressed() -> void:
mods_controls.load_mod_list()
main_controls.visible = true
mods_controls.visible = false
func _on_stats_button_pressed() -> void:
main_controls.visible = false
profile_controls.visible = true

View File

@@ -0,0 +1 @@
uid://ci8vq73u23viy

View File

@@ -0,0 +1,512 @@
[gd_scene format=3 uid="uid://8yv7excojcg0"]
[ext_resource type="Texture2D" uid="uid://mt6liu1hi15j" path="res://ingame_logo.png" id="2_14tm0"]
[ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://ui/menus/MainMenu/main_menu.gd" id="2_ivytu"]
[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://ui/drop_003.ogg" id="5_cwn2i"]
[ext_resource type="Script" uid="uid://bwsw4oq150v3p" path="res://ui/menus/MainMenu/level_selecter_main_menu.gd" id="8_qshe4"]
[ext_resource type="Script" uid="uid://dalgif6huggwg" path="res://scripts/resources/level_config.gd" id="9_nt3t4"]
[ext_resource type="Resource" uid="uid://b67b70x1uf2el" path="res://levels/level_1/specs.tres" id="10_kjkav"]
[ext_resource type="Resource" uid="uid://dffoufw4bnfn7" path="res://levels/level_2/specs.tres" id="11_kjkav"]
[ext_resource type="Resource" uid="uid://dgrcneuv4fut" path="res://levels/level_3/specs.tres" id="12_eonxx"]
[ext_resource type="Texture2D" uid="uid://cr1ucbuw3iotp" path="res://assets/textures/first_win_achievements.png" id="15_74epv"]
[ext_resource type="Script" uid="uid://cjr0pbqisd51v" path="res://ui/menus/MainMenu/achievements_menu.gd" id="15_sv1gy"]
[ext_resource type="Texture2D" uid="uid://cpa1hl36xfplg" path="res://assets/textures/first_scroll_seen.png" id="16_sv1gy"]
[ext_resource type="Texture2D" uid="uid://ctbi3gm1me1t5" path="res://assets/textures/unlock_mage_achievement.png" id="17_6t4jd"]
[ext_resource type="Script" uid="uid://cxrm2naq75jo1" path="res://scripts/mod_menu.gd" id="19_6t4jd"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2jyua"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_cwn2i")
[sub_resource type="AtlasTexture" id="AtlasTexture_y5bw6"]
atlas = ExtResource("15_74epv")
region = Rect2(0, 0, 36, 36)
[sub_resource type="AtlasTexture" id="AtlasTexture_q26na"]
atlas = ExtResource("16_sv1gy")
region = Rect2(0, 0, 36, 36)
[sub_resource type="AtlasTexture" id="AtlasTexture_3aj5m"]
atlas = ExtResource("17_6t4jd")
region = Rect2(0, 0, 36, 36)
[node name="MainMenu" type="Control" unique_id=869930777 node_paths=PackedStringArray("game_select_menu", "main_controls", "seed_entry", "profile_controls", "mods_controls")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("2_ivytu")
game_select_menu = NodePath("PanelContainer")
main_controls = NodePath("MainControls")
seed_entry = NodePath("GameSelectMenu/VBoxContainer/HBoxContainer2/LineEdit")
profile_controls = NodePath("ProfileManager")
mods_controls = NodePath("ModsMenu")
[node name="ColorRect" type="ColorRect" parent="." unique_id=346340567]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.76819396, 0.5586745, 0.57690316, 1)
[node name="TextureRect" type="TextureRect" parent="." unique_id=57227105]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
texture = ExtResource("2_14tm0")
stretch_mode = 5
[node name="MainControls" type="VBoxContainer" parent="." unique_id=923552840]
custom_minimum_size = Vector2(80, 0)
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 0.938
anchor_right = 0.5
anchor_bottom = 0.95
grow_horizontal = 2
grow_vertical = 0
alignment = 2
[node name="PlayButton" type="Button" parent="MainControls" unique_id=966021827]
layout_mode = 2
text = "BUTTON_PLAY"
[node name="MulitplayerButton" type="Button" parent="MainControls" unique_id=1241426994]
layout_mode = 2
text = "BUTTON_MULTIPLAYER"
[node name="ModsButton" type="Button" parent="MainControls" unique_id=868836389]
layout_mode = 2
text = "BUTTON_MODS"
[node name="StatsButton" type="Button" parent="MainControls" unique_id=469365040]
layout_mode = 2
text = "BUTTON_PLAYER_STATS"
[node name="OptionsButton" type="Button" parent="MainControls" unique_id=861161627]
layout_mode = 2
text = "BUTTON_OPTIONS
"
[node name="QuitButton" type="Button" parent="MainControls" unique_id=1786709622]
layout_mode = 2
text = "BUTTON_QUIT"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=422058960]
stream = SubResource("AudioStreamRandomizer_2jyua")
volume_db = -10.599
bus = &"SFX"
[node name="GameSelectMenu" type="PanelContainer" parent="." unique_id=1604474538]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="GameSelectMenu" unique_id=872284999]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="GameSelectMenu/VBoxContainer" unique_id=428793094]
layout_mode = 2
[node name="BackButton" type="Button" parent="GameSelectMenu/VBoxContainer/HBoxContainer" unique_id=403559950]
layout_mode = 2
text = "BUTTON_BACK"
[node name="Title" type="Label" parent="GameSelectMenu/VBoxContainer" unique_id=1718021793]
layout_mode = 2
text = "LABEL_GAME_MODE_SELECT"
[node name="StandardButton" type="Button" parent="GameSelectMenu/VBoxContainer" unique_id=1984093514]
layout_mode = 2
text = "BUTTON_STANDARD_GAME"
[node name="DailyButton" type="Button" parent="GameSelectMenu/VBoxContainer" unique_id=320912704]
layout_mode = 2
text = "BUTTON_DAILY_CHALLENGE"
[node name="EndlessButton" type="Button" parent="GameSelectMenu/VBoxContainer" unique_id=417225239]
layout_mode = 2
text = "BUTTON_ENDLESS_GAME"
[node name="HBoxContainer2" type="HBoxContainer" parent="GameSelectMenu/VBoxContainer" unique_id=1279231572]
layout_mode = 2
[node name="Label" type="Label" parent="GameSelectMenu/VBoxContainer/HBoxContainer2" unique_id=2055624607]
layout_mode = 2
text = "LABEL_SEED"
[node name="LineEdit" type="LineEdit" parent="GameSelectMenu/VBoxContainer/HBoxContainer2" unique_id=474246153]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "LABEL_SEED_PLACEHOLDER"
expand_to_text_length = true
[node name="ProfileManager" type="PanelContainer" parent="." unique_id=1344908572]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="ProfileManager" unique_id=539287205]
layout_mode = 2
[node name="TitleBar" type="Label" parent="ProfileManager/VBoxContainer" unique_id=1638206531]
layout_mode = 2
text = "TITLE_STATS_MENU"
[node name="DisplayName" type="HBoxContainer" parent="ProfileManager/VBoxContainer" unique_id=305221291]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/DisplayName" unique_id=1105359110]
layout_mode = 2
text = "LABEL_DISPLAY_NAME"
[node name="LineEdit" type="LineEdit" parent="ProfileManager/VBoxContainer/DisplayName" unique_id=1566276326]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "LABEL_DISPLAY_NAME_PLACEHOLDER"
alignment = 1
expand_to_text_length = true
[node name="Stats" type="VBoxContainer" parent="ProfileManager/VBoxContainer" unique_id=578265141]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats" unique_id=1171792490]
layout_mode = 2
text = "LABEL_STATS"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Games" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats" unique_id=289500149]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Games" unique_id=1710677379]
layout_mode = 2
size_flags_horizontal = 3
text = "LABEL_GAMES"
vertical_alignment = 1
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Games" unique_id=801621266]
auto_translate_mode = 2
layout_mode = 2
size_flags_horizontal = 3
text = "0"
horizontal_alignment = 2
vertical_alignment = 1
[node name="Wins" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats" unique_id=52829433]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Wins" unique_id=566213754]
layout_mode = 2
size_flags_horizontal = 3
text = "LABEL_WINS"
vertical_alignment = 1
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Wins" unique_id=1346652117]
auto_translate_mode = 2
layout_mode = 2
size_flags_horizontal = 3
text = "0"
horizontal_alignment = 2
vertical_alignment = 1
[node name="Losses" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats" unique_id=1693847488]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Losses" unique_id=1377334116]
layout_mode = 2
size_flags_horizontal = 3
text = "LABEL_LOSSES"
vertical_alignment = 1
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Losses" unique_id=1863506281]
auto_translate_mode = 2
layout_mode = 2
size_flags_horizontal = 3
text = "0"
horizontal_alignment = 2
vertical_alignment = 1
[node name="Winrate" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats" unique_id=443313052]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Winrate" unique_id=1231183322]
layout_mode = 2
size_flags_horizontal = 3
text = "LABEL_WINRATE"
vertical_alignment = 1
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Winrate" unique_id=2069320970]
auto_translate_mode = 2
layout_mode = 2
size_flags_horizontal = 3
text = "0"
horizontal_alignment = 2
vertical_alignment = 1
[node name="EngineerCardsBought" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats" unique_id=1776121901]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/EngineerCardsBought" unique_id=1170236283]
layout_mode = 2
size_flags_horizontal = 3
text = "LABEL_ENGINEER_CARDS_BOUGHT"
vertical_alignment = 1
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/EngineerCardsBought" unique_id=1887374490]
auto_translate_mode = 2
layout_mode = 2
size_flags_horizontal = 3
text = "0"
horizontal_alignment = 2
vertical_alignment = 1
[node name="MageCardsBought" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats" unique_id=920990804]
layout_mode = 2
[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/MageCardsBought" unique_id=826470841]
layout_mode = 2
size_flags_horizontal = 3
text = "LABEL_MAGE_CARDS_BOUGHT"
vertical_alignment = 1
[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/MageCardsBought" unique_id=340339771]
auto_translate_mode = 2
layout_mode = 2
size_flags_horizontal = 3
text = "0"
horizontal_alignment = 2
vertical_alignment = 1
[node name="UnlockAll" type="Button" parent="ProfileManager/VBoxContainer" unique_id=436251634]
layout_mode = 2
text = "BUTTON_UNLOCK_CONTENT"
[node name="LockAll" type="Button" parent="ProfileManager/VBoxContainer" unique_id=2000313619]
layout_mode = 2
text = "BUTTON_LOCK_CONTENT"
[node name="AchievementsButton" type="Button" parent="ProfileManager/VBoxContainer" unique_id=269010635]
layout_mode = 2
text = "BUTTON_ACHIEVEMENTS"
[node name="Controls" type="HBoxContainer" parent="ProfileManager/VBoxContainer" unique_id=1243400084]
layout_mode = 2
[node name="Cancel" type="Button" parent="ProfileManager/VBoxContainer/Controls" unique_id=860932187]
layout_mode = 2
size_flags_horizontal = 3
text = "BUTTON_CANCEL"
[node name="Confirm" type="Button" parent="ProfileManager/VBoxContainer/Controls" unique_id=733481456]
layout_mode = 2
size_flags_horizontal = 3
text = "BUTTON_CONFIRM"
[node name="AchievementsMenu" type="PanelContainer" parent="." unique_id=40577774]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("15_sv1gy")
[node name="VBoxContainer" type="VBoxContainer" parent="AchievementsMenu" unique_id=1577211234]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="AchievementsMenu/VBoxContainer" unique_id=1021884308]
layout_mode = 2
[node name="Label" type="Label" parent="AchievementsMenu/VBoxContainer/HBoxContainer" unique_id=528769598]
layout_mode = 2
size_flags_horizontal = 3
text = "TITLE_ACHIEVEMENTS"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Button" type="Button" parent="AchievementsMenu/VBoxContainer/HBoxContainer" unique_id=1889222807]
layout_mode = 2
text = "BUTTON_BACK"
[node name="GridContainer" type="GridContainer" parent="AchievementsMenu/VBoxContainer" unique_id=2035992168]
layout_mode = 2
columns = 9
[node name="FirstWin" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer" unique_id=499912902]
custom_minimum_size = Vector2(140, 140)
layout_mode = 2
tooltip_text = "ACHIEVEMENT_TOOLTIP_WIN_GAME"
icon = SubResource("AtlasTexture_y5bw6")
icon_alignment = 1
expand_icon = true
[node name="SeenMageCard" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer" unique_id=882043194]
custom_minimum_size = Vector2(140, 140)
layout_mode = 2
tooltip_text = "ACHIEVEMENT_TOOLTIP_BUY_MAGE_CARD"
icon = SubResource("AtlasTexture_q26na")
icon_alignment = 1
expand_icon = true
[node name="UnlockedMage" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer" unique_id=539348371]
custom_minimum_size = Vector2(140, 140)
layout_mode = 2
tooltip_text = "ACHIEVEMENT_TOOLTIP_UNLOCK_MAGE"
icon = SubResource("AtlasTexture_3aj5m")
icon_alignment = 1
expand_icon = true
[node name="ModsMenu" type="PanelContainer" parent="." unique_id=1219411456]
visible = false
layout_mode = 1
anchors_preset = -1
anchor_left = 0.05
anchor_top = 0.05
anchor_right = 0.95
anchor_bottom = 0.95
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("19_6t4jd")
[node name="VBoxContainer" type="VBoxContainer" parent="ModsMenu" unique_id=604343120]
layout_mode = 2
[node name="Label" type="Label" parent="ModsMenu/VBoxContainer" unique_id=773057029]
layout_mode = 2
text = "TITLE_MODS"
horizontal_alignment = 1
vertical_alignment = 1
[node name="ScrollContainer" type="ScrollContainer" parent="ModsMenu/VBoxContainer" unique_id=570439123]
layout_mode = 2
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="ModsMenu/VBoxContainer/ScrollContainer" unique_id=1157309990]
layout_mode = 2
size_flags_horizontal = 3
[node name="HBoxContainer" type="HBoxContainer" parent="ModsMenu/VBoxContainer" unique_id=91693076]
layout_mode = 2
alignment = 2
[node name="CancelMods" type="Button" parent="ModsMenu/VBoxContainer/HBoxContainer" unique_id=476511006]
layout_mode = 2
text = "BUTTON_CANCEL"
[node name="ConfirmMods" type="Button" parent="ModsMenu/VBoxContainer/HBoxContainer" unique_id=1767774211]
layout_mode = 2
text = "BUTTON_CONFIRM"
[node name="PanelContainer" type="PanelContainer" parent="." unique_id=1673631030]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -6.0
offset_top = -6.0
offset_right = 6.0
offset_bottom = 6.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("8_qshe4")
levels = Array[ExtResource("9_nt3t4")]([ExtResource("10_kjkav"), ExtResource("11_kjkav"), ExtResource("12_eonxx")])
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer" unique_id=507718308]
layout_mode = 2
[node name="Button" type="Button" parent="PanelContainer/VBoxContainer" unique_id=2127573853]
layout_mode = 2
size_flags_horizontal = 0
text = "BUTTON_BACK"
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer" unique_id=654891125]
layout_mode = 2
text = "LABEL_CAMPAIGN_DESC"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer" unique_id=776357424]
layout_mode = 2
alignment = 1
[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer" unique_id=1722538738]
layout_mode = 2
text = "A-SIDE"
[node name="Button2" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer" unique_id=708845101]
layout_mode = 2
text = "B-SIDE"
[node name="HighScoreLabel" type="Label" parent="PanelContainer/VBoxContainer" unique_id=417415208]
layout_mode = 2
horizontal_alignment = 1
vertical_alignment = 1
[connection signal="mouse_entered" from="MainControls/PlayButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/PlayButton" to="." method="_on_play_button_pressed"]
[connection signal="mouse_entered" from="MainControls/MulitplayerButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/MulitplayerButton" to="." method="_on_multiplayer_button_pressed"]
[connection signal="mouse_entered" from="MainControls/ModsButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/ModsButton" to="." method="_on_mods_button_pressed"]
[connection signal="pressed" from="MainControls/StatsButton" to="." method="_on_stats_button_pressed"]
[connection signal="mouse_entered" from="MainControls/OptionsButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/OptionsButton" to="." method="_on_options_button_pressed"]
[connection signal="mouse_entered" from="MainControls/QuitButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/QuitButton" to="." method="_on_quit_button_pressed"]
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/HBoxContainer/BackButton" to="." method="_on_back_button_pressed"]
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/StandardButton" to="." method="_on_standard_button_pressed"]
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/DailyButton" to="." method="_on_daily_button_pressed"]
[connection signal="pressed" from="GameSelectMenu/VBoxContainer/EndlessButton" to="." method="_on_endless_button_pressed"]
[connection signal="pressed" from="ProfileManager/VBoxContainer/UnlockAll" to="." method="_on_unlock_all_pressed"]
[connection signal="pressed" from="ProfileManager/VBoxContainer/LockAll" to="." method="_on_lock_all_pressed"]
[connection signal="pressed" from="ProfileManager/VBoxContainer/AchievementsButton" to="." method="_on_achievements_button_pressed"]
[connection signal="pressed" from="ProfileManager/VBoxContainer/Controls/Cancel" to="." method="_on_profile_manager_cancel_pressed"]
[connection signal="pressed" from="ProfileManager/VBoxContainer/Controls/Confirm" to="." method="_on_profile_manager_confirm_pressed"]
[connection signal="pressed" from="AchievementsMenu/VBoxContainer/HBoxContainer/Button" to="." method="_on_achievements_back_button_pressed"]
[connection signal="pressed" from="ModsMenu/VBoxContainer/HBoxContainer/CancelMods" to="." method="_on_cancel_mods_pressed"]
[connection signal="pressed" from="ModsMenu/VBoxContainer/HBoxContainer/ConfirmMods" to="." method="_on_confirm_mods_pressed"]
[connection signal="level_selected" from="PanelContainer" to="." method="level_selected"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/Button" to="." method="_on_back_button_pressed"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/Button" to="PanelContainer" method="_on_button_pressed"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/Button2" to="PanelContainer" method="_on_button_2_pressed"]