Browse Source

added hud for health and killed enemies

galo 2 years ago
parent
commit
0cdb28a647

+ 23 - 2
Client.gd

@@ -27,6 +27,7 @@ func _On_Connection_Failed():
 	print("Failed to connect to game server")
 
 var playerphsyics = preload('res://playersprite.tscn')
+var playerhud = preload('res://hud.tscn')
 
 func _On_Connection_Succeeded():
 	$Input.enabled = true
@@ -35,9 +36,13 @@ func _On_Connection_Succeeded():
 	request_clients()
 	yield(self, 'client_request')
 	for x in current_clients:
-		var instance = playerphsyics.instance()
+		gen_objs(playerphsyics,x,$players)
+		gen_objs(playerhud,x, $Hud/HBoxContainer)
+
+func gen_objs(arg,x, node):
+		var instance = arg.instance()
 		instance.name = str(x)
-		$players.add_child(instance)
+		node.add_child(instance)
 
 signal client_request
 var current_clients = []
@@ -92,3 +97,19 @@ remote func attack_anim(arg, id):
 #	for i in $players.get_children():
 #		print(i.name)
 	$players.get_node(str(id)).get_node('weapon/AnimationPlayer').play(arg)
+
+remote func atr_update(arg):
+#	var arg1 = 'player1'
+#	player_atributes[arg1] = arg
+	print(arg)
+	if has_node('Hud/HBoxContainer/'+arg.keys()[0]):
+		get_node('Hud/HBoxContainer/'+arg.keys()[0])._update(arg.values()[0])
+	
+
+#onready var player_atributes = {'player1':default_atributes.duplicate()}
+#var default_atributes = {
+#	'xp':0,
+#	'hp':0,
+#	'name':'player1',
+#	'k':0,
+#}

+ 2 - 2
Enemy.gd

@@ -4,10 +4,10 @@ var vida = 2
 var speed = 35
 var type = 'goblin'
 
-func damage(arg):
+func damage(arg, id):
 	vida += arg
 	if vida <= 0:
-		get_parent().death_count()
+		get_parent().death_count(id)
 		queue_free()
 
 var motion = Vector2()

+ 6 - 0
Server.gd

@@ -67,3 +67,9 @@ func _physics_process(delta):
 
 func player_anim(attack,arg):
 	rpc_id( 0,'attack_anim', attack, int(arg) )
+
+func hp_update(vida, id):
+	rpc_id( 0,'atr_update', {id:{'hp':vida}})
+
+func kill_update(kill, id):
+	rpc_id( 0,'atr_update', {id:{'k':kill}})

+ 2 - 1
damage.gd

@@ -1,11 +1,12 @@
 extends Area2D
 
 export var damage = -1
+var attacker = ''
 
 func _on_Timer_timeout():
 	queue_free()
 	pass # Replace with function body.
 
 func _on_damage_player_body_entered(area):
-	area.damage( damage)
+	area.damage( damage, attacker)
 	pass # Replace with function body.

+ 9 - 0
font/8bit.tres

@@ -0,0 +1,9 @@
+[gd_resource type="DynamicFont" load_steps=2 format=2]
+
+[ext_resource path="res://font/yoster.ttf" type="DynamicFontData" id=1]
+
+[resource]
+size = 12
+outline_color = Color( 0, 0, 0, 1 )
+extra_spacing_char = -1
+font_data = ExtResource( 1 )

BIN
font/AtlantisTextRegular.ttf


BIN
font/Bitmgothic.ttf


+ 9 - 0
font/MissionText.tres

@@ -0,0 +1,9 @@
+[gd_resource type="DynamicFont" load_steps=2 format=2]
+
+[ext_resource path="res://font/Pixel12x10.ttf" type="DynamicFontData" id=1]
+
+[resource]
+size = 32
+outline_size = 2
+outline_color = Color( 0.356863, 0.12549, 0.258824, 1 )
+font_data = ExtResource( 1 )

BIN
font/Pixel12x10.ttf


