Add Map Loader #17
							
								
								
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_1.glb
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_1.glb
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_1.glb.import
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_1.glb.import
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_2.glb
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_2.glb
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_2.glb.import
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/models/maps/lowpoly_tdm/lowpoly_tdm_2.glb.import
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -1423,7 +1423,7 @@ transform = Transform3D(82.5044, -54.0559, -16.4615, 55.0482, 83.4649, 1.8195, 1
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.35348e-08, -8.84756e-09, 0.0499956)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.35312e-08, -5.58794e-09, 0.0499956)
 | 
			
		||||
body_offset = Transform3D(100, -0.0695305, -0.00860751, -1.19209e-05, 12.2744, -99.2438, 0.0700493, 99.2438, 12.2744, 0.00043869, 4.96175, -0.613665)
 | 
			
		||||
mass = 20.0
 | 
			
		||||
bone_name = "mixamorig_Hips"
 | 
			
		||||
@@ -1440,7 +1440,7 @@ transform = Transform3D(80.9412, -58.546, -4.56913, 57.6046, 80.6695, -13.1964,
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.2222e-09, 2.2377e-09, 0.0586601)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.2222e-09, 2.2377e-09, 0.05866)
 | 
			
		||||
body_offset = Transform3D(100, 7.62939e-06, 9.05991e-06, 4.76837e-06, -1.90735e-06, -100, -1.52588e-05, 100, -3.8147e-06, -9.53674e-07, 5.866, 0)
 | 
			
		||||
mass = 20.0
 | 
			
		||||
bone_name = "mixamorig_Spine"
 | 
			
		||||
@@ -1453,11 +1453,11 @@ transform = Transform3D(0.0318071, 3.86358e-14, 4.9738e-14, -2.13163e-14, -1.629
 | 
			
		||||
shape = SubResource("CapsuleShape3D_126jt")
 | 
			
		||||
 | 
			
		||||
[node name="Physical Bone mixamorig_Head" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
 | 
			
		||||
transform = Transform3D(-97.8019, 4.4733, 20.366, -15.8369, -79.4709, -58.5966, 13.5638, -60.5339, 78.4325, -13.8193, 23.4986, -143.635)
 | 
			
		||||
transform = Transform3D(-97.8019, 4.47329, 20.366, -15.8369, -79.4709, -58.5966, 13.5638, -60.5339, 78.4325, -13.8193, 23.4986, -143.635)
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.90303e-08, -1.37836e-07, 0.0981531)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.90306e-08, -1.39698e-07, 0.0981531)
 | 
			
		||||
body_offset = Transform3D(-100, -0.00220013, -0.000778198, -5.24521e-06, 33.8066, -94.1122, 0.00232792, -94.1122, -33.8066, 7.24792e-05, 9.23741, 3.31821)
 | 
			
		||||
mass = 7.0
 | 
			
		||||
bone_name = "mixamorig_Head"
 | 
			
		||||
@@ -1491,7 +1491,7 @@ transform = Transform3D(-48.2566, -12.058, 86.752, -78.7312, -37.4258, -48.997,
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.47238e-07, 6.31264e-08, 0.138072)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.47239e-07, 6.31263e-08, 0.138072)
 | 
			
		||||
body_offset = Transform3D(100, 3.05176e-05, -4.19617e-05, -3.8147e-05, 0, -100, -3.8147e-06, 100, 9.53674e-06, 3.05176e-05, 13.8072, -7.62939e-06)
 | 
			
		||||
mass = 3.0
 | 
			
		||||
bone_name = "mixamorig_LeftForeArm"
 | 
			
		||||
@@ -1504,11 +1504,11 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
 | 
			
		||||
shape = SubResource("CapsuleShape3D_2k34c")
 | 
			
		||||
 | 
			
		||||
[node name="Physical Bone mixamorig_LeftHand" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
 | 
			
		||||
transform = Transform3D(9.11563, -98.6768, 13.4089, 23.9481, -10.8976, -96.4766, 96.6612, 12.0056, 22.6379, -10.9684, 56.2242, -106.442)
 | 
			
		||||
transform = Transform3D(9.11563, -98.6768, 13.4089, 23.9481, -10.8976, -96.4766, 96.6612, 12.0056, 22.6379, -10.9685, 56.2242, -106.442)
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.19564e-08, -9.40636e-08, 0.0264903)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.24797e-07, -1.22003e-07, 0.0264902)
 | 
			
		||||
body_offset = Transform3D(-58.5197, 57.9894, 56.6805, 1.62125e-05, 69.899, -71.5132, -81.0891, -41.8493, -40.9047, -1.50148, 1.89441, 1.08356)
 | 
			
		||||
bone_name = "mixamorig_LeftHand"
 | 
			
		||||
joint_constraints/bias = 0.3
 | 
			
		||||
