diff options
60 files changed, 159 insertions, 33 deletions
diff --git a/.import/.gdignore b/.import/.gdignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.import/.gdignore @@ -0,0 +1 @@ + diff --git a/.import/RocketUVOutline.png-30a928d1987c4534a348e7d6ab906bb1.md5 b/.import/RocketUVOutline.png-30a928d1987c4534a348e7d6ab906bb1.md5 new file mode 100644 index 0000000..d0d0b8d --- /dev/null +++ b/.import/RocketUVOutline.png-30a928d1987c4534a348e7d6ab906bb1.md5 @@ -0,0 +1,3 @@ +source_md5="be00435406ad8db66a93e4a7b9767ce3" +dest_md5="cfc1b3ea41f1fd27dbeaee86a38723eb" + diff --git a/.import/RocketUVOutline.png-30a928d1987c4534a348e7d6ab906bb1.stex b/.import/RocketUVOutline.png-30a928d1987c4534a348e7d6ab906bb1.stex Binary files differnew file mode 100644 index 0000000..d5af0f2 --- /dev/null +++ b/.import/RocketUVOutline.png-30a928d1987c4534a348e7d6ab906bb1.stex diff --git a/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.etc2.stex b/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.etc2.stex Binary files differnew file mode 100644 index 0000000..3a2bf9d --- /dev/null +++ b/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.etc2.stex diff --git a/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.md5 b/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.md5 new file mode 100644 index 0000000..420e268 --- /dev/null +++ b/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.md5 @@ -0,0 +1,3 @@ +source_md5="935ada0ede79d0c8d9e3033f069c3f92" +dest_md5="5d77a032048707156d37d99117a0e376" + diff --git a/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.s3tc.stex b/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.s3tc.stex Binary files differnew file mode 100644 index 0000000..f8dd85a --- /dev/null +++ b/.import/WaterA.jpg-8a9f5eee48867fac51e21ebc384b6443.s3tc.stex diff --git a/.import/WaterB.jpg-ad2b8fe64fb2c16f5f5043c2c25b8183.md5 b/.import/WaterB.jpg-ad2b8fe64fb2c16f5f5043c2c25b8183.md5 new file mode 100644 index 0000000..66e6cf5 --- /dev/null +++ b/.import/WaterB.jpg-ad2b8fe64fb2c16f5f5043c2c25b8183.md5 @@ -0,0 +1,3 @@ +source_md5="b4f7254e690f58cc7872ac58f861994d" +dest_md5="53ea1f182fda106de0c10a4d8f9c4c70" + diff --git a/.import/WaterB.jpg-ad2b8fe64fb2c16f5f5043c2c25b8183.stex b/.import/WaterB.jpg-ad2b8fe64fb2c16f5f5043c2c25b8183.stex Binary files differnew file mode 100644 index 0000000..5d0d0d1 --- /dev/null +++ b/.import/WaterB.jpg-ad2b8fe64fb2c16f5f5043c2c25b8183.stex diff --git a/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.etc2.stex b/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.etc2.stex Binary files differnew file mode 100644 index 0000000..e54f790 --- /dev/null +++ b/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.etc2.stex diff --git a/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.md5 b/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.md5 new file mode 100644 index 0000000..975dbf3 --- /dev/null +++ b/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.md5 @@ -0,0 +1,3 @@ +source_md5="bba43235741cefe8b0f5beb6001072cd" +dest_md5="2bd805a5f0e0283ccd0694cbfe2d569e" + diff --git a/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.s3tc.stex b/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.s3tc.stex Binary files differnew file mode 100644 index 0000000..7a193d7 --- /dev/null +++ b/.import/WaterC.jpg-d042637943918b86bb9b89e4bb1561ec.s3tc.stex diff --git a/.import/capture.wav-ad0fe61b79d5dd800386c958a3ced32e.md5 b/.import/capture.wav-ad0fe61b79d5dd800386c958a3ced32e.md5 new file mode 100644 index 0000000..85682d3 --- /dev/null +++ b/.import/capture.wav-ad0fe61b79d5dd800386c958a3ced32e.md5 @@ -0,0 +1,3 @@ +source_md5="bd6584ea03e7275f60b450ad3c469856" +dest_md5="8be5fb43e3aba48f3b512b8af1b20bdc" + diff --git a/.import/capture.wav-ad0fe61b79d5dd800386c958a3ced32e.sample b/.import/capture.wav-ad0fe61b79d5dd800386c958a3ced32e.sample Binary files differnew file mode 100644 index 0000000..1a76cdd --- /dev/null +++ b/.import/capture.wav-ad0fe61b79d5dd800386c958a3ced32e.sample diff --git a/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.etc2.stex b/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.etc2.stex Binary files differnew file mode 100644 index 0000000..bc211dd --- /dev/null +++ b/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.etc2.stex diff --git a/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.md5 b/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.md5 new file mode 100644 index 0000000..7677a4d --- /dev/null +++ b/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.md5 @@ -0,0 +1,3 @@ +source_md5="78d75933191e914dd19c06203eca7316" +dest_md5="448d7a780a82d0617b71d2c4d1d0b712" + diff --git a/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.s3tc.stex b/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.s3tc.stex Binary files differnew file mode 100644 index 0000000..777bbfa --- /dev/null +++ b/.import/conc_slabs01_c.png-03b16280351110ffef58557c4442b617.s3tc.stex diff --git a/.import/debris1.png-4fe21a9e56c99b356618f23820ec2ca9.md5 b/.import/debris1.png-4fe21a9e56c99b356618f23820ec2ca9.md5 new file mode 100644 index 0000000..7ee215c --- /dev/null +++ b/.import/debris1.png-4fe21a9e56c99b356618f23820ec2ca9.md5 @@ -0,0 +1,3 @@ +source_md5="5017bf1eb4e7e0416121379a3b7d8bf7" +dest_md5="a338c552f21718d72d44bb209b3d03df" + diff --git a/.import/debris1.png-4fe21a9e56c99b356618f23820ec2ca9.stex b/.import/debris1.png-4fe21a9e56c99b356618f23820ec2ca9.stex Binary files differnew file mode 100644 index 0000000..ab06fad --- /dev/null +++ b/.import/debris1.png-4fe21a9e56c99b356618f23820ec2ca9.stex diff --git a/.import/debris2.png-43d498b9e855dc2677264edc3b6b0d71.md5 b/.import/debris2.png-43d498b9e855dc2677264edc3b6b0d71.md5 new file mode 100644 index 0000000..4a8a9a3 --- /dev/null +++ b/.import/debris2.png-43d498b9e855dc2677264edc3b6b0d71.md5 @@ -0,0 +1,3 @@ +source_md5="0093e8439df087b0a36b544bda5b8da1" +dest_md5="d775dc4250c625c1f052787f69082b9a" + diff --git a/.import/debris2.png-43d498b9e855dc2677264edc3b6b0d71.stex b/.import/debris2.png-43d498b9e855dc2677264edc3b6b0d71.stex Binary files differnew file mode 100644 index 0000000..d69693c --- /dev/null +++ b/.import/debris2.png-43d498b9e855dc2677264edc3b6b0d71.stex diff --git a/.import/dirt.jpg-5cc971cf0ef2afd3e8992456d2a6a75f.md5 b/.import/dirt.jpg-5cc971cf0ef2afd3e8992456d2a6a75f.md5 new file mode 100644 index 0000000..ccd56a8 --- /dev/null +++ b/.import/dirt.jpg-5cc971cf0ef2afd3e8992456d2a6a75f.md5 @@ -0,0 +1,3 @@ +source_md5="9c44de3aac48f837cf15e445397fb3ca" +dest_md5="f11b0b62db5e29b1450d005ce407b3ac" + diff --git a/.import/dirt.jpg-5cc971cf0ef2afd3e8992456d2a6a75f.stex b/.import/dirt.jpg-5cc971cf0ef2afd3e8992456d2a6a75f.stex Binary files differnew file mode 100644 index 0000000..627af0a --- /dev/null +++ b/.import/dirt.jpg-5cc971cf0ef2afd3e8992456d2a6a75f.stex diff --git a/.import/dockscene.glb-cfdfdcc23f8e38fe238fc99a3ec3827a.md5 b/.import/dockscene.glb-cfdfdcc23f8e38fe238fc99a3ec3827a.md5 new file mode 100644 index 0000000..75daef3 --- /dev/null +++ b/.import/dockscene.glb-cfdfdcc23f8e38fe238fc99a3ec3827a.md5 @@ -0,0 +1,3 @@ +source_md5="4a27ab26f11039b2097b0c2223db0676" +dest_md5="dc886c978a64316424f2dec5c0f28ad3" + diff --git a/.import/dockscene.glb-cfdfdcc23f8e38fe238fc99a3ec3827a.scn b/.import/dockscene.glb-cfdfdcc23f8e38fe238fc99a3ec3827a.scn Binary files differnew file mode 100644 index 0000000..b17b131 --- /dev/null +++ b/.import/dockscene.glb-cfdfdcc23f8e38fe238fc99a3ec3827a.scn diff --git a/.import/explode.wav-1d7c8e9c32dec8f279cd96d5d37cecb1.md5 b/.import/explode.wav-1d7c8e9c32dec8f279cd96d5d37cecb1.md5 new file mode 100644 index 0000000..a2e563f --- /dev/null +++ b/.import/explode.wav-1d7c8e9c32dec8f279cd96d5d37cecb1.md5 @@ -0,0 +1,3 @@ +source_md5="1418be33cfb4ecc41a27c69ed5413e64" +dest_md5="d2c752ce1a2d86936067559652ee8186" + diff --git a/.import/explode.wav-1d7c8e9c32dec8f279cd96d5d37cecb1.sample b/.import/explode.wav-1d7c8e9c32dec8f279cd96d5d37cecb1.sample Binary files differnew file mode 100644 index 0000000..8f610f8 --- /dev/null +++ b/.import/explode.wav-1d7c8e9c32dec8f279cd96d5d37cecb1.sample diff --git a/.import/flame.png-94b16ce463dcda40fe5021eb2e643a67.md5 b/.import/flame.png-94b16ce463dcda40fe5021eb2e643a67.md5 new file mode 100644 index 0000000..ec80ec2 --- /dev/null +++ b/.import/flame.png-94b16ce463dcda40fe5021eb2e643a67.md5 @@ -0,0 +1,3 @@ +source_md5="15e6bc6e75ccf467d5da44cf13004efa" +dest_md5="5e77a62d5255c16f29b98257c1422da4" + diff --git a/.import/flame.png-94b16ce463dcda40fe5021eb2e643a67.stex b/.import/flame.png-94b16ce463dcda40fe5021eb2e643a67.stex Binary files differnew file mode 100644 index 0000000..fa4ffe5 --- /dev/null +++ b/.import/flame.png-94b16ce463dcda40fe5021eb2e643a67.stex diff --git a/.import/housescene.glb-370812a9c603788d0b860f75c94317a6.md5 b/.import/housescene.glb-370812a9c603788d0b860f75c94317a6.md5 new file mode 100644 index 0000000..5329e95 --- /dev/null +++ b/.import/housescene.glb-370812a9c603788d0b860f75c94317a6.md5 @@ -0,0 +1,3 @@ +source_md5="0014011d61b27d5e89f6cd62571accf6" +dest_md5="500f8e2fa46704d3640a044aa1a52dc0" + diff --git a/.import/housescene.glb-370812a9c603788d0b860f75c94317a6.scn b/.import/housescene.glb-370812a9c603788d0b860f75c94317a6.scn Binary files differnew file mode 100644 index 0000000..9b75489 --- /dev/null +++ b/.import/housescene.glb-370812a9c603788d0b860f75c94317a6.scn diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 new file mode 100644 index 0000000..c51fff8 --- /dev/null +++ b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 @@ -0,0 +1,3 @@ +source_md5="ee93d01ec2fd84a04af4edaa8e8fab91" +dest_md5="eaa1cc4cacb2ea7ef01fde80a04c0e83" + diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex Binary files differnew file mode 100644 index 0000000..c9c903b --- /dev/null +++ b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex diff --git a/.import/islandscene.glb-c7a4bae1e63bc2b24856f9e94484bba1.md5 b/.import/islandscene.glb-c7a4bae1e63bc2b24856f9e94484bba1.md5 new file mode 100644 index 0000000..8ee6c17 --- /dev/null +++ b/.import/islandscene.glb-c7a4bae1e63bc2b24856f9e94484bba1.md5 @@ -0,0 +1,3 @@ +source_md5="bd6aa2ae01de20ed64b6bfb4c4314b3b" +dest_md5="b7f658bc0a42cf383d5e3ad59eef8387" + diff --git a/.import/islandscene.glb-c7a4bae1e63bc2b24856f9e94484bba1.scn b/.import/islandscene.glb-c7a4bae1e63bc2b24856f9e94484bba1.scn Binary files differnew file mode 100644 index 0000000..a68e04e --- /dev/null +++ b/.import/islandscene.glb-c7a4bae1e63bc2b24856f9e94484bba1.scn diff --git a/.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.md5 b/.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.md5 new file mode 100644 index 0000000..8121d97 --- /dev/null +++ b/.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.md5 @@ -0,0 +1,3 @@ +source_md5="ecdafb3104ec178e8d09844addd9b891" +dest_md5="69b9074ed954753b785294e1de1adf8a" + diff --git a/.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.mesh b/.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.mesh Binary files differnew file mode 100644 index 0000000..3c53cc6 --- /dev/null +++ b/.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.mesh diff --git a/.import/laetine_mask.obj-1053f82ebca550b3c863dd727c5a57c1.md5 b/.import/laetine_mask.obj-1053f82ebca550b3c863dd727c5a57c1.md5 new file mode 100644 index 0000000..4f8564e --- /dev/null +++ b/.import/laetine_mask.obj-1053f82ebca550b3c863dd727c5a57c1.md5 @@ -0,0 +1,3 @@ +source_md5="0992307b78088563db23ab353919900f" +dest_md5="514b4efe5ab2e925fcdadc7caba57f41" + diff --git a/.import/laetine_mask.obj-1053f82ebca550b3c863dd727c5a57c1.mesh b/.import/laetine_mask.obj-1053f82ebca550b3c863dd727c5a57c1.mesh Binary files differnew file mode 100644 index 0000000..c2634c7 --- /dev/null +++ b/.import/laetine_mask.obj-1053f82ebca550b3c863dd727c5a57c1.mesh diff --git a/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.etc2.stex b/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.etc2.stex Binary files differnew file mode 100644 index 0000000..4d1c275 --- /dev/null +++ b/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.etc2.stex diff --git a/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.md5 b/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.md5 new file mode 100644 index 0000000..6d41725 --- /dev/null +++ b/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.md5 @@ -0,0 +1,3 @@ +source_md5="818adfeb1c108335fd4925371bfd77b5" +dest_md5="8c06ea9a86d993df73698e78fd50bcc9" + diff --git a/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.s3tc.stex b/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.s3tc.stex Binary files differnew file mode 100644 index 0000000..7ed5451 --- /dev/null +++ b/.import/planks.jpg-70c48f89a7e1a9a4ea44b69cc9fc7c6f.s3tc.stex diff --git a/.import/rocket.glb-c98c6cf65b7c3b7b3f9311f8a77cc707.md5 b/.import/rocket.glb-c98c6cf65b7c3b7b3f9311f8a77cc707.md5 new file mode 100644 index 0000000..0d6f8f7 --- /dev/null +++ b/.import/rocket.glb-c98c6cf65b7c3b7b3f9311f8a77cc707.md5 @@ -0,0 +1,3 @@ +source_md5="ef6285648fe6d2621d1080ee7f9d6ac1" +dest_md5="066121e4ae885632cec12f67a260bdd8" + diff --git a/.import/rocket.glb-c98c6cf65b7c3b7b3f9311f8a77cc707.scn b/.import/rocket.glb-c98c6cf65b7c3b7b3f9311f8a77cc707.scn Binary files differnew file mode 100644 index 0000000..7810dca --- /dev/null +++ b/.import/rocket.glb-c98c6cf65b7c3b7b3f9311f8a77cc707.scn diff --git a/.import/rockettexture.png-57b83943361359546526cd89a61c089b.md5 b/.import/rockettexture.png-57b83943361359546526cd89a61c089b.md5 new file mode 100644 index 0000000..3e84543 --- /dev/null +++ b/.import/rockettexture.png-57b83943361359546526cd89a61c089b.md5 @@ -0,0 +1,3 @@ +source_md5="863ce86201cca1bfed40897db9264e8a" +dest_md5="8412f673351c805b56ecf3c92a29e8be" + diff --git a/.import/rockettexture.png-57b83943361359546526cd89a61c089b.stex b/.import/rockettexture.png-57b83943361359546526cd89a61c089b.stex Binary files differnew file mode 100644 index 0000000..9f7acad --- /dev/null +++ b/.import/rockettexture.png-57b83943361359546526cd89a61c089b.stex diff --git a/.import/shockwave.png-011356472f7286f4f283e130fc6d60d0.md5 b/.import/shockwave.png-011356472f7286f4f283e130fc6d60d0.md5 new file mode 100644 index 0000000..f077619 --- /dev/null +++ b/.import/shockwave.png-011356472f7286f4f283e130fc6d60d0.md5 @@ -0,0 +1,3 @@ +source_md5="483a12a3182fde63f28b8d2a395b6d9f" +dest_md5="a7c9f0f8476f4ffa55846c26fffc75a6" + diff --git a/.import/shockwave.png-011356472f7286f4f283e130fc6d60d0.stex b/.import/shockwave.png-011356472f7286f4f283e130fc6d60d0.stex Binary files differnew file mode 100644 index 0000000..a8179a4 --- /dev/null +++ b/.import/shockwave.png-011356472f7286f4f283e130fc6d60d0.stex diff --git a/.import/smoke.png-ca92037af54291e7c4ac41b03252fb32.md5 b/.import/smoke.png-ca92037af54291e7c4ac41b03252fb32.md5 new file mode 100644 index 0000000..35cb4f1 --- /dev/null +++ b/.import/smoke.png-ca92037af54291e7c4ac41b03252fb32.md5 @@ -0,0 +1,3 @@ +source_md5="f8663c0e4217552c944cc016b0d6dc0f" +dest_md5="98f4d18658a67ae4f638c59120bc472d" + diff --git a/.import/smoke.png-ca92037af54291e7c4ac41b03252fb32.stex b/.import/smoke.png-ca92037af54291e7c4ac41b03252fb32.stex Binary files differBinary files differnew file mode 100644 index 0000000..9d7d3ad --- /dev/null +++ b/.import/smoke.png-ca92037af54291e7c4ac41b03252fb32.stex diff --git a/scenes/ClientUI.tscn b/scenes/ClientUI.tscn index 0cd6b42..50b0a77 100644 --- a/scenes/ClientUI.tscn +++ b/scenes/ClientUI.tscn @@ -42,3 +42,4 @@ margin_bottom = 271.0 text = "Host Local Game" [connection signal="pressed" from="ConnectButton" to="." method="_connect_btn"] +[connection signal="pressed" from="LocalButton" to="." method="_run_local_server"] diff --git a/scenes/ballistics/Rocket.gd b/scenes/ballistics/Rocket.gd index 56438a2..d21b9f6 100644 --- a/scenes/ballistics/Rocket.gd +++ b/scenes/ballistics/Rocket.gd @@ -1,9 +1,7 @@ -extends RigidBody +extends "res://scripts/ballistics/NetworkedProjectile.gd" onready var world = get_tree().get_root().find_node("GAMEWORLD", true, false) -var shooter = "WORLD" - export var lifetime : float = 2.0 export var strength : int = 80 @@ -16,11 +14,7 @@ func _ready(): func get_init_info(): return {"linear_velocity" : linear_velocity, "angular_velocity" : angular_velocity, "life" : life, "shooter" : shooter} -func mp_init(init_info): - for variable in init_info.keys(): - set(variable, init_info[variable]) - -remotesync func update_phys_transform(t, lv, av): +remote func update_phys_transform(t, lv, av): transform = t linear_velocity = lv angular_velocity = av @@ -33,10 +27,6 @@ func _physics_process(delta): explode() $RocketTrail.emitting = false -func _integrate_forces(state): - if is_network_master(): - rpc("update_phys_transform", transform, linear_velocity, angular_velocity) - func explode(): if cannot_explode: return @@ -53,10 +43,11 @@ func explode(): for body in $BlastArea.get_overlapping_bodies(): - if body.has_method("damage") and is_network_master(): + if body.has_method("damage") and body.is_network_master(): body.rpc("damage", 50, "explosive", shooter, "using 'rocket'") - body.apply_central_impulse((1500*(global_transform.origin - body.global_transform.origin).normalized())) - body.rpc("apply_central_impulse", (1500*(global_transform.origin - body.global_transform.origin).normalized())) + print((5000*(global_transform.origin - body.global_transform.origin).normalized())) + body.apply_central_impulse((5000*(global_transform.origin - body.global_transform.origin).normalized())) + body.rpc("apply_central_impulse", (5000*(global_transform.origin - body.global_transform.origin).normalized())) $AnimationPlayer.play("explode") diff --git a/scripts/ClientUI.gd b/scripts/ClientUI.gd index 6a3eb41..32e7269 100644 --- a/scripts/ClientUI.gd +++ b/scripts/ClientUI.gd @@ -2,26 +2,53 @@ extends Node2D var client : NetworkedMultiplayerENet var world +var local_server_tree = null +var is_local = false func _ready(): world = preload("res://scenes/GameBase.tscn").instance() - get_tree().connect("network_peer_connected", self, "_player_connected") - get_tree().connect("network_peer_disconnected", self, "_player_disconnected") + #get_tree().connect("network_peer_connected", self, "_player_connected") + #get_tree().connect("network_peer_disconnected", self, "_player_disconnected") get_tree().connect("connected_to_server", self, "_connection_successful") get_tree().connect("connection_failed", self, "_connected_fail") - get_tree().connect("server_disconnected", world, "_server_disconnected") + get_tree().connect("server_disconnected", world, "client_disconnect") + set_process(false) + set_physics_process(false) func _connect_btn(): client = NetworkedMultiplayerENet.new() client.create_client($IP.text, $Port.value) get_tree().set_network_peer(client) - func _connection_successful(): get_tree().get_root().add_child(world) world.client = client world.client_id = get_tree().get_network_unique_id() world.player_name = $Name.text + if is_local: + world.is_local = true + world.local_server_tree = local_server_tree print("Connected.") queue_free() + +func _run_local_server(): + local_server_tree = SceneTree.new() + local_server_tree.init() + local_server_tree.get_root().set_update_mode(Viewport.UPDATE_DISABLED) + var server_script = preload("res://scenes/Server.tscn").instance() + + #CHANGE LEVEL HERE + server_script.start_server("Local Server", "Local Singleplayer Server", 3, "res://maps/Main.tscn", "127.0.0.1", 25565, local_server_tree, null, "print") + set_process(true) + set_physics_process(true) + is_local = true + client = NetworkedMultiplayerENet.new() + client.create_client("127.0.0.1", 25565) + get_tree().set_network_peer(client) + +func _process(delta): + local_server_tree.idle(delta) + +func _physics_process(delta): + local_server_tree.iteration(delta) diff --git a/scripts/GameBase.gd b/scripts/GameBase.gd index ee26531..019aa14 100644 --- a/scripts/GameBase.gd +++ b/scripts/GameBase.gd @@ -2,6 +2,9 @@ extends Spatial var client var client_id +var is_local = false +var local_server_tree = null + var player_name : String var player_team : String var player_char = null @@ -12,6 +15,14 @@ var is_chatting = false var winddir = Vector3(1,0,0) +func _process(delta): + if is_local: + local_server_tree.idle(delta) + +func _physics_process(delta): + if is_local: + local_server_tree.iteration(delta) + remote func set_up_server_info(info): $HUD/ServerJoinMenu/MOTD.text = info["MOTD"] $HUD/ServerJoinMenu/ServerName.text = info["server_name"] diff --git a/scripts/Server.gd b/scripts/Server.gd index bd24911..531f30e 100644 --- a/scripts/Server.gd +++ b/scripts/Server.gd @@ -12,13 +12,16 @@ var output var output_func : String func print_line(line): + if output == null: + print("SERVER: " + line) + return output.call(output_func, line) func _ready(): get_tree().connect("network_peer_connected", self, "_client_connect") get_tree().connect("network_peer_disconnected", self, "_client_disconnect") -func start_server(_server_name: String, _motd: String, max_players: int, map_path: String, ip: String, port: int, root, output_obj, output_f): +func start_server(_server_name: String, _motd: String, max_players: int, map_path: String, ip: String, port: int, tree, output_obj, output_f): output = output_obj output_func = output_f server_name = _server_name @@ -33,12 +36,13 @@ func start_server(_server_name: String, _motd: String, max_players: int, map_pat return world.add_child(self) - root.add_child(world) + tree.get_root().add_child(world) + world.client_id = 1 server_enet = NetworkedMultiplayerENet.new() server_enet.create_server(port, max_players) - get_tree().set_network_peer(server_enet) + tree.set_network_peer(server_enet) print_line("Server started successfully.") @@ -96,7 +100,6 @@ func _client_request_change_character(arguments): old.rpc("set_owner", 1) func _character_death(arguments): - print(arguments) var victim_player = connected_players[arguments["victim_mp_id"]][0] if arguments["victim_mp_id"] != 1 else "" print_line(arguments["victim"] + " ("+victim_player+") killed by " + arguments["killer"] + " " + arguments["extra"] + ".") world.rpc("game_chat_msg", arguments["victim"] + " ("+victim_player+") killed by " + arguments["killer"] + " " + arguments["extra"] + ".") diff --git a/scripts/ServerUI.gd b/scripts/ServerUI.gd index 1acf9eb..8daf086 100644 --- a/scripts/ServerUI.gd +++ b/scripts/ServerUI.gd @@ -25,7 +25,7 @@ func start_server(): server = preload("res://scenes/Server.tscn").instance() $CmdPrompt.server_ref = server - server.start_server($ServerName.text, $MOTD.text, $PlayerCount.value, $MapPath.text, $IP.text, $Port.value, get_tree().get_root(), console, "add_line") + server.start_server($ServerName.text, $MOTD.text, $PlayerCount.value, $MapPath.text, $IP.text, $Port.value, get_tree(), console, "add_line") Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) hide_init_fields() diff --git a/scripts/World.gd b/scripts/World.gd index dd5b177..aaad39e 100644 --- a/scripts/World.gd +++ b/scripts/World.gd @@ -49,3 +49,4 @@ func draw_path(path_array): for x in path_array: im.add_vertex(x) im.end() + diff --git a/scripts/ballistics/Cannonball.gd b/scripts/ballistics/Cannonball.gd index e59ca6c..15f35a3 100644 --- a/scripts/ballistics/Cannonball.gd +++ b/scripts/ballistics/Cannonball.gd @@ -1,11 +1,9 @@ -extends RigidBody +extends "res://scripts/ballistics/NetworkedProjectile.gd" export var drag_constant = 0.3 var damage_exceptions = [] var oldvel -var shooter = "WORLD" - func _physics_process(_delta): oldvel = linear_velocity add_force(-1*linear_velocity*drag_constant, Vector3.ZERO) @@ -13,12 +11,7 @@ func _physics_process(_delta): func get_init_info(): return {"linear_velocity" : linear_velocity, "angular_velocity" : angular_velocity, "oldvel" : oldvel, "shooter" : shooter} -func mp_init(init_info): - for variable in init_info.keys(): - set(variable, init_info[variable]) - - func _on_collision(body): if linear_velocity.length() > 20 and !damage_exceptions.has(body) and body.has_method("damage"): - body.damage(oldvel.length(), "blunt") + body.rpc("damage", oldvel.length(), "blunt", shooter, "using 'cannon'") damage_exceptions.append(body) diff --git a/scripts/ballistics/NetworkedProjectile.gd b/scripts/ballistics/NetworkedProjectile.gd new file mode 100644 index 0000000..0626e9f --- /dev/null +++ b/scripts/ballistics/NetworkedProjectile.gd @@ -0,0 +1,22 @@ +extends RigidBody + + +var shooter = "WORLD" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func mp_init(init_info): + for variable in init_info.keys(): + set(variable, init_info[variable]) + +remote func update_phys_transform(t, lv, av): + transform = t + linear_velocity = lv + angular_velocity = av + +func _integrate_forces(state): + if is_network_master(): + rpc("update_phys_transform", transform, linear_velocity, angular_velocity) diff --git a/scripts/machines/Cannon.gd b/scripts/machines/Cannon.gd index d7c9a18..fcd842b 100644 --- a/scripts/machines/Cannon.gd +++ b/scripts/machines/Cannon.gd @@ -21,6 +21,11 @@ export var max_yaw = 15 onready var muzzle = get_node("YawJoint/PitchJoint/Muzzle") +remote func update_phys_transform(t, lv, av): + transform = t + linear_velocity = lv + angular_velocity = av + func get_init_info(): return {"pitch_rot" : $YawJoint/PitchJoint.rotation_degrees.z, "turn_rot" : $YawJoint.rotation_degrees.y, "in_use" : in_use} @@ -65,6 +70,8 @@ func _physics_process(delta): $YawJoint/PitchJoint.rotation_degrees.z = max_pitch elif $YawJoint/PitchJoint.rotation_degrees.z < min_pitch: $YawJoint/PitchJoint.rotation_degrees.z = min_pitch + if is_network_master() and mode == MODE_STATIC: + rpc("update_phys_transform", transform, linear_velocity, angular_velocity) func direction_input(fwd,bwd,left,right,_left,_right): pitch = fwd - bwd @@ -73,6 +80,9 @@ func direction_input(fwd,bwd,left,right,_left,_right): func attack1(): if cooldown > 0: return + rpc("fire") + +remotesync func fire(): $YawJoint/PitchJoint/Muzzle/explosion_sound.play() var expl = preload("res://particles/p_Explosion.tscn").instance() var cball = preload("res://scenes/ballistics/Cannonball.tscn").instance() |