BIN
font/Pixelatus.ttf


+ 27 - 0
font/customeffects/effect1.gd

@@ -0,0 +1,27 @@
+tool
+extends RichTextEffect
+
+var bbcode = 'm'
+
+func _process_custom_fx(char_fx: CharFXTransform) -> bool:
+	var progress1 = (char_fx.elapsed_time * 5) - (char_fx.absolute_index*1)
+	var screencenter = Vector2(320,180)
+	var offset = Vector2(-190,0)
+	var offset_buffer = Vector2(0,0)
+	var color_buffer = Color(1,1,1,1)
+	if progress1 < 5:
+		offset_buffer.x =  progress1*64
+		offset_buffer.y = progress1*36
+		color_buffer = Color(0,0.4,0.5,1)
+	else:
+		offset_buffer =  screencenter
+		var bri = clamp(10-(char_fx.elapsed_time*6 - float(char_fx.absolute_index) ),0,1)
+		color_buffer = Color(1,0.5,0,1) + Color(bri,bri,bri,bri)
+	if char_fx.elapsed_time > 5:
+		var rotation = (float(char_fx.absolute_index) / 17 * PI * 2)-(PI/2)
+		var time = (char_fx.elapsed_time-5)
+		offset_buffer = ( Vector2(cos(rotation), sin(rotation)) * time * time  * 300 ) + screencenter
+	char_fx.offset = offset_buffer + offset
+	char_fx.color = color_buffer
+#	char_fx.color.a = 0.1 + float(char_fx.absolute_index+1)/100
+	return true

+ 6 - 0
font/customeffects/effect1.tres

@@ -0,0 +1,6 @@
+[gd_resource type="RichTextEffect" load_steps=2 format=2]
+
+[ext_resource path="res://font/customeffects/effect1.gd" type="Script" id=1]
+
+[resource]
+script = ExtResource( 1 )

BIN
font/lunchds.ttf


BIN
font/manaspc.ttf


+ 10 - 0
font/overkill.tres

@@ -0,0 +1,10 @@
+[gd_resource type="DynamicFont" load_steps=2 format=2]
+
+[ext_resource path="res://font/Pixelatus.ttf" type="DynamicFontData" id=1]
+
+[resource]
+size = 60
+outline_size = 5
+outline_color = Color( 1, 0, 0, 1 )
+extra_spacing_top = -30
+font_data = ExtResource( 1 )

BIN
font/saturno.ttf


BIN
font/slkscr.ttf


+ 9 - 0
font/tiny.tres

@@ -0,0 +1,9 @@
+[gd_resource type="DynamicFont" load_steps=2 format=2]
+
+[ext_resource path="res://font/Pixelatus.ttf" type="DynamicFontData" id=1]
+
+[resource]
+size = 12
+outline_color = Color( 0, 0, 0, 1 )
+extra_spacing_char = -1
+font_data = ExtResource( 1 )

BIN
font/westengland.ttf


BIN
font/yoster.ttf


+ 11 - 0
hud.gd

@@ -0,0 +1,11 @@
+extends VBoxContainer
+
+func _update(arg):
+	if arg.has('name'):
+		$username.text = arg.name
+	if arg.has('k'):
+		$enemieskilled.text = 'enemies killed: ' + str(arg.k)
+	if arg.has('hp'):
+		$health.value = arg.hp
+	if arg.has('xp'):
+		$xp.value = arg.xp

+ 58 - 0
hud.tscn

@@ -0,0 +1,58 @@
+[gd_scene load_steps=5 format=2]
+
+[ext_resource path="res://font/8bit.tres" type="DynamicFont" id=1]
+[ext_resource path="res://hud.gd" type="Script" id=2]
+
+[sub_resource type="StyleBoxFlat" id=1]
+bg_color = Color( 0, 0.882353, 1, 1 )
+anti_aliasing = false
+
+[sub_resource type="StyleBoxFlat" id=2]
+bg_color = Color( 1, 0, 0, 1 )
+anti_aliasing = false
+
+[node name="player1" type="VBoxContainer"]
+margin_right = 97.0
+margin_bottom = 60.0
+script = ExtResource( 2 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="username" type="Label" parent="."]
+margin_right = 97.0
+margin_bottom = 12.0
+custom_fonts/font = ExtResource( 1 )
+text = "Player 1"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="xp" type="ProgressBar" parent="."]
+margin_top = 16.0
+margin_right = 97.0
+margin_bottom = 28.0
+custom_styles/fg = SubResource( 1 )
+custom_fonts/font = ExtResource( 1 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="health" type="ProgressBar" parent="."]
+margin_top = 32.0
+margin_right = 97.0
+margin_bottom = 44.0
+custom_styles/fg = SubResource( 2 )
+custom_fonts/font = ExtResource( 1 )
+step = 1.0
+value = 100.0
+
+[node name="enemieskilled" type="Label" parent="."]
+margin_top = 48.0
+margin_right = 97.0
+margin_bottom = 60.0
+custom_fonts/font = ExtResource( 1 )
+text = "enemies killed: 0"
+__meta__ = {
+"_edit_use_anchors_": false
+}

+ 17 - 5
main.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=9 format=2]
+[gd_scene load_steps=10 format=2]
 
 [ext_resource path="res://Client.gd" type="Script" id=1]
 [ext_resource path="res://Server.gd" type="Script" id=2]
@@ -7,6 +7,7 @@
 [ext_resource path="res://Input.gd" type="Script" id=5]
 [ext_resource path="res://spawner.gd" type="Script" id=6]
 [ext_resource path="res://enemiessprite.gd" type="Script" id=7]
+[ext_resource path="res://font/tiny.tres" type="DynamicFont" id=8]
 
 [sub_resource type="GDScript" id=1]
 script/source = "extends Node
@@ -44,10 +45,11 @@ script = ExtResource( 6 )
 script = ExtResource( 1 )
 
 [node name="ping" type="Label" parent="Client"]
-margin_left = 17.818
-margin_top = 18.7089
-margin_right = 57.818
-margin_bottom = 32.7089
+margin_left = 12.1612
+margin_top = 331.474
+margin_right = 52.1612
+margin_bottom = 345.474
+custom_fonts/font = ExtResource( 8 )
 text = "ping..."
 script = ExtResource( 4 )
 __meta__ = {
@@ -62,6 +64,16 @@ script = ExtResource( 5 )
 [node name="enemies" type="Node" parent="Client"]
 script = ExtResource( 7 )
 
+[node name="Hud" type="CanvasLayer" parent="Client"]
+
+[node name="HBoxContainer" type="HBoxContainer" parent="Client/Hud"]
+anchor_right = 1.0
+margin_right = 1.0
+margin_bottom = 60.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
 [node name="Client2" type="Node" parent="."]
 script = ExtResource( 1 )
 

+ 3 - 1
playerphysics.gd

@@ -14,8 +14,9 @@ var damage = preload('res://damage_player.tscn')
 var attack_buffers = {'melee':0}
 var vida = 100
 
-func damage(arg):
+func damage(arg, id):
 	vida += arg
+	get_node('../..').hp_update(vida, name)
 	if vida <= 0: queue_free()
 
 var sidebuffer = true
@@ -25,6 +26,7 @@ func melee():
 	if fmod(attack_buffers.melee,45) == 0:
 		var newdmg = damage.instance()
 		newdmg.global_position = global_position + (Vector2(70,0) if sidebuffer else Vector2(-70,0))
+		newdmg.attacker = name
 		get_node('../../dmgbox').add_child(newdmg)
 		get_node('../..').player_anim('melee',name)
 

+ 8 - 2
spawner.gd

@@ -15,5 +15,11 @@ func _ready():
 
 var counter = 0
 
-func death_count():
-	counter += 1
+var score = {}
+
+func death_count(id):
+	if score.has(id):
+		score[id] += 1
+	else:
+		score[id] = 1
+	get_parent().kill_update(score[id],id)