@@ -1524,7 +1524,7 @@ transform = Transform3D(30.7246, 72.8896, 61.1809, 93.7855, -34.092, -6.48192, 1
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.63344e-08, 1.16325e-07, 0.137023)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.63344e-08, 1.16326e-07, 0.137023)
 | 
			
		||||
body_offset = Transform3D(100, -5.72205e-06, 1.19209e-05, 6.67572e-06, 1.07288e-05, -100, -1.90735e-06, 100, 2.64645e-05, 0, 13.7023, -1.52588e-05)
 | 
			
		||||
mass = 3.0
 | 
			
		||||
bone_name = "mixamorig_RightArm"
 | 
			
		||||
@@ -1537,11 +1537,11 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
 | 
			
		||||
shape = SubResource("CapsuleShape3D_8vkyv")
 | 
			
		||||
 | 
			
		||||
[node name="Physical Bone mixamorig_RightForeArm" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
 | 
			
		||||
transform = Transform3D(24.3552, 37.4063, 89.4852, -25.0101, 91.5653, -31.4688, -93.7087, -14.716, 31.6563, -48.2682, 3.93748, -103.698)
 | 
			
		||||
transform = Transform3D(24.3552, 37.4063, 89.4852, -25.0101, 91.5653, -31.4688, -93.7087, -14.716, 31.6563, -48.2682, 3.93749, -103.698)
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.40737e-07, -2.80687e-08, 0.138072)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.40737e-07, -2.80688e-08, 0.138072)
 | 
			
		||||
body_offset = Transform3D(100, -1.14441e-05, 8.58307e-06, -3.8147e-06, 100, 9.53674e-06, 5.72205e-06, -5.72205e-06, 100, -1.52588e-05, 1.49012e-06, -13.8072)
 | 
			
		||||
mass = 3.0
 | 
			
		||||
bone_name = "mixamorig_RightForeArm"
 | 
			
		||||
@@ -1558,7 +1558,7 @@ transform = Transform3D(89.0767, -24.8074, -38.0781, 5.05123, 88.6726, -45.9527,
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.51926e-09, 2.76137e-07, 0.0264903)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.86265e-08, 2.31434e-07, 0.0264903)
 | 
			
		||||
body_offset = Transform3D(-58.5197, -57.9893, -56.6805, -1.19209e-05, 69.8991, -71.5131, 81.0891, -41.8492, -40.9048, 1.5015, 1.89439, 1.08359)
 | 
			
		||||
bone_name = "mixamorig_RightHand"
 | 
			
		||||
joint_constraints/bias = 0.3
 | 
			
		||||
@@ -1570,11 +1570,11 @@ transform = Transform3D(0.01, 0, 0, 0, 0.00693402, 0.00720551, 0, -0.00720551, 0
 | 
			
		||||
shape = SubResource("CapsuleShape3D_1m8r5")
 | 
			
		||||
 | 
			
		||||
[node name="Physical Bone mixamorig_LeftUpLeg" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
 | 
			
		||||
transform = Transform3D(-96.1773, -26.2683, 7.73901, -23.4203, 64.2554, -72.957, 14.1919, -71.9807, -67.9513, 5.83707, 19.601, -60.9754)
 | 
			
		||||
transform = Transform3D(-96.1774, -26.2683, 7.73901, -23.4203, 64.2554, -72.957, 14.1919, -71.9807, -67.9513, 5.83707, 19.601, -60.9754)
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.78612e-08, -7.74373e-09, 0.202997)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.78612e-08, -7.74374e-09, 0.202997)
 | 
			
		||||
body_offset = Transform3D(100, -2.86102e-05, 9.53674e-06, 7.62939e-06, 7.62939e-06, -100, 3.71933e-05, 100, 3.8147e-06, -5.72205e-06, 20.2997, 0)
 | 
			
		||||
mass = 5.0
 | 
			
		||||
bone_name = "mixamorig_LeftUpLeg"
 | 
			
		||||
@@ -1591,7 +1591,7 @@ transform = Transform3D(-97.5216, -11.6193, -18.8291, -22.0483, 58.1427, 78.3154
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.03062e-09, -1.30455e-08, 0.210495)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.03053e-09, -1.30455e-08, 0.210495)
 | 
			
		||||
body_offset = Transform3D(100, 4.76837e-06, 1.33514e-05, 5.72205e-06, 0, -100, -9.53674e-07, 100, 1.52588e-05, -1.90735e-06, 21.0495, -1.90735e-06)
 | 
			
		||||
mass = 5.0
 | 
			
		||||
bone_name = "mixamorig_LeftLeg"
 | 
			
		||||
@@ -1641,7 +1641,7 @@ transform = Transform3D(-91.8175, -23.5086, -31.8888, -36.0103, 83.0805, 42.437,
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.27445e-09, -2.4944e-07, 0.210495)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.27453e-09, -2.4944e-07, 0.210495)
 | 
			
		||||
