Updated levels and added map selection logic

This commit is contained in:
2025-02-16 00:24:58 -05:00
parent 6b85034a30
commit 0a34adf790
14 changed files with 9125 additions and 35 deletions

View File

@@ -1,3 +1,5 @@
class_name Drone
extends RigidBody3D extends RigidBody3D
# Local coords to axis # Local coords to axis
@@ -21,7 +23,6 @@ extends RigidBody3D
@export var flip_over_detection_ray: RayCast3D @export var flip_over_detection_ray: RayCast3D
@export var flip_over_timer: Timer @export var flip_over_timer: Timer
@export var input_suggestion_label: Label @export var input_suggestion_label: Label
@export var reset_point: Marker3D
var animation_initalized: bool = false var animation_initalized: bool = false
var using_joy_controller: bool = true var using_joy_controller: bool = true
@@ -86,7 +87,7 @@ func _physics_process(_delta): # Still needed for other physics
func _input(_event): func _input(_event):
if Input.is_action_just_pressed("reset_drone"): if Input.is_action_just_pressed("reset_drone"):
global_position = reset_point.global_position global_position = GameManager.reset_point.global_position
global_rotation = Vector3.ZERO global_rotation = Vector3.ZERO
linear_velocity = Vector3.ZERO linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO angular_velocity = Vector3.ZERO

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=105 format=4 uid="uid://dwvmna8qc0vb4"] [gd_scene load_steps=107 format=4 uid="uid://dwvmna8qc0vb4"]
[ext_resource type="Script" path="res://core/drone/drone.gd" id="1_de83i"] [ext_resource type="Script" path="res://core/drone/drone.gd" id="1_de83i"]
[ext_resource type="Material" uid="uid://d0gkxc5fuh354" path="res://core/resources/materials/black_carbon_fiber.tres" id="2_phv8m"] [ext_resource type="Material" uid="uid://d0gkxc5fuh354" path="res://core/resources/materials/black_carbon_fiber.tres" id="2_phv8m"]
@@ -10,6 +10,7 @@
[ext_resource type="Material" uid="uid://uy2txkh3slat" path="res://core/resources/materials/pink_motor.tres" id="6_3gtkc"] [ext_resource type="Material" uid="uid://uy2txkh3slat" path="res://core/resources/materials/pink_motor.tres" id="6_3gtkc"]
[ext_resource type="Script" path="res://core/scripts/camera_3d.gd" id="9_8eblv"] [ext_resource type="Script" path="res://core/scripts/camera_3d.gd" id="9_8eblv"]
[ext_resource type="Shader" path="res://core/resources/shaders/vhs.gdshader" id="9_66bpw"] [ext_resource type="Shader" path="res://core/resources/shaders/vhs.gdshader" id="9_66bpw"]
[ext_resource type="Shader" path="res://core/resources/shaders/fisheye.gdshader" id="10_5gurm"]
[ext_resource type="Texture2D" uid="uid://bv7klk2tmhya2" path="res://assets/textures/rgba-noise-medium.png" id="10_ylv8e"] [ext_resource type="Texture2D" uid="uid://bv7klk2tmhya2" path="res://assets/textures/rgba-noise-medium.png" id="10_ylv8e"]
[ext_resource type="PackedScene" uid="uid://c6w6axh4l4w8d" path="res://core/tools/fps_label.tscn" id="12_u7iaa"] [ext_resource type="PackedScene" uid="uid://c6w6axh4l4w8d" path="res://core/tools/fps_label.tscn" id="12_u7iaa"]
@@ -1074,6 +1075,10 @@ _surfaces = [{
blend_shape_mode = 0 blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_oy56j") shadow_mesh = SubResource("ArrayMesh_oy56j")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0hj7y"]
shader = ExtResource("10_5gurm")
shader_parameter/fisheye_strength = 1.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pkxv0"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_pkxv0"]
shader = ExtResource("9_66bpw") shader = ExtResource("9_66bpw")
shader_parameter/curvature = 0.0 shader_parameter/curvature = 0.0
@@ -1327,6 +1332,23 @@ script = ExtResource("9_8eblv")
[node name="CanvasLayer" type="CanvasLayer" parent="VisualComponets/CameraPivot/Camera3D"] [node name="CanvasLayer" type="CanvasLayer" parent="VisualComponets/CameraPivot/Camera3D"]
[node name="FisheyeVFX" type="Control" parent="VisualComponets/CameraPivot/Camera3D/CanvasLayer"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="VisualComponets/CameraPivot/Camera3D/CanvasLayer/FisheyeVFX"]
material = SubResource("ShaderMaterial_0hj7y")
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="VHSVFX" type="Control" parent="VisualComponets/CameraPivot/Camera3D/CanvasLayer"] [node name="VHSVFX" type="Control" parent="VisualComponets/CameraPivot/Camera3D/CanvasLayer"]
visible = false visible = false
layout_mode = 3 layout_mode = 3

