Added multiplayer menu, death screen, respawn timer, and more

This commit is contained in:
Paul Black 2023-01-31 13:34:11 -07:00
parent 72648ac136
commit 261de67db8
15 changed files with 328 additions and 21 deletions

View file

@ -45,7 +45,20 @@ func _physics_process(delta):
# Add the gravity.
if not is_on_floor():
velocity.y -= gravity * delta
# This variable gets set my the death scene, so we know the player needs to be respawned
if Global.playerPleaseRespawn == true:
position.x = 0 #Set player X
position.y = 1 #Set player Y
position.z = 0 #Set player Z
Global.playerPleaseRespawn = false # So we don't get stuck in a loop
Global.playerDead = false #Reset playerDead
Global.playerAlive = true #Reset playerAlive
## If player falls off the map, kill them!
if velocity.y < Global.playerYDeath:
Global.player_dead()
# Handle Jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
@ -55,7 +68,12 @@ func _physics_process(delta):
var input_dir = Input.get_vector("player_left", "player_right", "player_forward", "player_backward")
var direction = (neck.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if Input.is_action_pressed("sprint"):
SPEED = 10.0
if Global.fatigue > 5:
SPEED = 10.0
if Global.fatigue < 5:
SPEED = 2.0
elif Global.fatigue > 5:
SPEED = 5.0
if Input.is_action_just_released("sprint"):
SPEED = 5.0
if direction:

View file

@ -3,7 +3,7 @@
[ext_resource type="Script" path="res://Objects/Bullet/Bullet.gd" id="1"]
[ext_resource type="PackedScene" uid="uid://pni78bumc5f5" path="res://objects/Bullet/model/Bullet.dae" id="2"]
[sub_resource type="BoxShape3D" id="BoxShape3D_chxfq"]
[sub_resource type="BoxShape3D" id="BoxShape3D_tfwph"]
size = Vector3(0.40456, 0.406836, 0.393048)
[node name="Bullet" type="Area3D" groups=["bullet"]]
@ -12,7 +12,7 @@ script = ExtResource("1")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." groups=["bullet"]]
transform = Transform3D(0.957696, 0, 0, 0, 1, 0, 0, 0, 1.66763, 0, 0, -0.295843)
shape = SubResource("BoxShape3D_chxfq")
shape = SubResource("BoxShape3D_tfwph")
[node name="Bullet" parent="." instance=ExtResource("2")]
transform = Transform3D(0.200224, 0, 0, 0, -8.75207e-09, 0.200224, 0, -0.200224, -8.75207e-09, 0, 0, 0)

View file

@ -4,12 +4,12 @@ importer="scene"
importer_version=1
type="PackedScene"
uid="uid://pni78bumc5f5"
path="res://.godot/imported/Bullet.dae-5bbc570d18bdc3c3b39c8ef588b2ee68.scn"
path="res://.godot/imported/Bullet.dae-6d158ce5286c9575dbf7d21142c4524e.scn"
[deps]
source_file="res://objects/Bullet/model/Bullet.dae"
dest_files=["res://.godot/imported/Bullet.dae-5bbc570d18bdc3c3b39c8ef588b2ee68.scn"]
source_file="res://Objects/Bullet/model/Bullet.dae"
dest_files=["res://.godot/imported/Bullet.dae-6d158ce5286c9575dbf7d21142c4524e.scn"]
[params]

30
scenes/HUD.tscn Normal file
View file

@ -0,0 +1,30 @@
[gd_scene load_steps=2 format=3 uid="uid://ytbacsuahxie"]
[ext_resource type="Script" path="res://scripts/HUD.gd" id="1_mqiiw"]
[node name="HUD" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_mqiiw")
[node name="Health" type="ProgressBar" parent="."]
modulate = Color(0.890196, 0.137255, 0.0156863, 1)
layout_mode = 0
offset_left = 20.0
offset_top = 562.0
offset_right = 165.0
offset_bottom = 589.0
value = 100.0
[node name="Fatigue" type="ProgressBar" parent="."]
modulate = Color(1, 1, 0, 1)
layout_mode = 0
offset_left = 20.0
offset_top = 602.0
offset_right = 165.0
offset_bottom = 629.0
value = 100.0

30
scenes/death.tscn Normal file
View file

@ -0,0 +1,30 @@
[gd_scene load_steps=2 format=3 uid="uid://dt3mxjsi3yxrq"]
[ext_resource type="Script" path="res://scripts/death.gd" id="1_we0rj"]
[node name="death" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_we0rj")
[node name="deathBar" type="ProgressBar" parent="."]
modulate = Color(0.894118, 0, 0.00392157, 1)
layout_mode = 0
offset_left = 319.0
offset_top = 295.0
offset_right = 817.0
offset_bottom = 367.0
[node name="badnewsman" type="Label" parent="."]
layout_mode = 0
offset_left = 303.0
offset_top = 208.0
offset_right = 837.0
offset_bottom = 286.0
text = "Uhhhh I'm sorry to embarrass you but you're dead... I'm sorry to be the bearer of bad news. Maybe you'll do better in your next life huh? You'll be revived once this bar gets to 100%"
horizontal_alignment = 1
autowrap_mode = 2

27
scenes/hostmenu.tscn Normal file
View file

@ -0,0 +1,27 @@
[gd_scene load_steps=2 format=3 uid="uid://cv5bctupikqe7"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8vwth"]
bg_color = Color(0.2, 0.2, 0.2, 1)
[node name="hostmenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -272.0
offset_top = -156.0
offset_right = 268.0
offset_bottom = 134.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_8vwth")

View file

@ -13,28 +13,36 @@ script = ExtResource("1_w5lhm")
[node name="Button" type="Button" parent="."]
layout_mode = 0
offset_left = 494.0
offset_top = 196.0
offset_right = 685.0
offset_bottom = 259.0
offset_left = 498.0
offset_top = 179.0
offset_right = 689.0
offset_bottom = 242.0
text = "PLAY"
[node name="Button4" type="Button" parent="."]
offset_left = 498.0
offset_top = 248.0
offset_right = 689.0
offset_bottom = 311.0
text = "MULTIPLAYER"
[node name="Button2" type="Button" parent="."]
layout_mode = 0
offset_left = 496.0
offset_top = 279.0
offset_right = 687.0
offset_bottom = 342.0
offset_left = 498.0
offset_top = 316.0
offset_right = 689.0
offset_bottom = 379.0
text = "SETTINGS"
[node name="Button3" type="Button" parent="."]
layout_mode = 0
offset_left = 495.0
offset_top = 358.0
offset_right = 686.0
offset_bottom = 421.0
offset_left = 498.0
offset_top = 384.0
offset_right = 689.0
offset_bottom = 447.0
text = "EXIT"
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
[connection signal="pressed" from="Button4" to="." method="_on_button_4_pressed"]
[connection signal="pressed" from="Button2" to="." method="_on_button_2_pressed"]
[connection signal="pressed" from="Button3" to="." method="_on_button_3_pressed"]

99
scenes/multiplayer.tscn Normal file
View file

@ -0,0 +1,99 @@
[gd_scene load_steps=2 format=3 uid="uid://bu0htwo7n3pwa"]
[ext_resource type="Script" path="res://scripts/multiplayer.gd" id="1_ehfu1"]
[node name="multiplayer" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_ehfu1")
[node name="playerNameBox" type="LineEdit" parent="."]
layout_mode = 0
offset_left = 483.0
offset_top = 579.0
offset_right = 650.0
offset_bottom = 622.0
[node name="playerLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 360.0
offset_top = 588.0
offset_right = 468.0
offset_bottom = 614.0
text = "Player Name: "
[node name="backButton" type="Button" parent="."]
layout_mode = 0
offset_left = 5.0
offset_top = 5.0
offset_right = 93.0
offset_bottom = 48.0
text = "BACK"
[node name="ipBox" type="LineEdit" parent="."]
layout_mode = 0
offset_left = 341.0
offset_top = 249.0
offset_right = 498.0
offset_bottom = 287.0
[node name="joinGameLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 376.0
offset_top = 180.0
offset_right = 455.0
offset_bottom = 206.0
text = "Join Game"
[node name="ipLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 244.0
offset_top = 253.0
offset_right = 334.0
offset_bottom = 279.0
text = "IP Address: "
[node name="portBox" type="LineEdit" parent="."]
layout_mode = 0
offset_left = 342.0
offset_top = 294.0
offset_right = 414.0
offset_bottom = 330.0
[node name="portLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 291.0
offset_top = 299.0
offset_right = 333.0
offset_bottom = 325.0
text = "Port: "
[node name="hostLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 712.0
offset_top = 181.0
offset_right = 798.0
offset_bottom = 207.0
text = "Host Game"
[node name="hostButton" type="Button" parent="."]
layout_mode = 0
offset_left = 694.0
offset_top = 245.0
offset_right = 822.0
offset_bottom = 282.0
text = "HOST"
[node name="joinButton" type="Button" parent="."]
layout_mode = 0
offset_left = 426.0
offset_top = 295.0
offset_right = 497.0
offset_bottom = 330.0
text = "JOIN"
[connection signal="pressed" from="backButton" to="." method="_on_button_pressed"]

View file

@ -1,6 +1,8 @@
[gd_scene load_steps=7 format=3 uid="uid://bpq4yjx2gs3l6"]
[gd_scene load_steps=9 format=3 uid="uid://bpq4yjx2gs3l6"]
[ext_resource type="Script" path="res://scripts/maps/playground.gd" id="1_gtai1"]
[ext_resource type="PackedScene" uid="uid://dp1q51kvd8uow" path="res://scenes/Teddy.tscn" id="1_p7gbl"]
[ext_resource type="PackedScene" uid="uid://ytbacsuahxie" path="res://scenes/HUD.tscn" id="2_ggrqc"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ell6n"]
sky_top_color = Color(0.870588, 0.894118, 0.92549, 1)
@ -22,6 +24,11 @@ glow_enabled = true
data = PackedVector3Array(1, 0, 1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0, -1, 1, 0, -1)
[node name="Playground" type="Node3D"]
script = ExtResource("1_gtai1")
[node name="HUD" parent="." instance=ExtResource("2_ggrqc")]
show_behind_parent = true
mouse_filter = 2
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_fnphj")
@ -40,4 +47,4 @@ mesh = SubResource("PlaneMesh_gx0jf")
shape = SubResource("ConcavePolygonShape3D_qgsp1")
[node name="Teddy" parent="." instance=ExtResource("1_p7gbl")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.097358, 1.01166, 0.029713)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08165e-12, 1, 2.08165e-12)

11
scripts/HUD.gd Normal file
View file

@ -0,0 +1,11 @@
extends Control
var fatigue = Global.fatigue
func _ready():
pass
func _process(delta):
fatigue = Global.fatigue
$Fatigue.value = fatigue

17
scripts/death.gd Normal file
View file

@ -0,0 +1,17 @@
extends Node
var deathTimer = 0
func _ready():
pass
func _process(delta):
Global.playerAlive = false
if deathTimer < 100:
deathTimer = deathTimer + 10 * delta
if deathTimer > 100:
deathTimer = 0
Global.playerPleaseRespawn = true # Used so the Teddy script will know to reset variables and position of the player
self.queue_free()
$deathBar.value = deathTimer

View file

@ -3,3 +3,30 @@ extends Node
var mouseSensitivity = 0.01 # Unless otherwise changed by user in settings
var playingGame = false
var menuOpen = false
var fatigue = 100
var playerHealth = 100
var playerDead = false
var playerAlive = true
var playerPleaseRespawn = false
var playerYDeath = -20
var deathShield = 0
func _process(delta):
if Input.is_action_pressed("sprint"):
if fatigue > 0:
fatigue = fatigue - 10 * delta
elif not Input.is_action_pressed("sprint"):
if fatigue < 100:
fatigue = fatigue + 2 * delta
if playerAlive:
deathShield = deathShield - 10 * delta # Make player not killable until the value falls below 0
func player_dead():
playerDead = true
if deathShield <= 0:
deathShield = 50
if playerAlive:
print("Player be deaddddd brooooooo")
var scene_trs =load("res://scenes/death.tscn")
var scene=scene_trs.instantiate()
add_child(scene)

View file

@ -5,6 +5,7 @@ extends Control
func _ready():
if Global.playingGame == true:
$Button.text = "RESUME"
$Button4.text = "MAIN MENU"
func _process(delta):
@ -26,3 +27,12 @@ func _on_button_2_pressed():
func _on_button_3_pressed():
get_tree().quit()
func _on_button_4_pressed():
if Global.playingGame == false:
get_tree().change_scene_to_file("res://scenes/multiplayer.tscn")
if Global.playingGame == true:
Global.playingGame = false
Global.menuOpen = false
get_tree().change_scene_to_file("res://scenes/mainmenu.tscn")

View file

@ -0,0 +1,10 @@
extends Node
func _ready():
Global.playerHealth = 100
Global.fatigue = 100
func _process(delta):
pass

13
scripts/multiplayer.gd Normal file
View file

@ -0,0 +1,13 @@
extends Node
func _ready():
pass
func _process(delta):
pass
func _on_button_pressed():
get_tree().change_scene_to_file("res://scenes/mainmenu.tscn")