More work on multiplayer and first pass of the trap icons
This commit is contained in:
BIN
external/trap icons.clip
vendored
Normal file
BIN
external/trap icons.clip
vendored
Normal file
Binary file not shown.
BIN
external/trap icons.png
vendored
Normal file
BIN
external/trap icons.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
4
models/floor.mtl
Normal file
4
models/floor.mtl
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
newmtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
map_Kd floor.png
|
||||||
|
newmtl none
|
||||||
15
models/floor.obj
Normal file
15
models/floor.obj
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
mtllib floor.mtl
|
||||||
|
|
||||||
|
o plane
|
||||||
|
v -0.5 0 0.5
|
||||||
|
v -0.5 0 -0.5
|
||||||
|
v 0.5 0 0.5
|
||||||
|
v 0.5 0 -0.5
|
||||||
|
vt 1 0
|
||||||
|
vt 1 1
|
||||||
|
vt 0 1
|
||||||
|
vt 0 0
|
||||||
|
vn 0 1 0
|
||||||
|
usemtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
f 3/1/1 4/2/1 2/3/1 1/4/1
|
||||||
25
models/floor.obj.import
Normal file
25
models/floor.obj.import
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://bgcoelpongpsi"
|
||||||
|
path="res://.godot/imported/floor.obj-a982712ee394f542e990a04cd0fb8372.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/floor.obj-a982712ee394f542e990a04cd0fb8372.mesh"]
|
||||||
|
|
||||||
|
source_file="res://models/floor.obj"
|
||||||
|
dest_files=["res://.godot/imported/floor.obj-a982712ee394f542e990a04cd0fb8372.mesh", "res://.godot/imported/floor.obj-a982712ee394f542e990a04cd0fb8372.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
generate_lods=true
|
||||||
|
generate_shadow_mesh=true
|
||||||
|
generate_lightmap_uv2=false
|
||||||
|
generate_lightmap_uv2_texel_size=0.2
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
force_disable_mesh_compression=false
|
||||||
|
Before Width: | Height: | Size: 606 B After Width: | Height: | Size: 606 B |
@@ -3,7 +3,7 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bj07x13pkoevk"
|
uid="uid://bj07x13pkoevk"
|
||||||
path.s3tc="res://.godot/imported/tile.png-82ac121192f8645b1b55058345db6f74.s3tc.ctex"
|
path.s3tc="res://.godot/imported/floor.png-fce038e62681eaa93c5bed78391af64f.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc"],
|
"imported_formats": ["s3tc_bptc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
@@ -11,8 +11,8 @@ metadata={
|
|||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://visuals/textures/tile.png"
|
source_file="res://models/floor.png"
|
||||||
dest_files=["res://.godot/imported/tile.png-82ac121192f8645b1b55058345db6f74.s3tc.ctex"]
|
dest_files=["res://.godot/imported/floor.png-fce038e62681eaa93c5bed78391af64f.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
4
models/half wall.mtl
Normal file
4
models/half wall.mtl
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
newmtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
map_Kd tile.png
|
||||||
|
newmtl none
|
||||||
15
models/half wall.obj
Normal file
15
models/half wall.obj
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
mtllib half wall.mtl
|
||||||
|
|
||||||
|
o plane
|
||||||
|
v -0.5 0 0.5
|
||||||
|
v -0.5 0 -0.5
|
||||||
|
v -0.5 0.5 -0.5
|
||||||
|
v -0.5 0.5 0.5
|
||||||
|
vt 1 2.220446049250313e-16
|
||||||
|
vt 0.9999999999999999 0.5000000000000001
|
||||||
|
vt 2.7755575615628914e-17 0.5
|
||||||
|
vt 5.551115123125783e-17 0
|
||||||
|
vn -1 0 0
|
||||||
|
usemtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
f 1/1/1 4/2/1 3/3/1 2/4/1
|
||||||
25
models/half wall.obj.import
Normal file
25
models/half wall.obj.import
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://bdlh65yngwppe"
|
||||||
|
path="res://.godot/imported/half wall.obj-41a26390d6a35c1525227e7c6ed0d125.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/half wall.obj-41a26390d6a35c1525227e7c6ed0d125.mesh"]
|
||||||
|
|
||||||
|
source_file="res://models/half wall.obj"
|
||||||
|
dest_files=["res://.godot/imported/half wall.obj-41a26390d6a35c1525227e7c6ed0d125.mesh", "res://.godot/imported/half wall.obj-41a26390d6a35c1525227e7c6ed0d125.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
generate_lods=true
|
||||||
|
generate_shadow_mesh=true
|
||||||
|
generate_lightmap_uv2=false
|
||||||
|
generate_lightmap_uv2_texel_size=0.2
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
force_disable_mesh_compression=false
|
||||||
BIN
models/half wall.png
Normal file
BIN
models/half wall.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1004 B |
41
models/half wall.png.import
Normal file
41
models/half wall.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cp7arlwfx8j2m"
|
||||||
|
path.s3tc="res://.godot/imported/half wall.png-f0428df792f60cce8be234049c673993.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/half wall.png"
|
||||||
|
dest_files=["res://.godot/imported/half wall.png-f0428df792f60cce8be234049c673993.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
4
models/surface ramp.mtl
Normal file
4
models/surface ramp.mtl
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
newmtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
map_Kd tile.png
|
||||||
|
newmtl none
|
||||||
15
models/surface ramp.obj
Normal file
15
models/surface ramp.obj
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
mtllib surface ramp.mtl
|
||||||
|
|
||||||
|
o plane
|
||||||
|
v 0.5 1 0.5
|
||||||
|
v 0.5 0 -0.5
|
||||||
|
v -0.5 1 0.5
|
||||||
|
v -0.5 0 -0.5
|
||||||
|
vt 1 0
|
||||||
|
vt 1 1
|
||||||
|
vt 0 1
|
||||||
|
vt 0 0
|
||||||
|
vn 0 0.7071067811865476 -0.7071067811865476
|
||||||
|
usemtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||||
25
models/surface ramp.obj.import
Normal file
25
models/surface ramp.obj.import
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://b0ncck5nm0k2j"
|
||||||
|
path="res://.godot/imported/surface ramp.obj-fadb0e0ae0ce6d2d2d467486b6f6d1f2.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/surface ramp.obj-fadb0e0ae0ce6d2d2d467486b6f6d1f2.mesh"]
|
||||||
|
|
||||||
|
source_file="res://models/surface ramp.obj"
|
||||||
|
dest_files=["res://.godot/imported/surface ramp.obj-fadb0e0ae0ce6d2d2d467486b6f6d1f2.mesh", "res://.godot/imported/surface ramp.obj-fadb0e0ae0ce6d2d2d467486b6f6d1f2.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
generate_lods=true
|
||||||
|
generate_shadow_mesh=true
|
||||||
|
generate_lightmap_uv2=false
|
||||||
|
generate_lightmap_uv2_texel_size=0.2
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
force_disable_mesh_compression=false
|
||||||
36
models/test level library.tres
Normal file
36
models/test level library.tres
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
[gd_resource type="MeshLibrary" load_steps=5 format=3 uid="uid://ckbu303p2nxn5"]
|
||||||
|
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://bgcoelpongpsi" path="res://models/floor.obj" id="1_7lhuo"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://b0ncck5nm0k2j" path="res://models/surface ramp.obj" id="1_mwwlt"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://c8lfqeb71okli" path="res://models/wall ramp.obj" id="3_hmdv5"]
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_de6bv"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
item/0/name = "floor"
|
||||||
|
item/0/mesh = ExtResource("1_7lhuo")
|
||||||
|
item/0/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/0/mesh_cast_shadow = 1
|
||||||
|
item/0/shapes = [SubResource("BoxShape3D_de6bv"), Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)]
|
||||||
|
item/0/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/0/navigation_layers = 1
|
||||||
|
item/1/name = "wall"
|
||||||
|
item/1/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/1/mesh_cast_shadow = 1
|
||||||
|
item/1/shapes = []
|
||||||
|
item/1/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/1/navigation_layers = 1
|
||||||
|
item/2/name = "surface ramp"
|
||||||
|
item/2/mesh = ExtResource("1_mwwlt")
|
||||||
|
item/2/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/2/mesh_cast_shadow = 1
|
||||||
|
item/2/shapes = []
|
||||||
|
item/2/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/2/navigation_layers = 1
|
||||||
|
item/3/name = "wall ramp"
|
||||||
|
item/3/mesh = ExtResource("3_hmdv5")
|
||||||
|
item/3/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/3/mesh_cast_shadow = 1
|
||||||
|
item/3/shapes = []
|
||||||
|
item/3/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
|
item/3/navigation_layers = 1
|
||||||
4
models/wall ramp.mtl
Normal file
4
models/wall ramp.mtl
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
newmtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
map_Kd tile.png
|
||||||
|
newmtl none
|
||||||
13
models/wall ramp.obj
Normal file
13
models/wall ramp.obj
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
mtllib wall ramp.mtl
|
||||||
|
|
||||||
|
o plane
|
||||||
|
v -0.5 1 0.5
|
||||||
|
v -0.5 0 0.5
|
||||||
|
v -0.5 0 -0.5
|
||||||
|
vt 0.9999999999999998 1
|
||||||
|
vt 5.551115123125783e-17 0
|
||||||
|
vt 1 2.220446049250313e-16
|
||||||
|
vn -1 0 0
|
||||||
|
usemtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
f 1/1/1 3/2/1 2/3/1
|
||||||
25
models/wall ramp.obj.import
Normal file
25
models/wall ramp.obj.import
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://c8lfqeb71okli"
|
||||||
|
path="res://.godot/imported/wall ramp.obj-3a1cb40ca13f447b9b1491344be122bb.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/wall ramp.obj-3a1cb40ca13f447b9b1491344be122bb.mesh"]
|
||||||
|
|
||||||
|
source_file="res://models/wall ramp.obj"
|
||||||
|
dest_files=["res://.godot/imported/wall ramp.obj-3a1cb40ca13f447b9b1491344be122bb.mesh", "res://.godot/imported/wall ramp.obj-3a1cb40ca13f447b9b1491344be122bb.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
generate_lods=true
|
||||||
|
generate_shadow_mesh=true
|
||||||
|
generate_lightmap_uv2=false
|
||||||
|
generate_lightmap_uv2_texel_size=0.2
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
force_disable_mesh_compression=false
|
||||||
4
models/wall.mtl
Normal file
4
models/wall.mtl
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
newmtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
map_Kd floor.png
|
||||||
|
newmtl none
|
||||||
15
models/wall.obj
Normal file
15
models/wall.obj
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Made in Blockbench 5.0.4
|
||||||
|
mtllib wall.mtl
|
||||||
|
|
||||||
|
o plane
|
||||||
|
v -0.5 0 0.5
|
||||||
|
v -0.5 0 -0.5
|
||||||
|
v 0.5 0 0.5
|
||||||
|
v 0.5 0 -0.5
|
||||||
|
vt 1 0
|
||||||
|
vt 1 1
|
||||||
|
vt 0 1
|
||||||
|
vt 0 0
|
||||||
|
vn 0 1 0
|
||||||
|
usemtl m_1239a932-4b3f-9954-06c2-b2a7f82dfbff
|
||||||
|
f 3/1/1 4/2/1 2/3/1 1/4/1
|
||||||
25
models/wall.obj.import
Normal file
25
models/wall.obj.import
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://c0v6cd31gcxlx"
|
||||||
|
path="res://.godot/imported/wall.obj-cefac5221396f2fb0e7167019735085e.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/wall.obj-cefac5221396f2fb0e7167019735085e.mesh"]
|
||||||
|
|
||||||
|
source_file="res://models/wall.obj"
|
||||||
|
dest_files=["res://.godot/imported/wall.obj-cefac5221396f2fb0e7167019735085e.mesh", "res://.godot/imported/wall.obj-cefac5221396f2fb0e7167019735085e.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
generate_lods=true
|
||||||
|
generate_shadow_mesh=true
|
||||||
|
generate_lightmap_uv2=false
|
||||||
|
generate_lightmap_uv2_texel_size=0.2
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
force_disable_mesh_compression=false
|
||||||
BIN
models/wall.png
Normal file
BIN
models/wall.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 552 B |
41
models/wall.png.import
Normal file
41
models/wall.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d4jdkdo5abpa6"
|
||||||
|
path.s3tc="res://.godot/imported/wall.png-25654285618308238afdf997a0e87649.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/wall.png"
|
||||||
|
dest_files=["res://.godot/imported/wall.png-25654285618308238afdf997a0e87649.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
@@ -23,11 +23,17 @@ Multiplayer="*res://scripts/autos/multiplayer.gd"
|
|||||||
|
|
||||||
window/size/viewport_width=1920
|
window/size/viewport_width=1920
|
||||||
window/size/viewport_height=1080
|
window/size/viewport_height=1080
|
||||||
|
window/size/initial_position_type=0
|
||||||
|
|
||||||
[dotnet]
|
[dotnet]
|
||||||
|
|
||||||
project/assembly_name="Trap Gunner"
|
project/assembly_name="Trap Gunner"
|
||||||
|
|
||||||
|
[global_group]
|
||||||
|
|
||||||
|
level_spawner=""
|
||||||
|
scenes=""
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
ui_menu={
|
ui_menu={
|
||||||
|
|||||||
@@ -2,16 +2,21 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dep7nr2nkdmga" path="res://scripts/multiplayer_setup.gd" id="1_lckj3"]
|
[ext_resource type="Script" uid="uid://dep7nr2nkdmga" path="res://scripts/multiplayer_setup.gd" id="1_lckj3"]
|
||||||
|
|
||||||
[node name="Multiplayer Setup" type="Control"]
|
[node name="MultiplayerSetup" type="MultiplayerSpawner" groups=["level_spawner"]]
|
||||||
|
_spawnable_scenes = PackedStringArray("uid://ti65jukt8gvs")
|
||||||
|
spawn_path = NodePath(".")
|
||||||
|
script = ExtResource("1_lckj3")
|
||||||
|
|
||||||
|
[node name="Setup" type="Control" parent="." groups=["scenes"]]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_lckj3")
|
|
||||||
|
|
||||||
[node name="Panel" type="PanelContainer" parent="."]
|
[node name="Panel" type="PanelContainer" parent="Setup"]
|
||||||
custom_minimum_size = Vector2(400, 400)
|
custom_minimum_size = Vector2(400, 400)
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 8
|
anchors_preset = 8
|
||||||
@@ -26,68 +31,68 @@ offset_bottom = 200.0
|
|||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="Menu" type="VBoxContainer" parent="Panel"]
|
[node name="Menu" type="VBoxContainer" parent="Setup/Panel"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="HostButton" type="Button" parent="Panel/Menu"]
|
[node name="HostButton" type="Button" parent="Setup/Panel/Menu"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Host Match"
|
text = "Host Match"
|
||||||
|
|
||||||
[node name="JoinButton" type="Button" parent="Panel/Menu"]
|
[node name="JoinButton" type="Button" parent="Setup/Panel/Menu"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Join Match"
|
text = "Join Match"
|
||||||
|
|
||||||
[node name="BackButton" type="Button" parent="Panel/Menu"]
|
[node name="BackButton" type="Button" parent="Setup/Panel/Menu"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Back"
|
text = "Back"
|
||||||
|
|
||||||
[node name="Hosting" type="VBoxContainer" parent="Panel"]
|
[node name="Hosting" type="VBoxContainer" parent="Setup/Panel"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Panel/Hosting"]
|
[node name="Label" type="Label" parent="Setup/Panel/Hosting"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "HOSTING MATCH"
|
text = "HOSTING MATCH"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/Hosting"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="Setup/Panel/Hosting"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Panel/Hosting/HBoxContainer"]
|
[node name="Label" type="Label" parent="Setup/Panel/Hosting/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Handle"
|
text = "Handle"
|
||||||
|
|
||||||
[node name="HostHandle" type="TextEdit" parent="Panel/Hosting/HBoxContainer"]
|
[node name="HostHandle" type="TextEdit" parent="Setup/Panel/Hosting/HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="HostButton" type="Button" parent="Panel/Hosting"]
|
[node name="HostButton" type="Button" parent="Setup/Panel/Hosting"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "HOST"
|
text = "HOST"
|
||||||
|
|
||||||
[node name="BackButton" type="Button" parent="Panel/Hosting"]
|
[node name="BackButton" type="Button" parent="Setup/Panel/Hosting"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Back"
|
text = "Back"
|
||||||
|
|
||||||
[node name="Host Waiting" type="VBoxContainer" parent="Panel"]
|
[node name="Host Waiting" type="VBoxContainer" parent="Setup/Panel"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Panel/Host Waiting"]
|
[node name="Label" type="Label" parent="Setup/Panel/Host Waiting"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "WAITING FOR OPPONENT"
|
text = "WAITING FOR OPPONENT"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="Panel/Host Waiting"]
|
[node name="PanelContainer" type="PanelContainer" parent="Setup/Panel/Host Waiting"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="ParticipantsText" type="RichTextLabel" parent="Panel/Host Waiting/PanelContainer"]
|
[node name="ParticipantsText" type="RichTextLabel" parent="Setup/Panel/Host Waiting/PanelContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
custom_minimum_size = Vector2(0, 70)
|
custom_minimum_size = Vector2(0, 70)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@@ -96,62 +101,64 @@ bbcode_enabled = true
|
|||||||
text = "[b]*YOU (Host)[/b]
|
text = "[b]*YOU (Host)[/b]
|
||||||
[color=\"FFFF00\"]*THEM (Opponent)[/color]"
|
[color=\"FFFF00\"]*THEM (Opponent)[/color]"
|
||||||
|
|
||||||
[node name="StartButton" type="Button" parent="Panel/Host Waiting"]
|
[node name="StartButton" type="Button" parent="Setup/Panel/Host Waiting"]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
disabled = true
|
||||||
text = "START"
|
text = "START"
|
||||||
|
|
||||||
[node name="BackButton" type="Button" parent="Panel/Host Waiting"]
|
[node name="ExitButton" type="Button" parent="Setup/Panel/Host Waiting"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Back"
|
text = "EXIT"
|
||||||
|
|
||||||
[node name="Joining" type="VBoxContainer" parent="Panel"]
|
[node name="Joining" type="VBoxContainer" parent="Setup/Panel"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Panel/Joining"]
|
[node name="Label" type="Label" parent="Setup/Panel/Joining"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "JOINING MATCH"
|
text = "JOINING MATCH"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/Joining"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="Setup/Panel/Joining"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Panel/Joining/HBoxContainer"]
|
[node name="Label" type="Label" parent="Setup/Panel/Joining/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "HANDLE"
|
text = "HANDLE"
|
||||||
|
|
||||||
[node name="JoinHandle" type="TextEdit" parent="Panel/Joining/HBoxContainer"]
|
[node name="JoinHandle" type="TextEdit" parent="Setup/Panel/Joining/HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="HBoxContainer2" type="HBoxContainer" parent="Panel/Joining"]
|
[node name="HBoxContainer2" type="HBoxContainer" parent="Setup/Panel/Joining"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Panel/Joining/HBoxContainer2"]
|
[node name="Label" type="Label" parent="Setup/Panel/Joining/HBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "MATCH CODE"
|
text = "MATCH CODE"
|
||||||
|
|
||||||
[node name="TextEdit" type="TextEdit" parent="Panel/Joining/HBoxContainer2"]
|
[node name="TextEdit" type="TextEdit" parent="Setup/Panel/Joining/HBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="JoinButton" type="Button" parent="Panel/Joining"]
|
[node name="JoinButton" type="Button" parent="Setup/Panel/Joining"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "HOST"
|
text = "JOIN"
|
||||||
|
|
||||||
[node name="BackButton" type="Button" parent="Panel/Joining"]
|
[node name="BackButton" type="Button" parent="Setup/Panel/Joining"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Back"
|
text = "Back"
|
||||||
|
|
||||||
[connection signal="pressed" from="Panel/Menu/HostButton" to="." method="_on_host_game_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Menu/HostButton" to="." method="_on_host_game_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Menu/JoinButton" to="." method="_on_join_game_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Menu/JoinButton" to="." method="_on_join_game_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Menu/BackButton" to="." method="_on_menu_back_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Menu/BackButton" to="." method="_on_menu_back_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Hosting/HostButton" to="." method="_on_start_hosting_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Hosting/HostButton" to="." method="_on_start_hosting_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Hosting/BackButton" to="." method="_on_hosting_back_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Hosting/BackButton" to="." method="_on_hosting_back_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Host Waiting/StartButton" to="." method="_on_start_game_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Host Waiting/StartButton" to="." method="_on_start_game_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Host Waiting/BackButton" to="." method="_on_waiting_back_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Host Waiting/ExitButton" to="." method="_on_waiting_back_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Joining/JoinButton" to="." method="_on_join_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Joining/JoinButton" to="." method="_on_join_button_pressed"]
|
||||||
[connection signal="pressed" from="Panel/Joining/BackButton" to="." method="_on_joining_back_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Joining/BackButton" to="." method="_on_joining_back_button_pressed"]
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
[gd_scene load_steps=6 format=3 uid="uid://ti65jukt8gvs"]
|
[gd_scene load_steps=6 format=3 uid="uid://ti65jukt8gvs"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bgocskbofewsr" path="res://templates/HUD.tscn" id="1_q2h5d"]
|
[ext_resource type="PackedScene" uid="uid://bgocskbofewsr" path="res://templates/HUD.tscn" id="1_q2h5d"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bj07x13pkoevk" path="res://visuals/textures/tile.png" id="2_02mmr"]
|
[ext_resource type="Script" uid="uid://ccj72thiebvx8" path="res://scripts/multiplayer_level.gd" id="1_qfwdi"]
|
||||||
[ext_resource type="Script" uid="uid://cymi1n4gavixy" path="res://scripts/level_camera.gd" id="3_qfwdi"]
|
[ext_resource type="Texture2D" uid="uid://bj07x13pkoevk" path="res://models/floor.png" id="2_02mmr"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cqe6hkn2oncpc" path="res://templates/multiplayer_pc.tscn" id="4_q2h5d"]
|
[ext_resource type="Script" uid="uid://nn76jlxer5qb" path="res://scripts/multiplayer_spawner.gd" id="5_02mmr"]
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gbhdq"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gbhdq"]
|
||||||
albedo_texture = ExtResource("2_02mmr")
|
albedo_texture = ExtResource("2_02mmr")
|
||||||
uv1_scale = Vector3(100, 100, 100)
|
uv1_scale = Vector3(100, 100, 100)
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
|
|
||||||
[node name="Node3D" type="Node3D"]
|
[node name="MultiplayerTest" type="Node3D"]
|
||||||
|
script = ExtResource("1_qfwdi")
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||||
layer = 1000
|
layer = 1000
|
||||||
@@ -21,22 +22,25 @@ layer = 1000
|
|||||||
size = Vector3(100, 1, 100)
|
size = Vector3(100, 1, 100)
|
||||||
material = SubResource("StandardMaterial3D_gbhdq")
|
material = SubResource("StandardMaterial3D_gbhdq")
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="."]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 0.49999997, 0.86602545, 0, -0.86602545, 0.49999997, 0, 18.855, 9.603047)
|
|
||||||
projection = 1
|
|
||||||
size = 5.0
|
|
||||||
script = ExtResource("3_qfwdi")
|
|
||||||
|
|
||||||
[node name="MultiplayerPC" parent="." instance=ExtResource("4_q2h5d")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
|
||||||
|
|
||||||
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 18.508709, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 18.508709, 0)
|
||||||
omni_range = 25.142
|
omni_range = 25.142
|
||||||
omni_attenuation = -0.165
|
omni_attenuation = -0.165
|
||||||
|
|
||||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
|
[node name="Spawner" type="MultiplayerSpawner" parent="." groups=["spawner"]]
|
||||||
|
unique_name_in_owner = true
|
||||||
spawn_path = NodePath("../Players")
|
spawn_path = NodePath("../Players")
|
||||||
spawn_limit = 2
|
spawn_limit = 2
|
||||||
|
script = ExtResource("5_02mmr")
|
||||||
|
|
||||||
|
[node name="SpawnPoints" type="Node" parent="Spawner"]
|
||||||
|
|
||||||
|
[node name="Node3D" type="Node3D" parent="Spawner/SpawnPoints"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.415695, 0, 0)
|
||||||
|
|
||||||
|
[node name="Node3D2" type="Node3D" parent="Spawner/SpawnPoints"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.23061, 0, 0)
|
||||||
|
|
||||||
[node name="Players" type="Node3D" parent="."]
|
[node name="Players" type="Node3D" parent="."]
|
||||||
|
|
||||||
|
[node name="GridMap" type="GridMap" parent="."]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://by6suwmds7xq2"]
|
[gd_scene load_steps=9 format=3 uid="uid://by6suwmds7xq2"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bgocskbofewsr" path="res://templates/HUD.tscn" id="1_x4b8f"]
|
[ext_resource type="PackedScene" uid="uid://bgocskbofewsr" path="res://templates/HUD.tscn" id="1_x4b8f"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bj07x13pkoevk" path="res://visuals/textures/tile.png" id="2_tmr53"]
|
[ext_resource type="Texture2D" uid="uid://bj07x13pkoevk" path="res://models/floor.png" id="2_tmr53"]
|
||||||
[ext_resource type="Script" uid="uid://cymi1n4gavixy" path="res://scripts/level_camera.gd" id="3_qcd3b"]
|
[ext_resource type="Script" uid="uid://cymi1n4gavixy" path="res://scripts/level_camera.gd" id="3_qcd3b"]
|
||||||
[ext_resource type="Script" uid="uid://bcs7ygh6s3l35" path="res://scripts/player.gd" id="4_88ety"]
|
[ext_resource type="Script" uid="uid://bcs7ygh6s3l35" path="res://scripts/player.gd" id="4_88ety"]
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
|
const vs_man_level = preload("res://scenes/multiplayer_test.tscn")
|
||||||
|
|
||||||
var player : Player
|
var player : Player
|
||||||
|
|
||||||
|
|
||||||
|
func start_vs_man() -> void:
|
||||||
|
var setup = get_tree().get_first_node_in_group("scenes")
|
||||||
|
setup.queue_free()
|
||||||
|
var level = vs_man_level.instantiate()
|
||||||
|
var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner
|
||||||
|
spawner.add_child(level)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const SERVER_IP = "127.0.0.1"
|
|||||||
var handle : String
|
var handle : String
|
||||||
var id : int
|
var id : int
|
||||||
var players : Dictionary = {}
|
var players : Dictionary = {}
|
||||||
|
signal client_added(handle : String, id : int)
|
||||||
|
|
||||||
func become_host() -> void:
|
func become_host() -> void:
|
||||||
print("Starting host!")
|
print("Starting host!")
|
||||||
@@ -14,37 +15,43 @@ func become_host() -> void:
|
|||||||
server_peer.create_server(SERVER_PORT)
|
server_peer.create_server(SERVER_PORT)
|
||||||
players[handle] = 1
|
players[handle] = 1
|
||||||
multiplayer.multiplayer_peer = server_peer
|
multiplayer.multiplayer_peer = server_peer
|
||||||
|
id = multiplayer.get_unique_id()
|
||||||
print("%s %d t" % [handle, multiplayer.get_unique_id()])
|
print("%s %d t" % [handle, multiplayer.get_unique_id()])
|
||||||
multiplayer.peer_connected.connect(_add_player_to_game)
|
multiplayer.peer_connected.connect(_add_player_to_game)
|
||||||
multiplayer.peer_disconnected.connect(_remove_player_from_game)
|
multiplayer.peer_disconnected.connect(_remove_player_from_game)
|
||||||
|
|
||||||
|
|
||||||
func join_game(handle : String) -> Error:
|
func join_game(new_handle : String) -> Error:
|
||||||
print("Player 2 joining.")
|
print("Player 2 joining.")
|
||||||
|
|
||||||
var client_peer = ENetMultiplayerPeer.new()
|
var client_peer = ENetMultiplayerPeer.new()
|
||||||
var error = client_peer.create_client(SERVER_IP, SERVER_PORT)
|
var error = client_peer.create_client(SERVER_IP, SERVER_PORT)
|
||||||
multiplayer.multiplayer_peer = client_peer
|
multiplayer.multiplayer_peer = client_peer
|
||||||
|
handle = new_handle
|
||||||
var p = multiplayer.get_unique_id()
|
id = multiplayer.get_unique_id()
|
||||||
var is_host = multiplayer.is_server()
|
|
||||||
if !error:
|
if !error:
|
||||||
print("%s %d" % [handle, multiplayer.get_unique_id()])
|
print("%s %d" % [handle, multiplayer.get_unique_id()])
|
||||||
rpc_id(1, "receive_peer_handle",multiplayer.get_unique_id(), handle )
|
|
||||||
return !error
|
return !error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _add_player_to_game(id : int) -> void:
|
func _add_player_to_game(id : int) -> void:
|
||||||
print("Player %s joined the game!" % id)
|
print("Player %s joined the game!" % id)
|
||||||
players[handle] = id
|
await get_tree().create_timer(0.5).timeout
|
||||||
|
get_handle_from_peer(id)
|
||||||
|
|
||||||
func _remove_player_from_game(id : int) -> void:
|
func _remove_player_from_game(id : int) -> void:
|
||||||
print("Player %s left the game!" % id)
|
print("Player %s left the game!" % id)
|
||||||
|
|
||||||
@rpc("any_peer")
|
|
||||||
func get_handle_from_peer(peer_id) -> void:
|
func get_handle_from_peer(peer_id) -> void:
|
||||||
rpc_id(peer_id, "receive_peer_handle", id, handle)
|
rpc_id(peer_id, "report_handle_to_peer", id)
|
||||||
|
|
||||||
@rpc("any_peer", "call_remote")
|
@rpc("any_peer", "call_remote")
|
||||||
func receive_peer_handle(peer_id, peer_handle) -> void:
|
func receive_peer_handle(peer_id, peer_handle) -> void:
|
||||||
print("Player %s identified as %s!" % [peer_id, peer_handle])
|
print("Player %s identified as %s!" % [peer_id, peer_handle])
|
||||||
players[peer_handle] = peer_id
|
players[peer_handle] = peer_id
|
||||||
|
client_added.emit(peer_handle, peer_id)
|
||||||
|
|
||||||
|
@rpc("any_peer", "call_remote")
|
||||||
|
func report_handle_to_peer(peer_id : int) -> void:
|
||||||
|
rpc_id(peer_id, "receive_peer_handle", multiplayer.get_unique_id(), handle)
|
||||||
|
|||||||
@@ -5,8 +5,12 @@ class_name MultiplayerPC extends Player
|
|||||||
player_id = id
|
player_id = id
|
||||||
|
|
||||||
func _enter_tree() -> void:
|
func _enter_tree() -> void:
|
||||||
Game.player = self
|
#Game.player = self
|
||||||
|
pass
|
||||||
|
|
||||||
|
func setup(id) -> void:
|
||||||
|
player_id = id
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
var dir = Input.get_vector("west", "east", "north", "south")
|
var dir = Input.get_vector("west", "east", "north", "south")
|
||||||
dir = Vector3(dir.x, 0, dir.y)
|
dir = Vector3(dir.x, 0, dir.y)
|
||||||
|
|||||||
13
scripts/multiplayer_level.gd
Normal file
13
scripts/multiplayer_level.gd
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
const multiplayer_pc_template = preload("res://templates/multiplayer_pc.tscn")
|
||||||
|
const camera_template = preload("res://templates/camera.tscn")
|
||||||
|
@onready var spawner = %Spawner
|
||||||
|
func _ready() -> void:
|
||||||
|
print("LEVEL LOADING, ID: " + str(Multiplayer.id))
|
||||||
|
for key in Multiplayer.players.values():
|
||||||
|
var pc = multiplayer_pc_template.instantiate()
|
||||||
|
pc.setup(key)
|
||||||
|
spawner.add_player(pc)
|
||||||
|
var camera = camera_template.instantiate()
|
||||||
|
add_child(camera)
|
||||||
1
scripts/multiplayer_level.gd.uid
Normal file
1
scripts/multiplayer_level.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://ccj72thiebvx8
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
extends Control
|
extends MultiplayerSpawner
|
||||||
|
|
||||||
var host : bool
|
var host : bool
|
||||||
var handle : String
|
var handle : String
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
Multiplayer.client_added.connect(_on_client_added)
|
||||||
|
|
||||||
func _on_host_game_button_pressed() -> void:
|
func _on_host_game_button_pressed() -> void:
|
||||||
%Menu.visible = false
|
%Menu.visible = false
|
||||||
%Hosting.visible = true
|
%Hosting.visible = true
|
||||||
@@ -38,7 +42,7 @@ func _on_hosting_back_button_pressed() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _on_start_game_button_pressed() -> void:
|
func _on_start_game_button_pressed() -> void:
|
||||||
Game.start_vs_com()
|
Game.start_vs_man()
|
||||||
|
|
||||||
|
|
||||||
func _on_waiting_back_button_pressed() -> void:
|
func _on_waiting_back_button_pressed() -> void:
|
||||||
@@ -59,8 +63,12 @@ func _on_join_button_pressed() -> void:
|
|||||||
%Joining.visible = false
|
%Joining.visible = false
|
||||||
if Multiplayer.join_game(handle):
|
if Multiplayer.join_game(handle):
|
||||||
%"Host Waiting".visible = true
|
%"Host Waiting".visible = true
|
||||||
|
%StartButton.visible = false
|
||||||
|
|
||||||
func _on_joining_back_button_pressed() -> void:
|
func _on_joining_back_button_pressed() -> void:
|
||||||
%Joining.visible = false
|
%Joining.visible = false
|
||||||
%Menu.visible = true
|
%Menu.visible = true
|
||||||
|
|
||||||
|
func _on_client_added(peer_handle : String, peer_id : int) -> void:
|
||||||
|
%ParticipantsText.text = "[color=FFFF00][b]*%s[/b][/color]\n[color=FFFFFF]*%s[/color]" % [handle, peer_handle]
|
||||||
|
%StartButton.disabled = false
|
||||||
|
|||||||
18
scripts/multiplayer_spawner.gd
Normal file
18
scripts/multiplayer_spawner.gd
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
extends MultiplayerSpawner
|
||||||
|
|
||||||
|
|
||||||
|
var spawn_points : Array = []
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
spawn_points = $SpawnPoints.get_children()
|
||||||
|
|
||||||
|
func add_player(player : MultiplayerPC) -> void:
|
||||||
|
add_child(player)
|
||||||
|
if player.player_id == 1:
|
||||||
|
player.global_position = spawn_points[0].global_position
|
||||||
|
if Multiplayer.multiplayer.is_server():
|
||||||
|
Game.player = player
|
||||||
|
else:
|
||||||
|
player.global_position = spawn_points[1].global_position
|
||||||
|
if !Multiplayer.multiplayer.is_server():
|
||||||
|
Game.player = player
|
||||||
1
scripts/multiplayer_spawner.gd.uid
Normal file
1
scripts/multiplayer_spawner.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://nn76jlxer5qb
|
||||||
9
templates/camera.tscn
Normal file
9
templates/camera.tscn
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://cqa0p34mbk6so"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cymi1n4gavixy" path="res://scripts/level_camera.gd" id="1_ysaec"]
|
||||||
|
|
||||||
|
[node name="Camera" type="Camera3D"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 0.49999997, 0.86602545, 0, -0.86602545, 0.49999997, 0, 0, 0)
|
||||||
|
projection = 1
|
||||||
|
size = 5.0
|
||||||
|
script = ExtResource("1_ysaec")
|
||||||
Reference in New Issue
Block a user