86 lines
2.4 KiB
GDScript
86 lines
2.4 KiB
GDScript
extends Control
|
|
|
|
@onready var main = get_tree().get_root().get_node("Main")
|
|
|
|
var pain: float = 0:
|
|
set(value):
|
|
$PostProcessing/Damage.material.set('shader_param/Damage', value)
|
|
get:
|
|
return $PostProcessing/Damage.material.get('shader_param/Damage')
|
|
|
|
# Declare member variables here. Examples:
|
|
# var a = 2
|
|
# var b = "text"
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
pass # Replace with function body.
|
|
|
|
func game_over(winner):
|
|
scoretab(true, winner)
|
|
|
|
func damage(hp):
|
|
print("HUD damage ", hp)
|
|
pain += hp/20
|
|
|
|
func hide():
|
|
$Crosshair.hide()
|
|
$Chat.hide()
|
|
|
|
func show():
|
|
$Crosshair.show()
|
|
$Chat.show()
|
|
|
|
func update_scoretab():
|
|
$ScoreTable/VBoxContainer/ScoreTab.text = ''
|
|
|
|
var scores = []
|
|
|
|
for i in main.player_list.players.keys():
|
|
scores.append(main.player_list.get(i).score)
|
|
|
|
scores.sort()
|
|
scores.reverse()
|
|
|
|
var done = []
|
|
|
|
for i in scores:
|
|
for j in main.player_list.players.keys():
|
|
if main.player_list.get(j).score == i:
|
|
if j not in done:
|
|
$ScoreTable/VBoxContainer/ScoreTab.text += str(i) + " - " + main.player_list.get(j).name + "\n"
|
|
done.append(j)
|
|
|
|
func scoretab(show: bool, winner = null):
|
|
if show:
|
|
update_scoretab()
|
|
$ScoreTable.show()
|
|
else:
|
|
$ScoreTable.hide()
|
|
|
|
if winner:
|
|
$ScoreTable/VBoxContainer/Header.text = "Match over! Player " + main.player_list.get(winner).name + " won!"
|
|
else:
|
|
$ScoreTable/VBoxContainer/Header.text = "Playing deathmatch until " + str(main.game_score_limit) + " kills"
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta):
|
|
# if main.local_player == null: # player is dead ATM
|
|
# print("local_player is null; PID is ", get_tree().multiplayer.get_multiplayer_unique_id(),"; respawn queue: ", main.respawn_queue)
|
|
if not get_tree().multiplayer.has_multiplayer_peer(): # don't do anything if we're offline
|
|
return
|
|
|
|
if main.spawn_queue.has(get_tree().multiplayer.get_unique_id()):
|
|
var countdown = main.spawn_queue[get_tree().multiplayer.get_unique_id()] - main.uptime
|
|
# countdown = round(countdown * 10) / 10
|
|
$RespawnCountdown.text = "RESPAWNING IN " + str("%1.2f" % countdown) + " SECONDS..."
|
|
$RespawnCountdown.visible = true
|
|
else:
|
|
$RespawnCountdown.visible = false
|
|
|
|
if $ScoreTable.visible: # update the scores every frame when player is watching the score table
|
|
update_scoretab()
|
|
|
|
if main.local_player:
|
|
if not main.local_player.dead:
|
|
pain *= 1 - delta # time heals pain, as long as you're alive
|