This repository has been archived on 2022-01-09. You can view files and clone it, but cannot push or open issues/pull-requests.
liblast/Game/Assets/HUD/HUD.gd

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
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