diff --git a/player/player.gd b/player/player.gd index 6486822..d731eef 100644 --- a/player/player.gd +++ b/player/player.gd @@ -41,7 +41,7 @@ var speed_mul := 1. var gun_index := 0: set(v): gun_index = v % guns.size() - %GunLabel.text = gun.name + %WeaponUI.active_weapon = gun_index var gun: Gun: get: return guns[gun_index] diff --git a/player/player.tscn b/player/player.tscn index 6e8e68c..3c6be79 100644 --- a/player/player.tscn +++ b/player/player.tscn @@ -4,9 +4,13 @@ [ext_resource type="Script" uid="uid://fe3m1ax0w2lh" path="res://player/player_hud.gd" id="2_g6k8r"] [ext_resource type="Script" uid="uid://cjdxibg3pnans" path="res://player/score_label.gd" id="2_onrkg"] [ext_resource type="Script" uid="uid://fv1n5noqdfg2" path="res://player/guns/basic_gun.gd" id="3_g1dw6"] +[ext_resource type="Script" uid="uid://3t2vgdd22w6g" path="res://player/weapon_ui.gd" id="4_c35mf"] +[ext_resource type="Texture2D" uid="uid://cxig6u6fiw1dx" path="res://ui/weapons/sharpshooter.png" id="4_e7oew"] [ext_resource type="Script" uid="uid://b87cyvu2m5b1k" path="res://player/guns/mini_gun.gd" id="4_yw30f"] [ext_resource type="AudioStream" uid="uid://djrp7mwg3pbrq" path="res://sfx/freesound_community-meaty-gunshot-101257.mp3" id="5_2ieo8"] +[ext_resource type="Texture2D" uid="uid://cl05ee526nm3u" path="res://ui/weapons/minigun.png" id="5_c35mf"] [ext_resource type="Script" uid="uid://ftrngxkkycl1" path="res://player/guns/mortar.gd" id="5_qjkh3"] +[ext_resource type="Texture2D" uid="uid://bekqcc0dsvvc7" path="res://ui/weapons/explosion.png" id="6_65viv"] [ext_resource type="Script" uid="uid://urxp3pg8g2mh" path="res://player/health_bar.gd" id="7_boad6"] [ext_resource type="AudioStream" uid="uid://b42aa4bhyfv12" path="res://sfx/mortar_shot.wav" id="8_ebec5"] [ext_resource type="Shader" uid="uid://cf3h3knluytmm" path="res://player/hp_outline.gdshader" id="8_rgyib"] @@ -22,6 +26,17 @@ [sub_resource type="SphereMesh" id="SphereMesh_4flbx"] +[sub_resource type="Gradient" id="Gradient_x7c3f"] +offsets = PackedFloat32Array(0.44044322, 0.4903047, 0.53462607, 0.5734072) +colors = PackedColorArray(1, 1, 1, 0.5529412, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_bjvpn"] +gradient = SubResource("Gradient_x7c3f") +width = 96 +height = 96 +fill = 1 +fill_from = Vector2(0.5, 0.5) + [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2ieo8"] random_pitch = 1.0594631 random_volume_offset_db = 1.0 @@ -128,19 +143,6 @@ offset_right = 196.0 offset_bottom = -4.0 text = "Stamina" -[node name="GunLabel" type="Label" parent="PlayerHUD" unique_id=220052210] -unique_name_in_owner = true -anchors_preset = 12 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_top = -23.0 -grow_horizontal = 2 -grow_vertical = 0 -theme_override_font_sizes/font_size = 32 -text = "BasicGun" -horizontal_alignment = 2 - [node name="Score" type="Control" parent="PlayerHUD" unique_id=1241180984] layout_mode = 3 anchors_preset = 5 @@ -165,6 +167,77 @@ theme_override_font_sizes/font_size = 96 text = "14" horizontal_alignment = 1 +[node name="WeaponUI" type="Control" parent="PlayerHUD" unique_id=1846927607] +unique_name_in_owner = true +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("4_c35mf") + +[node name="Sprite2D" type="Sprite2D" parent="PlayerHUD/WeaponUI" unique_id=622800622] +self_modulate = Color(1, 0.8333334, 0, 1) +position = Vector2(97.78559, 597.8928) +scale = Vector2(0.8906935, 0.85193384) +texture = SubResource("GradientTexture2D_bjvpn") + +[node name="Sharpshooter" type="Sprite2D" parent="PlayerHUD/WeaponUI/Sprite2D" unique_id=1113290106] +position = Vector2(1.045371, -1.3996036) +scale = Vector2(0.2772135, 0.28815705) +texture = ExtResource("4_e7oew") + +[node name="Label" type="Label" parent="PlayerHUD/WeaponUI/Sprite2D" unique_id=1403203983] +offset_left = 19.96259 +offset_top = 4.274618 +offset_right = 59.96259 +offset_bottom = 43.27462 +scale = Vector2(1.0077233, 1.059216) +theme_override_constants/outline_size = 7 +theme_override_font_sizes/font_size = 28 +text = "1" + +[node name="Sprite2D2" type="Sprite2D" parent="PlayerHUD/WeaponUI" unique_id=1270801051] +self_modulate = Color(0.096800014, 0.88, 0.21427989, 1) +position = Vector2(198.7533, 597.8928) +scale = Vector2(0.8906935, 0.85193384) +texture = SubResource("GradientTexture2D_bjvpn") + +[node name="Minigun" type="Sprite2D" parent="PlayerHUD/WeaponUI/Sprite2D2" unique_id=174416607] +position = Vector2(0.9441545, -1.399601) +scale = Vector2(0.20828299, 0.20828296) +texture = ExtResource("5_c35mf") + +[node name="Label2" type="Label" parent="PlayerHUD/WeaponUI/Sprite2D2" unique_id=2073572324] +offset_left = 21.376274 +offset_top = 4.2746277 +offset_right = 61.376274 +offset_bottom = 43.274628 +scale = Vector2(1.0077233, 1.059216) +theme_override_constants/outline_size = 7 +theme_override_font_sizes/font_size = 28 +text = "2" + +[node name="Sprite2D3" type="Sprite2D" parent="PlayerHUD/WeaponUI" unique_id=2102311935] +self_modulate = Color(1, 0.22000003, 0.22000003, 1) +position = Vector2(303.00003, 598.0571) +scale = Vector2(0.8906933, 0.8519337) +texture = SubResource("GradientTexture2D_bjvpn") + +[node name="Label3" type="Label" parent="PlayerHUD/WeaponUI/Sprite2D3" unique_id=1175081439] +offset_left = 22.959694 +offset_top = 4.138611 +offset_right = 62.959694 +offset_bottom = 43.13861 +scale = Vector2(1.0077233, 1.059216) +theme_override_constants/outline_size = 7 +theme_override_font_sizes/font_size = 28 +text = "3" + +[node name="Explosion" type="Sprite2D" parent="PlayerHUD/WeaponUI/Sprite2D3" unique_id=1522295851] +position = Vector2(-1.4162259, -1.4806914) +scale = Vector2(0.2141057, 0.21290459) +texture = ExtResource("6_65viv") + [node name="Guns" type="Node3D" parent="." unique_id=2018109083] [node name="Sharpshooter" type="Node3D" parent="Guns" unique_id=1677055720] diff --git a/player/weapon_ui.gd b/player/weapon_ui.gd new file mode 100644 index 0000000..e12790b --- /dev/null +++ b/player/weapon_ui.gd @@ -0,0 +1,29 @@ +class_name WeaponUI +extends Control + +const DIFF = 25 +const TIME = 0.2 + +var active_weapon := 0: + set(v): + if v == active_weapon: return + + get_child(active_weapon).create_tween() \ + .set_trans(Tween.TRANS_QUAD) \ + .set_ease(Tween.EASE_OUT) \ + .tween_property(get_child(active_weapon), "position", initial_positions[active_weapon], TIME) + + active_weapon = v + + get_child(v).create_tween() \ + .set_trans(Tween.TRANS_QUAD) \ + .set_ease(Tween.EASE_OUT) \ + .tween_property(get_child(v), "position", initial_positions[v] + Vector2.UP * DIFF, TIME) +var initial_positions: PackedVector2Array + +func _ready() -> void: + for child in get_children(): + initial_positions.push_back(child.position) + + get_child(active_weapon).position += Vector2.UP * DIFF + diff --git a/player/weapon_ui.gd.uid b/player/weapon_ui.gd.uid new file mode 100644 index 0000000..347b40b --- /dev/null +++ b/player/weapon_ui.gd.uid @@ -0,0 +1 @@ +uid://3t2vgdd22w6g diff --git a/ui/weapons/explosion.png b/ui/weapons/explosion.png new file mode 100644 index 0000000..20f5b80 Binary files /dev/null and b/ui/weapons/explosion.png differ diff --git a/ui/weapons/explosion.png.import b/ui/weapons/explosion.png.import new file mode 100644 index 0000000..9a33feb --- /dev/null +++ b/ui/weapons/explosion.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bekqcc0dsvvc7" +path="res://.godot/imported/explosion.png-05e8eb4f65eeb6e2985911aba7164e1b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/weapons/explosion.png" +dest_files=["res://.godot/imported/explosion.png-05e8eb4f65eeb6e2985911aba7164e1b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/ui/weapons/explosion.png~ b/ui/weapons/explosion.png~ new file mode 100644 index 0000000..90685e8 Binary files /dev/null and b/ui/weapons/explosion.png~ differ diff --git a/ui/weapons/minigun.png b/ui/weapons/minigun.png new file mode 100644 index 0000000..6a3c420 Binary files /dev/null and b/ui/weapons/minigun.png differ diff --git a/ui/weapons/minigun.png.import b/ui/weapons/minigun.png.import new file mode 100644 index 0000000..29e345f --- /dev/null +++ b/ui/weapons/minigun.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl05ee526nm3u" +path="res://.godot/imported/minigun.png-08566ee23e498dc24d41b1aac0912057.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/weapons/minigun.png" +dest_files=["res://.godot/imported/minigun.png-08566ee23e498dc24d41b1aac0912057.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/ui/weapons/sharpshooter.png b/ui/weapons/sharpshooter.png new file mode 100644 index 0000000..1350309 Binary files /dev/null and b/ui/weapons/sharpshooter.png differ diff --git a/ui/weapons/sharpshooter.png.import b/ui/weapons/sharpshooter.png.import new file mode 100644 index 0000000..c915e32 --- /dev/null +++ b/ui/weapons/sharpshooter.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxig6u6fiw1dx" +path="res://.godot/imported/sharpshooter.png-a576cdc8e64e9bc56250ceb063bb1cdb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/weapons/sharpshooter.png" +dest_files=["res://.godot/imported/sharpshooter.png-a576cdc8e64e9bc56250ceb063bb1cdb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1