diff --git a/source/assets/scripts/player_handlers/player_body_handler.gd b/source/assets/scripts/player_handlers/player_body_handler.gd index ef96d5c..0f531fd 100644 --- a/source/assets/scripts/player_handlers/player_body_handler.gd +++ b/source/assets/scripts/player_handlers/player_body_handler.gd @@ -9,6 +9,8 @@ var bullet var username_text = load("res://source/scenes/OVERLAY/elements/username_text.tscn") var username setget username_set var username_text_instance = null +var health_bar_scene = load("res://source/scenes/OVERLAY/elements/HUD.tscn") +var health_bar_instance = null var hp = 100 setget set_hp var can_shoot = true var is_reloading = false @@ -96,6 +98,8 @@ func _ready(): get_tree().connect("network_peer_connected", self, "_network_peer_connected") username_text_instance = Global.instance_node_at_location(username_text, PersistentNodes, global_position) username_text_instance.player_following = self + health_bar_instance = Global.instance_node_at_location(health_bar_scene, PersistentNodes, global_position) + health_bar_instance.player_following = self update_shoot_mode(false) Global.alive_players.append(self) @@ -421,14 +425,17 @@ func _on_hitbox_area_entered(area): sync func hit_by_damager(damage): hp -= damage modulate = Color(5, 5, 5, 1) + health_bar_instance.value = hp hit_timer.start() sync func enable() -> void: hp = 100 + health_bar_instance.value = 100 can_shoot = false update_shoot_mode(false) username_text_instance.visible = true + health_bar_instance.visible = true visible = true $player_collider.disabled = false $hitbox/CollisionShape2D.disabled = false @@ -444,6 +451,7 @@ sync func enable() -> void: sync func destroy() -> void: username_text_instance.visible = false + health_bar_instance.visible = false visible = false $player_collider.disabled = true $hitbox/CollisionShape2D.disabled = true diff --git a/source/assets/scripts/server_handlers/network_processors/network_setup.gd b/source/assets/scripts/server_handlers/network_processors/network_setup.gd index 52b6bb6..3f970ce 100644 --- a/source/assets/scripts/server_handlers/network_processors/network_setup.gd +++ b/source/assets/scripts/server_handlers/network_processors/network_setup.gd @@ -70,6 +70,7 @@ func _player_disconnected(id) -> void: if PersistentNodes.has_node(str(id)): PersistentNodes.get_node(str(id)).username_text_instance.queue_free() + PersistentNodes.get_node(str(id)).health_bar_instance.queue_free() PersistentNodes.get_node(str(id)).queue_free() diff --git a/source/assets/scripts/ui_element_handlers/HUD.gd b/source/assets/scripts/ui_element_handlers/HUD.gd new file mode 100644 index 0000000..f4f6cdd --- /dev/null +++ b/source/assets/scripts/ui_element_handlers/HUD.gd @@ -0,0 +1,18 @@ +extends Node2D + +var player_following = null +var value = "" setget value_set + +var distanceToPlayerOffset = -150 + +onready var health_bar = $health_bar + + +func _process(delta: float) -> void: + if player_following != null: + global_position = player_following.global_position + Vector2(0,distanceToPlayerOffset).rotated(player_following.rotation) + + +func value_set(new_text) -> void: + value = new_text + health_bar.value = value diff --git a/source/assets/sprites/GUI/bar-background.png b/source/assets/sprites/GUI/bar-background.png new file mode 100644 index 0000000..6a11cb2 Binary files /dev/null and b/source/assets/sprites/GUI/bar-background.png differ diff --git a/source/assets/sprites/GUI/bar-fill.png b/source/assets/sprites/GUI/bar-fill.png new file mode 100644 index 0000000..fd65bef Binary files /dev/null and b/source/assets/sprites/GUI/bar-fill.png differ diff --git a/source/entities/player/player_node.tscn b/source/entities/player/player_node.tscn index 299fc58..502d5a8 100644 --- a/source/entities/player/player_node.tscn +++ b/source/entities/player/player_node.tscn @@ -173,10 +173,15 @@ [sub_resource type="SpriteFrames" id=2] animations = [ { -"frames": [ ExtResource( 5 ), ExtResource( 42 ), ExtResource( 35 ), ExtResource( 24 ), ExtResource( 8 ), ExtResource( 31 ), ExtResource( 30 ), ExtResource( 38 ), ExtResource( 10 ), ExtResource( 43 ), ExtResource( 41 ), ExtResource( 33 ), ExtResource( 44 ), ExtResource( 19 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 12 ), ExtResource( 45 ), ExtResource( 21 ) ], +"frames": [ ExtResource( 70 ), ExtResource( 49 ), ExtResource( 74 ), ExtResource( 75 ), ExtResource( 28 ), ExtResource( 52 ), ExtResource( 53 ), ExtResource( 55 ), ExtResource( 150 ), ExtResource( 156 ), ExtResource( 138 ), ExtResource( 161 ), ExtResource( 145 ), ExtResource( 148 ), ExtResource( 147 ), ExtResource( 133 ), ExtResource( 164 ), ExtResource( 134 ), ExtResource( 152 ), ExtResource( 160 ) ], "loop": true, -"name": "boost-speed-right-01", -"speed": 50.0 +"name": "move-speed-left-03", +"speed": 35.0 +}, { +"frames": [ ExtResource( 167 ), ExtResource( 157 ), ExtResource( 158 ), ExtResource( 126 ), ExtResource( 90 ), ExtResource( 89 ), ExtResource( 97 ), ExtResource( 88 ), ExtResource( 98 ), ExtResource( 91 ), ExtResource( 125 ), ExtResource( 105 ), ExtResource( 82 ), ExtResource( 84 ), ExtResource( 92 ), ExtResource( 103 ), ExtResource( 122 ), ExtResource( 130 ), ExtResource( 104 ), ExtResource( 116 ) ], +"loop": true, +"name": "move-speed-right-02", +"speed": 35.0 }, { "frames": [ ExtResource( 5 ), ExtResource( 42 ), ExtResource( 35 ), ExtResource( 24 ), ExtResource( 8 ), ExtResource( 31 ), ExtResource( 30 ), ExtResource( 38 ), ExtResource( 10 ), ExtResource( 43 ), ExtResource( 41 ), ExtResource( 33 ), ExtResource( 44 ), ExtResource( 19 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 12 ), ExtResource( 45 ), ExtResource( 21 ) ], "loop": true, @@ -188,21 +193,6 @@ animations = [ { "name": "move-speed-right-04", "speed": 35.0 }, { -"frames": [ ExtResource( 162 ), ExtResource( 135 ), ExtResource( 146 ), ExtResource( 141 ), ExtResource( 143 ), ExtResource( 163 ), ExtResource( 149 ), ExtResource( 136 ), ExtResource( 154 ), ExtResource( 137 ), ExtResource( 165 ), ExtResource( 142 ), ExtResource( 139 ), ExtResource( 159 ), ExtResource( 140 ), ExtResource( 155 ), ExtResource( 144 ), ExtResource( 151 ), ExtResource( 153 ), ExtResource( 166 ) ], -"loop": true, -"name": "boost-speed-left-04", -"speed": 50.0 -}, { -"frames": [ ExtResource( 5 ), ExtResource( 42 ), ExtResource( 35 ), ExtResource( 24 ), ExtResource( 8 ), ExtResource( 31 ), ExtResource( 30 ), ExtResource( 38 ), ExtResource( 10 ), ExtResource( 43 ), ExtResource( 41 ), ExtResource( 33 ), ExtResource( 44 ), ExtResource( 19 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 12 ), ExtResource( 45 ), ExtResource( 21 ) ], -"loop": true, -"name": "idle-speed-right-02", -"speed": 25.0 -}, { -"frames": [ ExtResource( 99 ), ExtResource( 83 ), ExtResource( 109 ), ExtResource( 111 ), ExtResource( 101 ), ExtResource( 96 ), ExtResource( 79 ), ExtResource( 132 ), ExtResource( 119 ), ExtResource( 80 ), ExtResource( 85 ), ExtResource( 86 ), ExtResource( 87 ), ExtResource( 106 ), ExtResource( 121 ), ExtResource( 129 ), ExtResource( 100 ), ExtResource( 108 ), ExtResource( 110 ), ExtResource( 120 ) ], -"loop": true, -"name": "boost-speed-right-04", -"speed": 50.0 -}, { "frames": [ ExtResource( 114 ), ExtResource( 128 ), ExtResource( 93 ), ExtResource( 107 ), ExtResource( 117 ), ExtResource( 102 ), ExtResource( 81 ), ExtResource( 118 ), ExtResource( 76 ), ExtResource( 115 ), ExtResource( 127 ), ExtResource( 123 ), ExtResource( 113 ), ExtResource( 77 ), ExtResource( 78 ), ExtResource( 124 ), ExtResource( 94 ), ExtResource( 112 ), ExtResource( 131 ), ExtResource( 95 ) ], "loop": true, "name": "move-speed-right-03", @@ -233,15 +223,40 @@ animations = [ { "name": "idle-speed-left-01", "speed": 25.0 }, { -"frames": [ ExtResource( 70 ), ExtResource( 49 ), ExtResource( 74 ), ExtResource( 75 ), ExtResource( 28 ), ExtResource( 52 ), ExtResource( 53 ), ExtResource( 55 ), ExtResource( 150 ), ExtResource( 156 ), ExtResource( 138 ), ExtResource( 161 ), ExtResource( 145 ), ExtResource( 148 ), ExtResource( 147 ), ExtResource( 133 ), ExtResource( 164 ), ExtResource( 134 ), ExtResource( 152 ), ExtResource( 160 ) ], +"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], "loop": true, -"name": "move-speed-left-03", +"name": "boost-speed-left-01", +"speed": 50.0 +}, { +"frames": [ ExtResource( 162 ), ExtResource( 135 ), ExtResource( 146 ), ExtResource( 141 ), ExtResource( 143 ), ExtResource( 163 ), ExtResource( 149 ), ExtResource( 136 ), ExtResource( 154 ), ExtResource( 137 ), ExtResource( 165 ), ExtResource( 142 ), ExtResource( 139 ), ExtResource( 159 ), ExtResource( 140 ), ExtResource( 155 ), ExtResource( 144 ), ExtResource( 151 ), ExtResource( 153 ), ExtResource( 166 ) ], +"loop": true, +"name": "boost-speed-left-04", +"speed": 50.0 +}, { +"frames": [ ExtResource( 5 ), ExtResource( 42 ), ExtResource( 35 ), ExtResource( 24 ), ExtResource( 8 ), ExtResource( 31 ), ExtResource( 30 ), ExtResource( 38 ), ExtResource( 10 ), ExtResource( 43 ), ExtResource( 41 ), ExtResource( 33 ), ExtResource( 44 ), ExtResource( 19 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 12 ), ExtResource( 45 ), ExtResource( 21 ) ], +"loop": true, +"name": "idle-speed-right-02", +"speed": 25.0 +}, { +"frames": [ ExtResource( 99 ), ExtResource( 83 ), ExtResource( 109 ), ExtResource( 111 ), ExtResource( 101 ), ExtResource( 96 ), ExtResource( 79 ), ExtResource( 132 ), ExtResource( 119 ), ExtResource( 80 ), ExtResource( 85 ), ExtResource( 86 ), ExtResource( 87 ), ExtResource( 106 ), ExtResource( 121 ), ExtResource( 129 ), ExtResource( 100 ), ExtResource( 108 ), ExtResource( 110 ), ExtResource( 120 ) ], +"loop": true, +"name": "boost-speed-right-04", +"speed": 50.0 +}, { +"frames": [ ExtResource( 5 ), ExtResource( 42 ), ExtResource( 35 ), ExtResource( 24 ), ExtResource( 8 ), ExtResource( 31 ), ExtResource( 30 ), ExtResource( 38 ), ExtResource( 10 ), ExtResource( 43 ), ExtResource( 41 ), ExtResource( 33 ), ExtResource( 44 ), ExtResource( 19 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 12 ), ExtResource( 45 ), ExtResource( 21 ) ], +"loop": true, +"name": "boost-speed-right-01", +"speed": 50.0 +}, { +"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], +"loop": true, +"name": "move-speed-left-01", "speed": 35.0 }, { -"frames": [ ExtResource( 167 ), ExtResource( 157 ), ExtResource( 158 ), ExtResource( 126 ), ExtResource( 90 ), ExtResource( 89 ), ExtResource( 97 ), ExtResource( 88 ), ExtResource( 98 ), ExtResource( 91 ), ExtResource( 125 ), ExtResource( 105 ), ExtResource( 82 ), ExtResource( 84 ), ExtResource( 92 ), ExtResource( 103 ), ExtResource( 122 ), ExtResource( 130 ), ExtResource( 104 ), ExtResource( 116 ) ], +"frames": [ ExtResource( 114 ), ExtResource( 128 ), ExtResource( 93 ), ExtResource( 107 ), ExtResource( 117 ), ExtResource( 102 ), ExtResource( 81 ), ExtResource( 118 ), ExtResource( 76 ), ExtResource( 115 ), ExtResource( 127 ), ExtResource( 123 ), ExtResource( 113 ), ExtResource( 77 ), ExtResource( 78 ), ExtResource( 124 ), ExtResource( 94 ), ExtResource( 112 ), ExtResource( 131 ), ExtResource( 95 ) ], "loop": true, -"name": "move-speed-right-02", -"speed": 35.0 +"name": "boost-speed-right-03", +"speed": 50.0 }, { "frames": [ ExtResource( 70 ), ExtResource( 49 ), ExtResource( 74 ), ExtResource( 75 ), ExtResource( 28 ), ExtResource( 52 ), ExtResource( 53 ), ExtResource( 55 ), ExtResource( 150 ), ExtResource( 156 ), ExtResource( 138 ), ExtResource( 161 ), ExtResource( 145 ), ExtResource( 148 ), ExtResource( 147 ), ExtResource( 133 ), ExtResource( 164 ), ExtResource( 134 ), ExtResource( 152 ), ExtResource( 160 ) ], "loop": true, @@ -252,21 +267,6 @@ animations = [ { "loop": true, "name": "boost-speed-right-02", "speed": 50.0 -}, { -"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], -"loop": true, -"name": "move-speed-left-01", -"speed": 35.0 -}, { -"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], -"loop": true, -"name": "boost-speed-left-01", -"speed": 50.0 -}, { -"frames": [ ExtResource( 114 ), ExtResource( 128 ), ExtResource( 93 ), ExtResource( 107 ), ExtResource( 117 ), ExtResource( 102 ), ExtResource( 81 ), ExtResource( 118 ), ExtResource( 76 ), ExtResource( 115 ), ExtResource( 127 ), ExtResource( 123 ), ExtResource( 113 ), ExtResource( 77 ), ExtResource( 78 ), ExtResource( 124 ), ExtResource( 94 ), ExtResource( 112 ), ExtResource( 131 ), ExtResource( 95 ) ], -"loop": true, -"name": "boost-speed-right-03", -"speed": 50.0 } ] [sub_resource type="RectangleShape2D" id=3] @@ -299,7 +299,7 @@ radius = 41.5403 animations = [ { "frames": [ ExtResource( 170 ) ], "loop": true, -"name": "03", +"name": "02", "speed": 5.0 }, { "frames": [ ExtResource( 27 ) ], @@ -307,15 +307,15 @@ animations = [ { "name": "01", "speed": 5.0 }, { +"frames": [ ExtResource( 170 ) ], +"loop": true, +"name": "03", +"speed": 5.0 +}, { "frames": [ ExtResource( 169 ) ], "loop": true, "name": "04", "speed": 5.0 -}, { -"frames": [ ExtResource( 170 ) ], -"loop": true, -"name": "02", -"speed": 5.0 } ] [node name="player" type="KinematicBody2D" groups=[ diff --git a/source/scenes/GUI/sinplayer_setup.tscn b/source/scenes/GUI/sinplayer_setup.tscn index 6b83b1e..9784d76 100644 --- a/source/scenes/GUI/sinplayer_setup.tscn +++ b/source/scenes/GUI/sinplayer_setup.tscn @@ -28,7 +28,7 @@ use_mipmaps = true use_filter = true font_data = ExtResource( 2 ) -[node name="network_setup" type="Control"] +[node name="network_setup2" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 1 ) diff --git a/source/scenes/OVERLAY/elements/HUD.tscn b/source/scenes/OVERLAY/elements/HUD.tscn new file mode 100644 index 0000000..2659417 --- /dev/null +++ b/source/scenes/OVERLAY/elements/HUD.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://source/assets/sprites/GUI/bar-background.png" type="Texture" id=1] +[ext_resource path="res://source/assets/sprites/GUI/bar-fill.png" type="Texture" id=2] +[ext_resource path="res://source/assets/scripts/ui_element_handlers/HUD.gd" type="Script" id=3] + +[node name="HUD" type="Node2D" groups=[ +"Net", +]] +script = ExtResource( 3 ) + +[node name="health_bar" type="TextureProgress" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -64.0 +margin_top = -20.0 +margin_right = 64.0 +margin_bottom = 20.0 +value = 100.0 +texture_under = ExtResource( 1 ) +texture_progress = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +}