Updated levels and added map selection logic
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
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
@@ -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)
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
19
core/resources/shaders/fisheye.gdshader
Normal file
19
core/resources/shaders/fisheye.gdshader
Normal 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);
|
||||||
|
}
|
||||||
@@ -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")
|
||||||
|
|||||||
@@ -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
7
core/scripts/main.gd
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@export var reset_point: Marker3D
|
||||||
|
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
GameManager.reset_point = reset_point
|
||||||
@@ -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():
|
||||||
|
|||||||
43
core/scripts/map_selection.gd
Normal file
43
core/scripts/map_selection.gd
Normal 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()
|
||||||
Binary file not shown.
Reference in New Issue
Block a user