diff --git a/godot/Environments/default_environment.tres b/godot/Environments/default_environment.tres new file mode 100644 index 0000000..19bc488 --- /dev/null +++ b/godot/Environments/default_environment.tres @@ -0,0 +1,10 @@ +[gd_resource type="Environment" load_steps=3 format=3 uid="uid://cnfk8yrvklysq"] + +[ext_resource type="Material" uid="uid://bc76ge13c85sg" path="res://Environments/default_sky.tres" id="1_4vymb"] + +[sub_resource type="Sky" id="Sky_8ol1c"] +sky_material = ExtResource("1_4vymb") + +[resource] +background_mode = 2 +sky = SubResource("Sky_8ol1c") diff --git a/godot/Environments/default_sky.tres b/godot/Environments/default_sky.tres new file mode 100644 index 0000000..eadb2e8 --- /dev/null +++ b/godot/Environments/default_sky.tres @@ -0,0 +1,7 @@ +[gd_resource type="ProceduralSkyMaterial" format=3 uid="uid://bc76ge13c85sg"] + +[resource] +sky_top_color = Color(0.146294, 0.475775, 0.683255, 1) +ground_bottom_color = Color(0.179489, 0.175024, 0.156573, 1) +sun_angle_max = 2.56 +sun_curve = 7.53201 diff --git a/godot/GameObjects/player_camera.tscn b/godot/GameObjects/player_camera.tscn new file mode 100644 index 0000000..1fb9bdc --- /dev/null +++ b/godot/GameObjects/player_camera.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=3 uid="uid://bmm2quy62exfr"] + +[sub_resource type="CylinderMesh" id="CylinderMesh_hd6t5"] +height = 0.1 + +[node name="PlayerCamera" type="RTSPlayer"] + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(-1, 7.57103e-08, -4.37114e-08, 0, 0.5, 0.866025, 8.74228e-08, 0.866025, -0.5, 0, 5.86004, -2.59394) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0494189, 0) +mesh = SubResource("CylinderMesh_hd6t5") diff --git a/godot/Levels/test_level.tscn b/godot/Levels/test_level.tscn new file mode 100644 index 0000000..e156914 --- /dev/null +++ b/godot/Levels/test_level.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=3 uid="uid://c62s1jmtgajjk"] + +[ext_resource type="PackedScene" uid="uid://dsalxxq3xs842" path="res://rts_game_mode.tscn" id="1_4nchg"] +[ext_resource type="Environment" uid="uid://cnfk8yrvklysq" path="res://Environments/default_environment.tres" id="2_jq6bw"] + +[sub_resource type="PlaneMesh" id="PlaneMesh_hohcb"] +size = Vector2(10, 10) + +[node name="TestLevel" type="Level3D"] +game_mode_prototype = ExtResource("1_4nchg") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource("2_jq6bw") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment"] +transform = Transform3D(-0.030678, -0.932282, 0.36043, 0, 0.360599, 0.932721, -0.999529, 0.028614, -0.0110625, 0, 1.28927, 0) +light_color = Color(1, 0.926667, 0.78, 1) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WorldEnvironment"] +mesh = SubResource("PlaneMesh_hohcb") +skeleton = NodePath("../..") diff --git a/godot/base_game_state.tres b/godot/base_game_state.tres new file mode 100644 index 0000000..686619f --- /dev/null +++ b/godot/base_game_state.tres @@ -0,0 +1,3 @@ +[gd_resource type="GameState" format=3 uid="uid://b4eyakdtq8bjg"] + +[resource] diff --git a/godot/boot.tscn b/godot/boot.tscn new file mode 100644 index 0000000..45fedf7 --- /dev/null +++ b/godot/boot.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=3 format=3 uid="uid://bqs3wt2x03yo8"] + +[ext_resource type="PackedScene" uid="uid://c62s1jmtgajjk" path="res://Levels/test_level.tscn" id="1_fgopa"] +[ext_resource type="GameState" uid="uid://b4eyakdtq8bjg" path="res://base_game_state.tres" id="2_at2gl"] + +[node name="GameRoot3D" type="GameRoot3D"] +first_boot_level = ExtResource("1_fgopa") +game_state_prototype = ExtResource("2_at2gl") diff --git a/godot/project.godot b/godot/project.godot index de335b8..334a1e3 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -11,5 +11,54 @@ config_version=5 [application] config/name="metro_rts" +run/main_scene="res://boot.tscn" config/features=PackedStringArray("4.2", "Forward Plus") config/icon="res://icon.svg" + +[input] + +lclick={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(119, 17),"global_position":Vector2(123, 58),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +rclick={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(132, 16),"global_position":Vector2(136, 57),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +mclick={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":4,"position":Vector2(147, 8),"global_position":Vector2(151, 49),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +direction_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) +] +} +direction_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) +] +} +direction_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) +] +} +direction_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) +] +} +rotate_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"echo":false,"script":null) +] +} +rotate_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null) +] +} diff --git a/godot/rts_game_mode.tscn b/godot/rts_game_mode.tscn new file mode 100644 index 0000000..b48f5fa --- /dev/null +++ b/godot/rts_game_mode.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dsalxxq3xs842"] + +[ext_resource type="PackedScene" uid="uid://bmm2quy62exfr" path="res://GameObjects/player_camera.tscn" id="1_ssnjh"] + +[node name="RtsGameMode" type="RTSGameMode"] +player_scene = ExtResource("1_ssnjh")