8857
core/levels/abstract.tscn Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -13,7 +13,8 @@ metallic_specular = 0.0
[node name="RunDownBuilding" type="Node3D"] [node name="RunDownBuilding" type="Node3D"]
[node name="Ground" type="StaticBody3D" parent="." groups=["Ground"]] [node name="Ground" type="StaticBody3D" parent="." groups=["ResetSurface"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 100)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"]
shape = SubResource("WorldBoundaryShape3D_6xxch") shape = SubResource("WorldBoundaryShape3D_6xxch")
@@ -23,4 +24,4 @@ mesh = SubResource("PlaneMesh_qporw")
surface_material_override/0 = SubResource("StandardMaterial3D_wl7tr") surface_material_override/0 = SubResource("StandardMaterial3D_wl7tr")
[node name="Sketchfab_Scene" parent="." instance=ExtResource("2_orjp2")] [node name="Sketchfab_Scene" parent="." instance=ExtResource("2_orjp2")]
transform = Transform3D(4, 0, 0, 0, 4, 0, 0, 0, 4, 0, -12.243, 0) transform = Transform3D(4, 0, 0, 0, 4, 0, 0, 0, 4, 0, -12.243, 100)

View File

@@ -14,7 +14,7 @@ size = Vector2(100, 100)
[node name="TestLevel" type="Node3D"] [node name="TestLevel" type="Node3D"]
[node name="Ground" type="StaticBody3D" parent="." groups=["Ground"]] [node name="Ground" type="StaticBody3D" parent="." groups=["ResetSurface"]]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"]
shape = SubResource("WorldBoundaryShape3D_bpckr") shape = SubResource("WorldBoundaryShape3D_bpckr")

View File

@@ -1,13 +1,16 @@
[gd_scene load_steps=15 format=3 uid="uid://deah8x3tnm045"] [gd_scene load_steps=20 format=3 uid="uid://deah8x3tnm045"]
[ext_resource type="Texture2D" uid="uid://b3ecco3iykmlc" path="res://assets/textures/overcast_soil_puresky_4k.hdr" id="1_4mr0e"] [ext_resource type="Texture2D" uid="uid://b3ecco3iykmlc" path="res://assets/textures/overcast_soil_puresky_4k.hdr" id="1_4mr0e"]
[ext_resource type="PackedScene" uid="uid://dwvmna8qc0vb4" path="res://core/drone/drone.tscn" id="2_orkyq"] [ext_resource type="Script" path="res://core/scripts/main.gd" id="1_eewwe"]
[ext_resource type="Script" path="res://core/scripts/camera_3d.gd" id="3_sec6q"] [ext_resource type="Script" path="res://core/scripts/camera_3d.gd" id="3_sec6q"]
[ext_resource type="Script" path="res://core/scripts/los_view.gd" id="3_supaf"] [ext_resource type="Script" path="res://core/scripts/los_view.gd" id="3_supaf"]
[ext_resource type="Texture2D" uid="uid://c7ldlo5qe26tx" path="res://assets/textures/drone_screenshot.png" id="4_0ftx7"] [ext_resource type="Texture2D" uid="uid://c7ldlo5qe26tx" path="res://assets/textures/drone_screenshot.png" id="4_0ftx7"]
[ext_resource type="Script" path="res://core/scripts/main_menu.gd" id="4_bknjq"] [ext_resource type="Script" path="res://core/scripts/main_menu.gd" id="4_bknjq"]
[ext_resource type="PackedScene" uid="uid://ctnwdiavrytwe" path="res://core/levels/contruction_site.tscn" id="4_oqdxa"]
[ext_resource type="Script" path="res://core/scripts/pause_menu.gd" id="7_b8wfm"] [ext_resource type="Script" path="res://core/scripts/pause_menu.gd" id="7_b8wfm"]
[ext_resource type="Script" path="res://core/scripts/map_selection.gd" id="9_m0h3c"]
[ext_resource type="PackedScene" uid="uid://ctnwdiavrytwe" path="res://core/levels/construction_site.tscn" id="9_uh1ro"]
[ext_resource type="PackedScene" uid="uid://5ht1wfq36328" path="res://core/levels/run_down_building.tscn" id="10_u57pm"]
[ext_resource type="PackedScene" uid="uid://7umhe6bcjv4v" path="res://core/levels/abstract.tscn" id="11_nccjd"]
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_qks7v"] [sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_qks7v"]
panorama = ExtResource("1_4mr0e") panorama = ExtResource("1_4mr0e")
@@ -35,7 +38,14 @@ shadow_color = Color(0, 0, 0, 0.611765)
[sub_resource type="LabelSettings" id="LabelSettings_ymk35"] [sub_resource type="LabelSettings" id="LabelSettings_ymk35"]
shadow_color = Color(0, 0, 0, 0.611765) shadow_color = Color(0, 0, 0, 0.611765)
[node name="Main" type="Node3D"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_b4xxx"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pg658"]
bg_color = Color(0, 0, 0, 0)
[node name="Main" type="Node3D" node_paths=PackedStringArray("reset_point")]
script = ExtResource("1_eewwe")
reset_point = NodePath("ResetPoint")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(-0.924804, -0.329475, 0.190221, 1.47562e-08, 0.499998, 0.866027, -0.380444, 0.800905, -0.4624, 0, 0, 0) transform = Transform3D(-0.924804, -0.329475, 0.190221, 1.47562e-08, 0.499998, 0.866027, -0.380444, 0.800905, -0.4624, 0, 0, 0)
@@ -49,17 +59,12 @@ shadow_blur = 4.542
environment = SubResource("Environment_ruppb") environment = SubResource("Environment_ruppb")
[node name="ResetPoint" type="Marker3D" parent="."] [node name="ResetPoint" type="Marker3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.017014, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.117014, 0)
[node name="Drone" parent="ResetPoint" node_paths=PackedStringArray("reset_point") instance=ExtResource("2_orkyq")] [node name="LOSView" type="Node3D" parent="." node_paths=PackedStringArray("child_camera")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.7659, 0, -31.913)
reset_point = NodePath("..")
[node name="LOSView" type="Node3D" parent="." node_paths=PackedStringArray("drone", "child_camera")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.23896, 0.638642, -1.134) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.23896, 0.638642, -1.134)
script = ExtResource("3_supaf") script = ExtResource("3_supaf")
zoom_curve = SubResource("Curve_nxnkk") zoom_curve = SubResource("Curve_nxnkk")
drone = NodePath("../ResetPoint/Drone")
child_camera = NodePath("LOSCamera3D") child_camera = NodePath("LOSCamera3D")
[node name="LOSCamera3D" type="Camera3D" parent="LOSView"] [node name="LOSCamera3D" type="Camera3D" parent="LOSView"]
@@ -71,7 +76,7 @@ script = ExtResource("3_sec6q")
process_mode = 3 process_mode = 3
layer = 2 layer = 2
[node name="MainMenu" type="Control" parent="CanvasLayer" node_paths=PackedStringArray("start_button", "quit_button", "controller_mode_button", "joy_controller_label", "fpv_remote_label")] [node name="MainMenu" type="Control" parent="CanvasLayer" node_paths=PackedStringArray("start_button", "quit_button", "controller_mode_button", "joy_controller_label", "fpv_remote_label", "map_selection_menu")]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -84,6 +89,7 @@ quit_button = NodePath("HBoxContainer/VBoxContainer/MarginContainer/VBoxContaine
controller_mode_button = NodePath("HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/ControllerModeButton") controller_mode_button = NodePath("HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/ControllerModeButton")
joy_controller_label = NodePath("HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/JoyControllerLabel") joy_controller_label = NodePath("HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/JoyControllerLabel")
fpv_remote_label = NodePath("HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/FPVRemoteLabel") fpv_remote_label = NodePath("HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/FPVRemoteLabel")
map_selection_menu = NodePath("../MapSelection")
[node name="TextureRect" type="TextureRect" parent="CanvasLayer/MainMenu"] [node name="TextureRect" type="TextureRect" parent="CanvasLayer/MainMenu"]
layout_mode = 1 layout_mode = 1
@@ -213,6 +219,118 @@ layout_mode = 2
theme_override_font_sizes/font_size = 25 theme_override_font_sizes/font_size = 25
text = "QUIT" text = "QUIT"
[node name="TestLevel" parent="." instance=ExtResource("4_oqdxa")] [node name="MapSelection" type="Control" parent="CanvasLayer" node_paths=PackedStringArray("construction_site_button", "run_down_building_button", "abstract_button", "start_button")]
visible = false
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("9_m0h3c")
construction_site_button = NodePath("GridContainer/Panel/ConstructionSiteButton")
run_down_building_button = NodePath("GridContainer/Panel2/RunDownBuildingButton")
abstract_button = NodePath("GridContainer/Panel3/AbstractButton")
start_button = NodePath("HBoxContainer/VBoxContainer/MarginContainer/StartButton")
construction_site_scene = ExtResource("9_uh1ro")
run_down_building_scene = ExtResource("10_u57pm")
abstract_scene = ExtResource("11_nccjd")
[node name="ColorRect" type="ColorRect" parent="CanvasLayer/MapSelection"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.262932, 0.262932, 0.262932, 1)
[node name="GridContainer" type="GridContainer" parent="CanvasLayer/MapSelection"]
layout_mode = 2
offset_left = 236.0
offset_top = 274.0
offset_right = 916.0
offset_bottom = 374.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
theme_override_constants/h_separation = 40
theme_override_constants/v_separation = 40
columns = 3
[node name="Panel" type="Panel" parent="CanvasLayer/MapSelection/GridContainer"]
custom_minimum_size = Vector2(200, 100)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxTexture_b4xxx")
[node name="ConstructionSiteButton" type="Button" parent="CanvasLayer/MapSelection/GridContainer/Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
focus_neighbor_right = NodePath("../../Panel2/RunDownBuildingButton")
focus_neighbor_bottom = NodePath("../../../HBoxContainer/VBoxContainer/MarginContainer/StartButton")
text = "Construction Site"
[node name="Panel2" type="Panel" parent="CanvasLayer/MapSelection/GridContainer"]
custom_minimum_size = Vector2(200, 100)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_pg658")
[node name="RunDownBuildingButton" type="Button" parent="CanvasLayer/MapSelection/GridContainer/Panel2"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
focus_neighbor_left = NodePath("../../Panel/ConstructionSiteButton")
focus_neighbor_right = NodePath("../../Panel3/AbstractButton")
focus_neighbor_bottom = NodePath("../../../HBoxContainer/VBoxContainer/MarginContainer/StartButton")
text = "Run Down Building"
[node name="Panel3" type="Panel" parent="CanvasLayer/MapSelection/GridContainer"]
custom_minimum_size = Vector2(200, 100)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_pg658")
[node name="AbstractButton" type="Button" parent="CanvasLayer/MapSelection/GridContainer/Panel3"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
focus_neighbor_left = NodePath("../../Panel2/RunDownBuildingButton")
focus_neighbor_right = NodePath("../../../HBoxContainer/VBoxContainer/MarginContainer/StartButton")
focus_neighbor_bottom = NodePath("../../../HBoxContainer/VBoxContainer/MarginContainer/StartButton")
text = "Abstract"
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/MapSelection"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
alignment = 2
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/MapSelection/HBoxContainer"]
layout_mode = 2
alignment = 2
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/MapSelection/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_right = 40
theme_override_constants/margin_bottom = 30
[node name="StartButton" type="Button" parent="CanvasLayer/MapSelection/HBoxContainer/VBoxContainer/MarginContainer"]
custom_minimum_size = Vector2(200, 50)
layout_mode = 2
focus_neighbor_top = NodePath("../../../../GridContainer/Panel3/AbstractButton")
text = "START"
[connection signal="toggled" from="CanvasLayer/MainMenu/HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/ControllerModeButton" to="CanvasLayer/MainMenu" method="_on_controller_mode_button_toggled"] [connection signal="toggled" from="CanvasLayer/MainMenu/HBoxContainer/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/ControllerModeButton" to="CanvasLayer/MainMenu" method="_on_controller_mode_button_toggled"]

View File

@@ -0,0 +1,19 @@
shader_type canvas_item;
uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;
uniform float fisheye_strength = 1.0; // Control the fisheye effect strength
vec2 fisheye(vec2 uv) {
vec2 d = uv - 0.5;
float r = length(d);
float theta = atan(d.y, d.x);
float rf = pow(r, fisheye_strength) / pow(0.5, fisheye_strength - 1.0);
return vec2(0.5) + rf * normalize(d);
}
void fragment() {
vec2 iResolution = 1.0 / SCREEN_PIXEL_SIZE;
vec2 q = FRAGCOORD.xy / iResolution.xy;
// Apply fisheye distortion
q = fisheye(q);
vec3 col = texture(screen_texture, q).rgb;
COLOR = vec4(col, 1.0);
}

View File

@@ -1,11 +1,18 @@
extends Node3D extends Node3D
var selected_drone: PackedScene
var camera_array: Array[Camera3D] = []
var current_camera: int = 0
var game_started: bool = false
var is_paused: bool = false
var controller_mode: String = "JoyController"
var selected_map: PackedScene
var drone_instance: Drone
var reset_point: Marker3D
@export var camera_array: Array[Camera3D] = []
@export var current_camera: int = 0 func _ready():
@export var game_started: bool = false selected_drone = load("res://core/drone/drone.tscn")
@export var is_paused: bool = false
@export var controller_mode: String = "JoyController"
func _process(_delta): func _process(_delta):
@@ -20,4 +27,18 @@ func _process(_delta):
func start_game(): func start_game():
game_started = true if selected_map != null:
var map_instance = selected_map.instantiate()
get_tree().root.get_node("Main").add_child(map_instance)
_spawn_drone()
game_started = true
else:
print("ERROR: selected_map is null")
func _spawn_drone():
if selected_drone != null:
drone_instance = selected_drone.instantiate()
get_tree().root.get_node("Main/ResetPoint/").add_child(drone_instance)
else:
print("ERROR: selected_drone is null")

View File

@@ -1,7 +1,6 @@
extends Node3D extends Node3D
@export var zoom_curve: Curve @export var zoom_curve: Curve
@export var drone: RigidBody3D
@export var child_camera: Camera3D @export var child_camera: Camera3D
var dist_to_drone: float = 0.0 var dist_to_drone: float = 0.0
@@ -12,9 +11,10 @@ func _ready():
func _physics_process(_delta): func _physics_process(_delta):
look_at(drone.global_position) if GameManager.drone_instance != null:
look_at(GameManager.drone_instance.global_position)
dist_to_drone = global_position.distance_to(drone.global_position)
dist_to_drone = global_position.distance_to(GameManager.drone_instance.global_position)
child_camera.fov = zoom_curve.sample((dist_to_drone-1)/89)
child_camera.fov = zoom_curve.sample((dist_to_drone-1)/89)

7
core/scripts/main.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Node3D
@export var reset_point: Marker3D
func _ready():
GameManager.reset_point = reset_point

View File

@@ -5,6 +5,7 @@ extends Control
@export var controller_mode_button: CheckButton @export var controller_mode_button: CheckButton
@export var joy_controller_label: Label @export var joy_controller_label: Label
@export var fpv_remote_label: Label @export var fpv_remote_label: Label
@export var map_selection_menu: Control
func _ready(): func _ready():
@@ -16,7 +17,7 @@ func _ready():
func _on_start_button_pressed(): func _on_start_button_pressed():
hide() hide()
GameManager.start_game() map_selection_menu.show()
func _on_quit_button_pressed(): func _on_quit_button_pressed():

View File

@@ -0,0 +1,43 @@
extends Control
@export var construction_site_button: Button
@export var run_down_building_button: Button
@export var abstract_button: Button
@export var start_button: Button
@export var construction_site_scene: PackedScene
@export var run_down_building_scene: PackedScene
@export var abstract_scene: PackedScene
var selected_map_key: int = 0
func _ready():
construction_site_button.pressed.connect(_on_construction_site_button_pressed)
run_down_building_button.pressed.connect(_on_run_down_building_button_pressed)
abstract_button.pressed.connect(_on_abstract_button_pressed)
start_button.pressed.connect(_on_start_button_pressed)
self.visibility_changed.connect(_on_visibility_changed)
func _on_construction_site_button_pressed():
selected_map_key = 1
GameManager.selected_map = construction_site_scene
func _on_run_down_building_button_pressed():
selected_map_key = 2
GameManager.selected_map = run_down_building_scene
func _on_abstract_button_pressed():
selected_map_key = 3
GameManager.selected_map = abstract_scene
func _on_start_button_pressed():
GameManager.start_game()
hide()
func _on_visibility_changed() -> void:
if visible:
construction_site_button.grab_focus()