Progress towards issue #27
This commit is contained in:
parent
1cf3feb147
commit
3361aca4b1
8 changed files with 168 additions and 31 deletions
|
@ -22,6 +22,7 @@ var ranRemovePlayer = false
|
|||
var mousesense = Global.mouseSensitivity
|
||||
var controllerAxisValue_x = 0
|
||||
var controllerAxisValue_y = 0
|
||||
var runnerDead = false
|
||||
|
||||
func _ready():
|
||||
name = str(teddyAuthority)
|
||||
|
@ -79,11 +80,9 @@ func _unhandled_input(event):
|
|||
|
||||
func _physics_process(delta):
|
||||
if is_multiplayer_authority():
|
||||
# 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:
|
||||
get_node(teddyCollider).disabled = false
|
||||
position.x = 0 #Set player X
|
||||
position.y = 10 #Set player Y
|
||||
position.z = 0 #Set player Z
|
||||
|
@ -101,11 +100,14 @@ func _physics_process(delta):
|
|||
if ranRemovePlayer == false:
|
||||
if Global.playerAlive == false:
|
||||
ranRemovePlayer = true
|
||||
#get_node(teddyCollider).disabled = true
|
||||
get_node(teddyCollider).disabled = true
|
||||
rpc("remove_dead_teddy")
|
||||
|
||||
if Global.playerAlive:
|
||||
# Handle Jump.
|
||||
# Add the gravity.
|
||||
if not is_on_floor():
|
||||
velocity.y -= gravity * delta
|
||||
# Handle Jump.
|
||||
if Input.is_action_just_pressed("jump") and is_on_floor():
|
||||
velocity.y = JUMP_VELOCITY
|
||||
var cam_dir = Input.is_action_pressed("cam_left") or Input.is_action_pressed("cam_right") or Input.is_action_pressed("cam_up") or Input.is_action_pressed("cam_down")
|
||||
|
@ -150,7 +152,7 @@ func _physics_process(delta):
|
|||
if Global.playerDead:
|
||||
velocity.x = 0
|
||||
velocity.z = 0
|
||||
if Input.is_action_just_pressed("shoot"):
|
||||
if Input.is_action_just_pressed("shoot") and Global.roundInSession:
|
||||
if menuOpen == false:
|
||||
if Global.multiplayerCurrent == true:
|
||||
rpc("shoot_bullet")
|
||||
|
|
|
@ -22,6 +22,7 @@ offset_top = 562.0
|
|||
offset_right = 165.0
|
||||
offset_bottom = 589.0
|
||||
value = 100.0
|
||||
allow_greater = true
|
||||
|
||||
[node name="Fatigue" type="ProgressBar" parent="."]
|
||||
modulate = Color(1, 1, 0, 1)
|
||||
|
@ -143,7 +144,7 @@ offset_bottom = 107.0
|
|||
grow_horizontal = 2
|
||||
theme_override_fonts/font = ExtResource("3_x1wqt")
|
||||
theme_override_font_sizes/font_size = 60
|
||||
text = "10:00"
|
||||
text = "00:00"
|
||||
|
||||
[node name="startLabel" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
|
@ -178,3 +179,29 @@ offset_top = 58.0
|
|||
offset_right = 252.0
|
||||
offset_bottom = 81.0
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="RunnerPanel" type="Panel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = 916.0
|
||||
offset_top = 15.0
|
||||
offset_right = 1131.0
|
||||
offset_bottom = 82.0
|
||||
|
||||
[node name="Health" type="ProgressBar" parent="RunnerPanel"]
|
||||
modulate = Color(0.890196, 0.137255, 0.0156863, 1)
|
||||
offset_left = 5.0
|
||||
offset_top = 35.0
|
||||
offset_right = 210.0
|
||||
offset_bottom = 62.0
|
||||
max_value = 2000.0
|
||||
value = 2000.0
|
||||
allow_greater = true
|
||||
|
||||
[node name="runnerLabel" type="Label" parent="RunnerPanel"]
|
||||
layout_mode = 0
|
||||
offset_left = 48.0
|
||||
offset_top = 6.0
|
||||
offset_right = 161.0
|
||||
offset_bottom = 32.0
|
||||
text = "Runner Health"
|
||||
|
|
|
@ -32,33 +32,33 @@ flat = true
|
|||
[node name="Panel2" type="Panel" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 308.0
|
||||
offset_top = 229.0
|
||||
offset_top = 187.0
|
||||
offset_right = 508.0
|
||||
offset_bottom = 429.0
|
||||
offset_bottom = 387.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_xhmtq")
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 348.0
|
||||
offset_top = 309.0
|
||||
offset_top = 267.0
|
||||
offset_right = 464.0
|
||||
offset_bottom = 335.0
|
||||
offset_bottom = 293.0
|
||||
text = "IMAGE OF MAP"
|
||||
|
||||
[node name="mapLabel" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 658.0
|
||||
offset_top = 218.0
|
||||
offset_top = 176.0
|
||||
offset_right = 782.0
|
||||
offset_bottom = 244.0
|
||||
offset_bottom = 202.0
|
||||
text = "MAP SELECTION"
|
||||
|
||||
[node name="playground" type="Button" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 646.0
|
||||
offset_top = 248.0
|
||||
offset_top = 206.0
|
||||
offset_right = 797.0
|
||||
offset_bottom = 283.0
|
||||
offset_bottom = 241.0
|
||||
text = "Toyland"
|
||||
|
||||
[node name="portBox" type="LineEdit" parent="."]
|
||||
|
@ -79,18 +79,18 @@ text = "START"
|
|||
|
||||
[node name="lowerMapLabel" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 262.0
|
||||
offset_top = 454.0
|
||||
offset_right = 305.0
|
||||
offset_bottom = 480.0
|
||||
offset_left = 265.0
|
||||
offset_top = 395.0
|
||||
offset_right = 308.0
|
||||
offset_bottom = 421.0
|
||||
text = "Map: "
|
||||
|
||||
[node name="mapSelected" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 309.0
|
||||
offset_top = 456.0
|
||||
offset_top = 396.0
|
||||
offset_right = 349.0
|
||||
offset_bottom = 479.0
|
||||
offset_bottom = 419.0
|
||||
|
||||
[node name="playerBox" type="LineEdit" parent="."]
|
||||
layout_mode = 0
|
||||
|
@ -127,9 +127,9 @@ flat = true
|
|||
[node name="hostLabel" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 534.0
|
||||
offset_top = 161.0
|
||||
offset_top = 148.0
|
||||
offset_right = 620.0
|
||||
offset_bottom = 187.0
|
||||
offset_bottom = 174.0
|
||||
text = "Host Game"
|
||||
|
||||
[node name="playerNameBox" type="LineEdit" parent="."]
|
||||
|
@ -174,12 +174,11 @@ text = "Long"
|
|||
|
||||
[node name="respawnLabel" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 681.0
|
||||
offset_top = 387.0
|
||||
offset_right = 751.0
|
||||
offset_left = 664.0
|
||||
offset_top = 413.0
|
||||
offset_right = 776.0
|
||||
offset_bottom = 439.0
|
||||
text = "Respawn
|
||||
Time"
|
||||
text = "Respawn Time"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Toyland" type="Sprite2D" parent="."]
|
||||
|
@ -188,6 +187,32 @@ position = Vector2(407.556, 329)
|
|||
scale = Vector2(0.653595, 0.653595)
|
||||
texture = ExtResource("3_rgmyq")
|
||||
|
||||
[node name="Label2" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 351.0
|
||||
offset_top = 435.0
|
||||
offset_right = 450.0
|
||||
offset_bottom = 461.0
|
||||
text = "Gamemode"
|
||||
|
||||
[node name="GamemodeDeathmatch" type="CheckBox" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 279.0
|
||||
offset_top = 461.0
|
||||
offset_right = 403.0
|
||||
offset_bottom = 492.0
|
||||
tooltip_text = "5 minute Deathmatch. Player with most kills wins."
|
||||
button_pressed = true
|
||||
text = "Deathmatch"
|
||||
|
||||
[node name="GamemodeRunner" type="CheckBox" parent="."]
|
||||
offset_left = 407.0
|
||||
offset_top = 461.0
|
||||
offset_right = 492.0
|
||||
offset_bottom = 492.0
|
||||
tooltip_text = "One player is selected at random as \"the runner.\" Everyone else it supposed to kill the runner. 5 minutes."
|
||||
text = "Runner"
|
||||
|
||||
[connection signal="pressed" from="close" to="." method="_on_close_pressed"]
|
||||
[connection signal="pressed" from="playground" to="." method="_on_playground_pressed"]
|
||||
[connection signal="pressed" from="startButton" to="." method="_on_start_button_pressed"]
|
||||
|
@ -196,3 +221,5 @@ texture = ExtResource("3_rgmyq")
|
|||
[connection signal="button_down" from="shortRespawn" to="." method="_on_short_respawn_button_down"]
|
||||
[connection signal="button_down" from="normalRespawn" to="." method="_on_normal_respawn_button_down"]
|
||||
[connection signal="button_down" from="longRespawn" to="." method="_on_long_respawn_button_down"]
|
||||
[connection signal="button_down" from="GamemodeDeathmatch" to="." method="_on_gamemode_deathmatch_button_down"]
|
||||
[connection signal="button_down" from="GamemodeRunner" to="." method="_on_gamemode_runner_button_down"]
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
extends Control
|
||||
|
||||
var roundTimer := 600.0
|
||||
var roundTimer := 300.0
|
||||
var minutes
|
||||
var seconds
|
||||
|
||||
var scores: Array[int] = []
|
||||
var scoresInitalized = false
|
||||
var runnerSelected = false
|
||||
|
||||
func _ready():
|
||||
minutes = roundTimer / 60
|
||||
|
@ -17,6 +18,8 @@ func _process(delta):
|
|||
$startLabel.text = Global.HUDStartLabelText
|
||||
$Fatigue.value = Global.fatigue
|
||||
$Health.value = Global.playerHealth
|
||||
if Global.iAmRunner:
|
||||
rpc("sync_runner_hp", $Health.value)
|
||||
if Global.musicUpdated == true:
|
||||
Global.musicUpdated = false
|
||||
$musicPanel/playingLabel.text = Global.musicName
|
||||
|
@ -26,9 +29,17 @@ func _process(delta):
|
|||
$musicPanel.visible = false
|
||||
if Global.roundInSession == true and roundTimer >= 0:
|
||||
if scoresInitalized == false:
|
||||
#Global.HUDStartLabelText = ""
|
||||
scoresInitalized = true
|
||||
fill_scores_with_zeros(Global.connectedPlayers.size())
|
||||
$startLabel.text = ""
|
||||
if Global.gamemode == "Runner":
|
||||
if runnerSelected == false:
|
||||
runnerSelected = true
|
||||
select_runner(Global.connectedPlayers, Global.connectedPlayersByPeerID)
|
||||
if Global.runnerDead == true:
|
||||
print("RUNNER IS DEAD")
|
||||
rpc("runner_dead", Global.chosenRunner)
|
||||
runner_dead(Global.chosenRunner)
|
||||
roundTimer -= delta
|
||||
minutes = roundTimer / 60
|
||||
seconds = fmod(roundTimer, 60)
|
||||
|
@ -62,3 +73,48 @@ func fill_scores_with_zeros(num_of_players):
|
|||
scores.resize(num_of_players)
|
||||
for i in num_of_players:
|
||||
scores[i] = 0
|
||||
|
||||
func select_runner(players, playersID):
|
||||
var numOfPlayers = players.size()
|
||||
var getIndexSize = numOfPlayers - 1
|
||||
var playerChosen = RandomNumberGenerator.new().randi_range(0, getIndexSize)
|
||||
var runner = players[playerChosen]
|
||||
Global.chosenRunner = runner
|
||||
rpc("not_runner", Global.chosenRunner)
|
||||
rpc("selected_runner", runner)
|
||||
selected_runner(runner)
|
||||
var index = players.find(runner)
|
||||
var runnerID = playersID[index]
|
||||
if runnerID == 1:
|
||||
runner_stats()
|
||||
else:
|
||||
rpc_id(runnerID, "runner_stats")
|
||||
print("Runner: ", runner, ", ID: ", runnerID)
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func selected_runner(player):
|
||||
Global.chosenRunner = player
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func not_runner(player):
|
||||
$RunnerPanel.visible = true
|
||||
Global.HUDStartLabelText = str(player + " is the runner!")
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func runner_stats():
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
Global.iAmRunner = true
|
||||
$Health.max_value = 2000
|
||||
Global.playerHealth = 2000
|
||||
Global.HUDStartLabelText = "You are the runner!"
|
||||
$RunnerPanel.visible = false
|
||||
print(Global.HUDStartLabelText)
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func runner_dead(runner):
|
||||
Global.roundInSession = false
|
||||
Global.HUDStartLabelText = "Runner has died! Killers win!"
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func sync_runner_hp(value):
|
||||
$RunnerPanel/Health.value = value
|
||||
|
|
|
@ -10,6 +10,9 @@ func _ready():
|
|||
|
||||
|
||||
func _process(delta):
|
||||
if Global.gamemode == "Runner":
|
||||
if Global.iAmRunner:
|
||||
Global.runnerDead = true
|
||||
if deathTimer < 100:
|
||||
deathTimer = deathTimer + (10 * Global.respawnTimeModifier) * delta
|
||||
if deathTimer > 100:
|
||||
|
@ -17,3 +20,4 @@ func _process(delta):
|
|||
Global.playerPleaseRespawn = true # Used so the Teddy script will know to reset variables and position of the player
|
||||
self.queue_free()
|
||||
$deathBar.value = deathTimer
|
||||
|
||||
|
|
|
@ -24,16 +24,21 @@ var HUDStartLabelText = "" # The text displayed at the bottom of the screen of t
|
|||
var lastPersonToHitMe = 0 # Defined in the Bullet RPC
|
||||
var HUDPlayerDied = false # Tells the HUD.gd script that a point should be added or deducted
|
||||
var connectedPlayers = [] # Currently connected players by their name (NOT THEIR ID)
|
||||
var connectedPlayersByPeerID = [] # Currently connected players by their ID
|
||||
var respawnTimeModifier = 1.0 # Affects how quickly the player respawns in death.gd
|
||||
var musicName = "" # Name of music for HUD.gd
|
||||
var musicAuthor = "" # Name of music author for HUD.gd
|
||||
var musicUpdated = false # Tells HUD.gd to update labels and change visibility
|
||||
var menuLightSwitch = false # No description provided
|
||||
var gamemode = "Deathmatch" # This is changed in host.gd
|
||||
var chosenRunner # Changed in HUD.gd
|
||||
var iAmRunner = false # Defines whether you're the runner or not. Used in HUD.gd
|
||||
var runnerDead = false
|
||||
|
||||
func _process(delta):
|
||||
if godMode:
|
||||
pass
|
||||
elif Input.is_action_pressed("sprint"):
|
||||
elif Input.is_action_pressed("sprint") and not iAmRunner and roundInSession:
|
||||
if fatigue > 0:
|
||||
fatigue = fatigue - 10 * delta
|
||||
elif not Input.is_action_pressed("sprint"):
|
||||
|
|
|
@ -86,3 +86,13 @@ func _on_normal_respawn_button_down():
|
|||
func _on_long_respawn_button_down():
|
||||
$shortRespawn.button_pressed = false
|
||||
$normalRespawn.button_pressed = false
|
||||
|
||||
|
||||
func _on_gamemode_deathmatch_button_down():
|
||||
$GamemodeRunner.button_pressed = false
|
||||
Global.gamemode = "Deathmatch"
|
||||
|
||||
|
||||
func _on_gamemode_runner_button_down():
|
||||
$GamemodeDeathmatch.button_pressed = false
|
||||
Global.gamemode = "Runner"
|
||||
|
|
|
@ -23,6 +23,7 @@ func create_server(port, maxPlayers):
|
|||
await get_tree().create_timer(0.5).timeout ## REQUIRED, THE RPC IS MADE BEFORE THE CLIENT IS FULLY CONNECTED
|
||||
rpc_id(new_peer_id, "sync_names", Global.connectedPlayers)
|
||||
rpc_id(new_peer_id, "sync_respawn_speed", Global.respawnTimeModifier)
|
||||
rpc_id(new_peer_id, "sync_gamemode", Global.gamemode)
|
||||
rpc("add_newly_connected_player_character", new_peer_id)
|
||||
rpc_id(new_peer_id, "add_previously_connected_player_characters", connected_peers)
|
||||
add_player_node(new_peer_id)
|
||||
|
@ -44,6 +45,7 @@ func add_newly_connected_player_character(new_peer_id):
|
|||
|
||||
func add_player_node(peer_id):
|
||||
connected_peers.append(peer_id)
|
||||
Global.connectedPlayersByPeerID = connected_peers
|
||||
var player_character = preload("res://scenes/Teddy.tscn").instantiate()
|
||||
player_character.set_multiplayer_authority(peer_id)
|
||||
await get_tree().create_timer(0.5).timeout
|
||||
|
@ -75,6 +77,10 @@ func sync_name_all_peers(name):
|
|||
func sync_respawn_speed(speed):
|
||||
Global.respawnTimeModifier = speed
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func sync_gamemode(gamemode):
|
||||
Global.gamemode = gamemode
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func check_name(name): # Returns true if it finds a matching name
|
||||
for i in range(Global.connectedPlayers.size()):
|
||||
|
|
Loading…
Reference in a new issue