body_offset = Transform3D(100, -1.71661e-05, 1.33514e-05, -9.53674e-07, 4.19617e-05, -100, 1.90735e-05, 100, 6.86646e-05, -3.33786e-06, 21.0495, 1.04904e-05)
 | 
			
		||||
mass = 5.0
 | 
			
		||||
bone_name = "mixamorig_RightLeg"
 | 
			
		||||
@@ -1658,7 +1658,7 @@ transform = Transform3D(-88.192, -17.3351, 43.8367, -46.8549, 42.4444, -77.4796,
 | 
			
		||||
collision_layer = 4
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
joint_type = 1
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.24152e-08, -2.70387e-09, 0.078608)
 | 
			
		||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.24153e-08, -2.70381e-09, 0.078608)
 | 
			
		||||
body_offset = Transform3D(100, 1.14441e-05, -7.62939e-06, -7.62939e-06, -1.90735e-05, -100, 0, 100, -5.72205e-05, 5.84126e-06, 7.8608, 4.76837e-06)
 | 
			
		||||
bone_name = "mixamorig_RightFoot"
 | 
			
		||||
joint_constraints/bias = 0.3
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,8 @@
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://oopj5mj1vdp0" path="res://assets/crosshairs/crosshair_default.png" id="2_lsd7c"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jc50w"]
 | 
			
		||||
radius = 0.3
 | 
			
		||||
margin = 0.5
 | 
			
		||||
radius = 0.4
 | 
			
		||||
height = 1.6
 | 
			
		||||
 | 
			
		||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_tl74a"]
 | 
			
		||||
@@ -89,6 +90,7 @@ collision_mask = 9
 | 
			
		||||
script = ExtResource("1_q75ai")
 | 
			
		||||
 | 
			
		||||
[node name="Collision" type="CollisionShape3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0150437, 0)
 | 
			
		||||
shape = SubResource("CapsuleShape3D_jc50w")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								scenes/maps/base/bullet_spawner/bullet_controller.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								scenes/maps/base/bullet_spawner/bullet_controller.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
extends Node
 | 
			
		||||
 | 
			
		||||
# This script shoud be able to find the player 
 | 
			
		||||
 | 
			
		||||
var players: Dictionary = {}
 | 
			
		||||
 | 
			
		||||
func spawn_a_bullet(): 
 | 
			
		||||
	# -- Get 
 | 
			
		||||
	pass
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	var world: MapController = find_parent("Map")
 | 
			
		||||
	# Get all the players on the server and add 
 | 
			
		||||
	# corresponding nodes to them
 | 
			
		||||
	
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	pass
 | 
			
		||||
							
								
								
									
										8
									
								
								scenes/maps/base/bullet_spawner/bullet_spawner.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								scenes/maps/base/bullet_spawner/bullet_spawner.tscn
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
[gd_scene format=3 uid="uid://sh5diukewgs5"]
 | 
			
		||||
 | 
			
		||||
[node name="BulletSpawner" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
 | 
			
		||||
spawn_path = NodePath("../Node3D")
 | 
			
		||||
 | 
			
		||||
[node name="Node3D" type="Node3D" parent="."]
 | 
			
		||||
							
								
								
									
										76
									
								
								scenes/maps/base/map_loader.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								scenes/maps/base/map_loader.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
class_name MapController extends Node
 | 
			
		||||
@export_category("MapController")
 | 
			
		||||
 | 
			
		||||
const PLAYER_SPAWNER: String = "res://scenes/maps/base/player_spawner/player_spawner.tscn"
 | 
			
		||||
const OBJECT_SPAWNER: String = "res://scenes/maps/base/object_spawner/object_spawner.tscn"
 | 
			
		||||
 | 
			
		||||
var player_spawner: PlayerSpawnerController
 | 
			
		||||
var object_spawner: Node3D
 | 
			
		||||
@onready var spawn_locations: SpawnController = $SpawnLocations
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	# add player spawner
 | 
			
		||||
	var err: Error = OK
 | 
			
		||||
	
 | 
			
		||||
	err = _add_player_spawner()
 | 
			
		||||
	if err != OK:
 | 
			
		||||
		print("Couldn't load player spawner")
 | 
			
		||||
	
 | 
			
		||||
	err = _add_object_spawner()
 | 
			
		||||
	if err != OK:
 | 
			
		||||
		print("Couldn't load object spawner")
 | 
			
		||||
	# add objects spawner
 | 
			
		||||
	if multiplayer.is_server():
 | 
			
		||||
		_spawn_player()
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _spawn_player():
 | 
			
		||||
	var char : Node3D = null
 | 
			
		||||
	player_spawner.spawn_players(spawn_locations)
 | 
			
		||||
 | 
			
		||||
func _add_player_spawner() -> Error :
 | 
			
		||||
	if not ResourceLoader.exists(PLAYER_SPAWNER):
 | 
			
		||||
		return ERR_DOES_NOT_EXIST
 | 
			
		||||
	var scene: PackedScene = ResourceLoader.load(PLAYER_SPAWNER)
 | 
			
		||||
	if not scene.can_instantiate():
 | 
			
		||||
		return ERR_CANT_OPEN
 | 
			
		||||
	
 | 
			
		||||
	var node: Node3D = scene.instantiate()
 | 
			
		||||
	add_child(node)
 | 
			
		||||
	player_spawner = node
 | 
			
		||||
	return OK
 | 
			
		||||
	
 | 
			
		||||
func _add_object_spawner() -> Error :
 | 
			
		||||
	if not ResourceLoader.exists(OBJECT_SPAWNER):
 | 
			
		||||
		return ERR_DOES_NOT_EXIST
 | 
			
		||||
	var scene: PackedScene = ResourceLoader.load(OBJECT_SPAWNER)
 | 
			
		||||
	if not scene.can_instantiate():
 | 
			
		||||
		return ERR_CANT_OPEN
 | 
			
		||||
	
 | 
			
		||||
	var node: Node3D = scene.instantiate()
 | 
			
		||||
	add_child(node)
 | 
			
		||||
	object_spawner = node
 | 
			
		||||
	return OK
 | 
			
		||||
	
 | 
			
		||||
var bullet_amount: int = 0
 | 
			
		||||
func spawn_bullet(starting_point: Node3D, speed: int, damage: int):
 | 
			
		||||
	var node: Node3D = ResourceLoader.load("res://scenes/weapon/bullet.tscn").instantiate()
 | 
			
		||||
	node.position = starting_point.global_position
 | 
			
		||||
	node.transform.basis = starting_point.global_transform.basis
 | 
			
		||||
	node.name = str(bullet_amount)
 | 
			
		||||
	node.speed = speed
 | 
			
		||||
	node.damage = damage
 | 
			
		||||
	bullet_amount += 1
 | 
			
		||||
	var spawner: MultiplayerSpawner = object_spawner.find_child("MultiplayerSpawner")
 | 
			
		||||
	var root_node: Node3D = object_spawner.find_child("Objects")
 | 
			
		||||
			
 | 
			
		||||
	spawner.spawn(node)
 | 
			
		||||
	root_node.add_child(node)
 | 
			
		||||
							
								
								
									
										9
									
								
								scenes/maps/base/object_spawner/object_spawner.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								scenes/maps/base/object_spawner/object_spawner.tscn
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
[gd_scene format=3 uid="uid://b0k17hibnhnv4"]
 | 
			
		||||
 | 
			
		||||
[node name="ObjectSpawner" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
 | 
			
		||||
spawn_path = NodePath("../Objects")
 | 
			
		||||
spawn_limit = 10000
 | 
			
		||||
 | 
			
		||||
[node name="Objects" type="Node3D" parent="."]
 | 
			
		||||
							
								
								
									
										33
									
								
								scenes/maps/base/player_spawner/player_spawner.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								scenes/maps/base/player_spawner/player_spawner.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
class_name PlayerSpawnerController extends Node3D
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	pass
 | 
			
		||||
	
 | 
			
		||||
func _get_spawner() -> MultiplayerSpawner:
 | 
			
		||||
	return $MultiplayerSpawner
 | 
			
		||||
	
 | 
			
		||||
func _get_root() -> Node3D:
 | 
			
		||||
	return $Players
 | 
			
		||||
 | 
			
		||||
# -- Spawn a player node and sync it across all peers
 | 
			
		||||
func spawn_players(spawn_location: SpawnController) -> Error:
 | 
			
		||||
	print("spawning players")
 | 
			
		||||
	var char : Node3D = null
 | 
			
		||||
	print(GameServerManager.players)
 | 
			
		||||
	for i in GameServerManager.players:
 | 
			
		||||
		var player_data = GameServerManager.players[i]
 | 
			
		||||
		char = ResourceLoader.load("res://scenes/characters/placeholder.tscn").instantiate()
 | 
			
		||||
		char.name = "PlayerPlaceholder_" + str(player_data.name)
 | 
			
		||||
		var position = spawn_location.get_spawner(SpawnController.Sides.BLUE)
 | 
			
		||||
		char.global_position = position
 | 
			
		||||
		char.global_position = position
 | 
			
		||||
		_get_spawner().spawn(char)
 | 
			
		||||
		_get_root().add_child(char)
 | 
			
		||||
	return OK
 | 
			
		||||
							
								
								
									
										13
									
								
								scenes/maps/base/player_spawner/player_spawner.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								scenes/maps/base/player_spawner/player_spawner.tscn
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
[gd_scene load_steps=2 format=3 uid="uid://xh710fr73bid"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://scenes/maps/base/player_spawner/player_spawner.gd" id="1_2hsyd"]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerSpawner" type="Node3D"]
 | 
			
		||||
script = ExtResource("1_2hsyd")
 | 
			
		||||
 | 
			
		||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
 | 
			
		||||
_spawnable_scenes = PackedStringArray("res://scenes/characters/placeholder.tscn")
 | 
			
		||||
spawn_path = NodePath("../Players")
 | 
			
		||||
spawn_limit = 10
 | 
			
		||||
 | 
			
		||||
[node name="Players" type="Node3D" parent="."]
 | 
			
		||||
							
								
								
									
										11
									
								
								scenes/maps/base/single_spawn_controller.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								scenes/maps/base/single_spawn_controller.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
extends Node3D
 | 
			
		||||
 | 
			
		||||
var busy: bool = false
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
func choose_spawn_location() -> Vector3:
 | 
			
		||||
	busy = true
 | 
			
		||||
	return global_position
 | 
			
		||||
							
								
								
									
										52
									
								
								scenes/maps/base/spawn_controller.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								scenes/maps/base/spawn_controller.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
class_name SpawnController extends Node3D
 | 
			
		||||
 | 
			
		||||
@export_category("SpawnController")
 | 
			
		||||
 | 
			
		||||
@onready var blue_spawners: Node3D = $Blue
 | 
			
		||||
@onready var red_spawners: Node3D = $Red
 | 
			
		||||
 | 
			
		||||
const SINGLE_SPAWN_CONTROLLER_PATH = "res://scenes/maps/base/single_spawn_controller.gd"
 | 
			
		||||
enum Sides {BLUE, RED, UNDEFINED}
 | 
			
		||||
 | 
			
		||||
@export var side: Sides = Sides.UNDEFINED
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	var single_spawn_controller: GDScript = ResourceLoader.load(SINGLE_SPAWN_CONTROLLER_PATH)
 | 
			
		||||
	for spawn: Node3D in blue_spawners.get_children():
 | 
			
		||||
		spawn.set_script(single_spawn_controller)
 | 
			
		||||
	for spawn: Node3D in red_spawners.get_children():
 | 
			
		||||
		spawn.set_script(single_spawn_controller)
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _get_available_spawn(spawn_set: Node3D) -> Node3D:
 | 
			
		||||
	if multiplayer.is_server():
 | 
			
		||||
		var spawns: Array[Node3D] = []
 | 
			
		||||
		for spawn: Node3D in spawn_set.get_children():
 | 
			
		||||
			if not spawn.busy:
 | 
			
		||||
				spawns.push_back(spawn)
 | 
			
		||||
		print(spawns.size())
 | 
			
		||||
		var random_index: int = randi_range(0, spawns.size() - 1)
 | 
			
		||||
		print(random_index)
 | 
			
		||||
		return spawns[random_index]
 | 
			
		||||
	return null
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func get_spawner(team: Sides) -> Vector3:
 | 
			
		||||
	match team:
 | 
			
		||||
		Sides.BLUE:
 | 
			
		||||
			var spawn := _get_available_spawn(blue_spawners)
 | 
			
		||||
			return spawn.choose_spawn_location()
 | 
			
		||||
		Sides.RED:
 | 
			
		||||
			print("red")
 | 
			
		||||
			return Vector3(0,0,0)
 | 
			
		||||
		_:
 | 
			
		||||
			print("хз")
 | 
			
		||||
			return Vector3(0,0,0)
 | 
			
		||||
#	Get all spawners for each team
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
extends CSGBox3D
 | 
			
		||||
 | 
			
		||||
var health = 5
 | 
			
		||||
 | 
			
		||||
@export var color: Color = Color(0, 0, 0)
 | 
			
		||||
 | 
			
		||||
var colors = [Color(1.0, 0.0, 0.0, 1.0),
 | 
			
		||||
		  Color(0.0, 1.0, 0.0, 1.0),
 | 
			
		||||
		  Color(0.0, 0.0, 1.0, 0.0)]
 | 
			
		||||
		
 | 
			
		||||
func take_damage():
 | 
			
		||||
	color = Color(randf(), randf(), randf())
 | 
			
		||||
	
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	material_override.albedo_color = color
 | 
			
		||||
	if health < 1:
 | 
			
		||||
		queue_free()
 | 
			
		||||
@@ -1,43 +0,0 @@
 | 
			
		||||
extends Node3D
 | 
			
		||||
 | 
			
		||||
var player_side: String
 | 
			
		||||
 | 
			
		||||
@onready var intro_camera = $Intro/CameraMount/IntroCamera
 | 
			
		||||
@onready var intro_view_port = $Intro/CameraMount/IntroCamera/SubViewportContainer/SubViewport
 | 
			
		||||
@onready var spawns = $Spawns
 | 
			
		||||
@onready var root = $'.' 
 | 
			
		||||
@onready var players = $Players
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	var char : Node3D = null
 | 
			
		||||
	var red_spawn: Node3D = $Spawns/Blue/SpawnArea
 | 
			
		||||
	var position := red_spawn.global_position
 | 
			
		||||
	if multiplayer.is_server():
 | 
			
		||||
		for i in GameServerManager.players:
 | 
			
		||||
			char = ResourceLoader.load("res://scenes/characters/placeholder.tscn").instantiate()
 | 
			
		||||
			char.name = "PlayerPlaceholder_" + str(GameServerManager.players[i].name)
 | 
			
		||||
			char.global_position = position
 | 
			
		||||
			var my_random_number = RandomNumberGenerator.new().randf_range(0.0, 5.0)
 | 
			
		||||
			char.global_position = position
 | 
			
		||||
			char.global_position.x += my_random_number
 | 
			
		||||
			char.global_position.y += 300 + my_random_number
 | 
			
		||||
			char.global_position.z += my_random_number
 | 
			
		||||
			$MultiplayerSpawner.spawn(char)
 | 
			
		||||
			players.add_child(char)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
var bullet_amount: int = 0
 | 
			
		||||
func spawn_bullet(starting_point: Node3D, speed: int, damage: int):
 | 
			
		||||
	var node: Node3D = ResourceLoader.load("res://scenes/weapon/bullet.tscn").instantiate()
 | 
			
		||||
	node.position = starting_point.global_position
 | 
			
		||||
	node.transform.basis = starting_point.global_transform.basis
 | 
			
		||||
	node.name = str(bullet_amount)
 | 
			
		||||
	node.speed = speed
 | 
			
		||||
	node.damage = damage
 | 
			
		||||
	bullet_amount += 1
 | 
			
		||||
	#$BulletSpawner.spawn(node)
 | 
			
		||||
	$Bullets.add_child(node)
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	pass
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,11 +0,0 @@
 | 
			
		||||
extends CSGBox3D
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	pass
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
extends Control
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
	
 | 
			
		||||
@onready var health_indicator: Label = $HealthIndicator
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	var root := get_tree().get_root()
 | 
			
		||||
	var id := multiplayer.get_unique_id()
 | 
			
		||||
	var player_data = GameServerManager.get_player_health.rpc_id(1, id)
 | 
			
		||||
	health_indicator.text = str(player_data["health"])
 | 
			
		||||
	
 | 
			
		||||
	pass
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
extends Node3D
 | 
			
		||||
 | 
			
		||||
var target_node_name: String = "TargetNode" # Name of the Node3D to detect
 | 
			
		||||
 | 
			
		||||
@onready var raycast : RayCast3D =  $CameraMount/Camera3D/RayCast3D
 | 
			
		||||
@onready var camera : Camera3D = $CameraMount/Camera3D
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
			
		||||
func _process(delta: float) -> void:
 | 
			
		||||
	var blue := $ChooseTeam/Blue
 | 
			
		||||
	var red := $ChooseTeam/Read
 | 
			
		||||
	if raycast.is_colliding():
 | 
			
		||||
		var collider = raycast.get_collider()
 | 
			
		||||
		if collider and collider.name == target_node_name:
 | 
			
		||||
			print("Mouse is pointing at:", collider.name)
 | 
			
		||||
		else:
 | 
			
		||||
			print("Mouse is not pointing at the target node.")
 | 
			
		||||
	else:
 | 
			
		||||
		print("Mouse is not pointing at anything.")
 | 
			
		||||
							
								
								
									
										1274
									
								
								scenes/maps/maps/el_test.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1274
									
								
								scenes/maps/maps/el_test.tscn
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										13743
									
								
								scenes/maps/maps/lowpoly_tdm_1.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13743
									
								
								scenes/maps/maps/lowpoly_tdm_1.tscn
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										950
									
								
								scenes/maps/maps/lowpoly_tdm_2.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										950
									
								
								scenes/maps/maps/lowpoly_tdm_2.tscn
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,76 +0,0 @@
 | 
			
		||||
[gd_scene load_steps=14 format=3 uid="uid://hivk5ek6u887"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c5uytbu1wc1bq" path="res://addons/kenney_prototype_textures/orange/texture_09.png" id="1_llm1c"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://e4nd8b6f0tw7" path="res://addons/kenney_prototype_textures/dark/texture_04.png" id="2_k2arh"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://1j5ajc26w5xk" path="res://scenes/utils/character_bak.tscn" id="3_6anfg"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bcdcw"]
 | 
			
		||||
albedo_texture = ExtResource("1_lae2b")
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p4psn"]
 | 
			
		||||
albedo_texture = ExtResource("2_7newm")
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0jiki"]
 | 
			
		||||
albedo_texture = ExtResource("2_7newm")
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1pwnn"]
 | 
			
		||||
albedo_texture = ExtResource("2_7newm")
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1yo6k"]
 | 
			
		||||
albedo_texture = ExtResource("2_7newm")
 | 
			
		||||
 | 
			
		||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_3aaun"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Sky" id="Sky_xco2g"]
 | 
			
		||||
sky_material = SubResource("ProceduralSkyMaterial_3aaun")
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Environment" id="Environment_5t2t5"]
 | 
			
		||||
background_mode = 2
 | 
			
		||||
sky = SubResource("Sky_xco2g")
 | 
			
		||||
sdfgi_enabled = true
 | 
			
		||||
fog_light_energy = 0.52
 | 
			
		||||
fog_density = 0.1387
 | 
			
		||||
volumetric_fog_enabled = true
 | 
			
		||||
volumetric_fog_density = 0.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_32hnm"]
 | 
			
		||||
 | 
			
		||||
[node name="TestMap" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 50, 0)
 | 
			
		||||
 | 
			
		||||
[node name="World" type="Node3D" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Base" type="Node3D" parent="World"]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" type="CSGBox3D" parent="World/Base"]
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(100, 1, 100)
 | 
			
		||||
 | 
			
		||||
[node name="Wall_1" type="CSGBox3D" parent="World/Base"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0)
 | 
			
		||||
material_override = SubResource("StandardMaterial3D_p4psn")
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(1, 20, 100)
 | 
			
		||||
 | 
			
		||||
[node name="Wall_2" type="CSGBox3D" parent="World/Base"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, 0)
 | 
			
		||||
material_override = SubResource("StandardMaterial3D_0jiki")
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(1, 20, 100)
 | 
			
		||||
 | 
			
		||||
[node name="Wall_3" type="CSGBox3D" parent="World/Base"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50)
 | 
			
		||||
material_override = SubResource("StandardMaterial3D_1pwnn")
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(100, 20, 1)
 | 
			
		||||
 | 
			
		||||
[node name="Wall_4" type="CSGBox3D" parent="World/Base"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -50)
 | 
			
		||||
material_override = SubResource("StandardMaterial3D_1yo6k")
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(100, 20, 1)
 | 
			
		||||
 | 
			
		||||
[node name="Character" parent="World" instance=ExtResource("3_6anfg")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.6432, 0)
 | 
			
		||||
							
								
								
									
										14
									
								
								scenes/resources/player_state.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								scenes/resources/player_state.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
class_name PlayerState extends Object
 | 
			
		||||
@export_category("PlayerState")
 | 
			
		||||
 | 
			
		||||
# -- Player's metadata
 | 
			
		||||
var name: String
 | 
			
		||||
var id: int
 | 
			
		||||
 | 
			
		||||
# -- Player's in-game data
 | 
			
		||||
var health: int
 | 
			
		||||
var current_weapon_slot: int
 | 
			
		||||
 | 
			
		||||
func init(id: int, name: String):
 | 
			
		||||
	id = id
 | 
			
		||||
	name = name
 | 
			
		||||
@@ -43,6 +43,13 @@ offset_right = 497.0
 | 
			
		||||
offset_bottom = 220.0
 | 
			
		||||
text = "192.168.0.28"
 | 
			
		||||
 | 
			
		||||
[node name="Maps" type="ItemList" parent="."]
 | 
			
		||||
layout_mode = 0
 | 
			
		||||
offset_left = 995.0
 | 
			
		||||
offset_top = 111.0
 | 
			
		||||
offset_right = 1595.0
 | 
			
		||||
offset_bottom = 624.0
 | 
			
		||||
 | 
			
		||||
[connection signal="player_connected" from="." to="." method="_on_player_connected"]
 | 
			
		||||
[connection signal="player_disconnected" from="." to="." method="_on_player_disconnected"]
 | 
			
		||||
[connection signal="server_disconnected" from="." to="." method="_on_server_disconnected"]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
[gd_scene load_steps=2 format=3 uid="uid://bo8jemggniu3c"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://c1v6kb00y77ij" path="res://scenes/maps/el_test.tscn" id="1_25xw6"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://c1v6kb00y77ij" path="res://scenes/maps/maps/el_test.tscn" id="1_25xw6"]
 | 
			
		||||
 | 
			
		||||
[node name="ChooseTeam" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,14 @@ func _ready() -> void:
 | 
			
		||||
	multiplayer.connected_to_server.connect(_on_connected_ok)
 | 
			
		||||
	multiplayer.connection_failed.connect(_on_connected_fail)
 | 
			
		||||
	multiplayer.server_disconnected.connect(_on_server_disconnected)
 | 
			
		||||
	
 | 
			
		||||
	var map_dir := DirAccess.open("res://scenes/maps/maps/")
 | 
			
		||||
	if map_dir:
 | 
			
		||||
		map_dir.list_dir_begin()
 | 
			
		||||
		var file_name = map_dir.get_next()
 | 
			
		||||
		while file_name != "":
 | 
			
		||||
			$Maps.add_item(file_name)
 | 
			
		||||
			file_name = map_dir.get_next()
 | 
			
		||||
 | 
			
		||||
func join_game(address = ""):
 | 
			
		||||
	address = address_input.text
 | 
			
		||||
@@ -50,7 +58,12 @@ func remove_multiplayer_peer():
 | 
			
		||||
# do Lobby.load_game.rpc(filepath)
 | 
			
		||||
@rpc("call_local", "reliable")
 | 
			
		||||
func load_game():
 | 
			
		||||
	get_tree().change_scene_to_file("res://scenes/maps/el_test.tscn")
 | 
			
		||||
	var chosen_map_index = $Maps.get_selected_items()[0]
 | 
			
		||||
	var chosen_map = $Maps.get_item_text(chosen_map_index)
 | 
			
		||||
	print(chosen_map)
 | 
			
		||||
	var path_tmpl := "res://scenes/maps/maps/%s"
 | 
			
		||||
	var path := path_tmpl % chosen_map
 | 
			
		||||
	get_tree().change_scene_to_file(path)
 | 
			
		||||
 | 
			
		||||
# Every peer will call this when they have loaded the game scene.
 | 
			
		||||
@rpc("any_peer", "call_local", "reliable")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
extends Node3D
 | 
			
		||||
class_name WeaponController extends Node3D
 | 
			
		||||
@export_category("WeaponController")
 | 
			
		||||
 | 
			
		||||
# ---------------------------------------------------------------------
 | 
			
		||||
# Main weapon params
 | 
			
		||||
@@ -8,6 +9,8 @@ extends Node3D
 | 
			
		||||
@export var cooldown: float = 0
 | 
			
		||||
# bullet speed in m/s
 | 
			
		||||
@export var bullet_speed: int = 0
 | 
			
		||||
@export var bullet_spread_script: GDScript
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,6 @@ func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
@onready var bullet_trace_distance: Node3D = $BulletTraceDistance
 | 
			
		||||
@onready var bullet_trail_end: Node3D = $BulletTrailEnd
 | 
			
		||||
 | 
			
		||||
func shoot() -> Error:
 | 
			
		||||
	var bullet_start_node: Node3D = bullet_trace_distance.find_child("Start")
 | 
			
		||||
	var bullet_end_node: Node3D = bullet_trace_distance.find_child("End")
 | 
			
		||||
 
 | 
			
		||||
@@ -3,10 +3,12 @@ extends Node
 | 
			
		||||
var players = {}
 | 
			
		||||
 | 
			
		||||
var local_player_health = 0
 | 
			
		||||
 | 
			
		||||
# Called when the node enters the scene tree for the first time.
 | 
			
		||||
@rpc("reliable", "call_local")
 | 
			
		||||
func get_player_health(id: int) -> int:
 | 
			
		||||
	return players.get(id)["health"]
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	pass # Replace with function body.
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
@@ -194,9 +194,9 @@ func _process(delta: float) -> void:
 | 
			
		||||
	fps_indicator.text = str(Engine.get_frames_per_second())
 | 
			
		||||
	if health == 0:
 | 
			
		||||
		alive = false
 | 
			
		||||
		var world: Node3D = find_parent("ElTest")
 | 
			
		||||
		var spawner: MultiplayerSpawner = world.find_child("ObjectsSpawner")
 | 
			
		||||
		var objects_root: Node3D = world.find_child("Objects")
 | 
			
		||||
		var world:  Node3D = find_parent("Map")
 | 
			
		||||
		var spawner: MultiplayerSpawner = world.find_child("ObjectSpawner").find_child("MultiplayerSpawner")
 | 
			
		||||
		var objects_root: Node3D = world.find_child("ObjectSpawner").find_child("Objects")
 | 
			
		||||
		spawner.spawn(model)
 | 
			
		||||
		model.reparent(get_tree().get_root())
 | 
			
		||||
		model.die()
 | 
			
		||||
@@ -263,7 +263,7 @@ func _shoot():
 | 
			
		||||
@rpc("any_peer", "call_local", "unreliable_ordered")
 | 
			
		||||
func _send_shot_to_server(start_position):
 | 
			
		||||
	# -- TODO: Should not be hardcoded
 | 
			
		||||
	var world: Node3D = find_parent("ElTest")
 | 
			
		||||
	var world: Node3D = find_parent("Map")
 | 
			
		||||
	world.spawn_bullet(bullet_starting_point, current_weapon_bullet_speed, current_weapon_damage)
 | 
			
		||||
	
 | 
			
		||||
func _get_camera_collision():
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user