diff --git a/base/assets/sprites/guns/gangstaholder/gangstaholder.tres b/base/assets/sprites/guns/gangstaholder/gangstaholder.tres index 2af4c99..d4c2296 100644 --- a/base/assets/sprites/guns/gangstaholder/gangstaholder.tres +++ b/base/assets/sprites/guns/gangstaholder/gangstaholder.tres @@ -1,4 +1,4 @@ -[gd_resource type="AnimationLibrary" load_steps=16 format=3 uid="uid://57ng8lwnt2k4"] +[gd_resource type="AnimationLibrary" load_steps=21 format=3 uid="uid://57ng8lwnt2k4"] [ext_resource type="Texture2D" uid="uid://cy3ija8ratxjq" path="res://base/assets/sprites/guns/gangstaholder/shoot1.png" id="1_rooin"] [ext_resource type="Texture2D" uid="uid://cd4m4g44rmwrc" path="res://base/assets/sprites/guns/gangstaholder/shoot2.png" id="2_57rwx"] @@ -11,6 +11,9 @@ [ext_resource type="Texture2D" uid="uid://cvw7h7fsfdjln" path="res://base/assets/sprites/guns/gangstaholder/reload6.png" id="9_y5ueg"] [ext_resource type="Texture2D" uid="uid://ditbn0dkyjj6e" path="res://base/assets/sprites/guns/gangstaholder/reload7.png" id="10_tf0tm"] [ext_resource type="Texture2D" uid="uid://dftqlo1lltx5f" path="res://base/assets/sprites/guns/gangstaholder/static.png" id="11_fahg7"] +[ext_resource type="Texture2D" uid="uid://dooqsempiufkq" path="res://base/assets/sprites/guns/gangstaholder/holster1.png" id="12_vwudn"] +[ext_resource type="Texture2D" uid="uid://pwe72f0xx10w" path="res://base/assets/sprites/guns/gangstaholder/holster2.png" id="13_p7jc5"] +[ext_resource type="Texture2D" uid="uid://rbxq3ro5l2ec" path="res://base/assets/sprites/guns/gangstaholder/holster3.png" id="14_t6dve"] [sub_resource type="Animation" id="Animation_i1xqq"] length = 0.001 @@ -26,6 +29,61 @@ tracks/0/keys = { "update": 1, "values": [null] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_vwudn"] +resource_name = "draw" +length = 0.30001 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [ExtResource("14_t6dve"), ExtResource("13_p7jc5"), ExtResource("12_vwudn")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("../..") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.3), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"finish_task" +}] +} [sub_resource type="Animation" id="Animation_8sdfx"] resource_name = "shoot" @@ -58,6 +116,49 @@ tracks/1/keys = { }] } +[sub_resource type="Animation" id="Animation_5sdma"] +resource_name = "holster" +length = 0.40001 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-7.45058e-09, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [ExtResource("12_vwudn"), ExtResource("13_p7jc5"), ExtResource("14_t6dve")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(-7.45058e-09, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [true, true, false] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("../..") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.4), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"finish_task" +}] +} + [sub_resource type="Animation" id="Animation_08xoc"] resource_name = "reload" length = 1.10001 @@ -109,7 +210,9 @@ tracks/0/keys = { [resource] _data = { &"RESET": SubResource("Animation_i1xqq"), +&"draw": SubResource("Animation_vwudn"), &"fire": SubResource("Animation_8sdfx"), +&"holster": SubResource("Animation_5sdma"), &"reload": SubResource("Animation_08xoc"), &"static": SubResource("Animation_ma1q3") } diff --git a/base/assets/sprites/guns/gangstaholder/holster1.png b/base/assets/sprites/guns/gangstaholder/holster1.png new file mode 100644 index 0000000..d1394f0 Binary files /dev/null and b/base/assets/sprites/guns/gangstaholder/holster1.png differ diff --git a/base/assets/sprites/guns/gangstaholder/holster1.png.import b/base/assets/sprites/guns/gangstaholder/holster1.png.import new file mode 100644 index 0000000..f14be4f --- /dev/null +++ b/base/assets/sprites/guns/gangstaholder/holster1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dooqsempiufkq" +path="res://.godot/imported/holster1.png-ed894e9f91eb85e44cb846add92792c6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://base/assets/sprites/guns/gangstaholder/holster1.png" +dest_files=["res://.godot/imported/holster1.png-ed894e9f91eb85e44cb846add92792c6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/base/assets/sprites/guns/gangstaholder/holster2.png b/base/assets/sprites/guns/gangstaholder/holster2.png new file mode 100644 index 0000000..724d1fe Binary files /dev/null and b/base/assets/sprites/guns/gangstaholder/holster2.png differ diff --git a/base/assets/sprites/guns/gangstaholder/holster2.png.import b/base/assets/sprites/guns/gangstaholder/holster2.png.import new file mode 100644 index 0000000..c32d6c1 --- /dev/null +++ b/base/assets/sprites/guns/gangstaholder/holster2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://pwe72f0xx10w" +path="res://.godot/imported/holster2.png-af3825befe4ad6e7b2592f029e180b38.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://base/assets/sprites/guns/gangstaholder/holster2.png" +dest_files=["res://.godot/imported/holster2.png-af3825befe4ad6e7b2592f029e180b38.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/base/assets/sprites/guns/gangstaholder/holster3.png b/base/assets/sprites/guns/gangstaholder/holster3.png new file mode 100644 index 0000000..d9cd56a Binary files /dev/null and b/base/assets/sprites/guns/gangstaholder/holster3.png differ diff --git a/base/assets/sprites/guns/gangstaholder/holster3.png.import b/base/assets/sprites/guns/gangstaholder/holster3.png.import new file mode 100644 index 0000000..0117215 --- /dev/null +++ b/base/assets/sprites/guns/gangstaholder/holster3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rbxq3ro5l2ec" +path="res://.godot/imported/holster3.png-b07ec38b6bf6862ded6903ac4ceb4c72.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://base/assets/sprites/guns/gangstaholder/holster3.png" +dest_files=["res://.godot/imported/holster3.png-b07ec38b6bf6862ded6903ac4ceb4c72.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/base/assets/sprites/guns/placeholder/holster1.png b/base/assets/sprites/guns/placeholder/holster1.png new file mode 100644 index 0000000..303b5de Binary files /dev/null and b/base/assets/sprites/guns/placeholder/holster1.png differ diff --git a/base/assets/sprites/guns/placeholder/holster1.png.import b/base/assets/sprites/guns/placeholder/holster1.png.import new file mode 100644 index 0000000..eab81cb --- /dev/null +++ b/base/assets/sprites/guns/placeholder/holster1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3icyo6ynxk20" +path="res://.godot/imported/holster1.png-2602c55778f79990712e5c75aa06d593.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://base/assets/sprites/guns/placeholder/holster1.png" +dest_files=["res://.godot/imported/holster1.png-2602c55778f79990712e5c75aa06d593.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/base/assets/sprites/guns/placeholder/holster2.png b/base/assets/sprites/guns/placeholder/holster2.png new file mode 100644 index 0000000..05984b6 Binary files /dev/null and b/base/assets/sprites/guns/placeholder/holster2.png differ diff --git a/base/assets/sprites/guns/placeholder/holster2.png.import b/base/assets/sprites/guns/placeholder/holster2.png.import new file mode 100644 index 0000000..b6a463c --- /dev/null +++ b/base/assets/sprites/guns/placeholder/holster2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5b28gs37bo7a" +path="res://.godot/imported/holster2.png-dc76912fc373334c61a5388a89263a42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://base/assets/sprites/guns/placeholder/holster2.png" +dest_files=["res://.godot/imported/holster2.png-dc76912fc373334c61a5388a89263a42.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/base/assets/sprites/guns/placeholder/holster3.png b/base/assets/sprites/guns/placeholder/holster3.png new file mode 100644 index 0000000..e69bcbd Binary files /dev/null and b/base/assets/sprites/guns/placeholder/holster3.png differ diff --git a/base/assets/sprites/guns/placeholder/holster3.png.import b/base/assets/sprites/guns/placeholder/holster3.png.import new file mode 100644 index 0000000..803937e --- /dev/null +++ b/base/assets/sprites/guns/placeholder/holster3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxmu14ucuokfl" +path="res://.godot/imported/holster3.png-909df3f4424bd631b47bb34bfa0145a6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://base/assets/sprites/guns/placeholder/holster3.png" +dest_files=["res://.godot/imported/holster3.png-909df3f4424bd631b47bb34bfa0145a6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/base/assets/sprites/guns/placeholder/placeholder.tres b/base/assets/sprites/guns/placeholder/placeholder.tres index 8bb08dc..5c1328f 100644 --- a/base/assets/sprites/guns/placeholder/placeholder.tres +++ b/base/assets/sprites/guns/placeholder/placeholder.tres @@ -1,4 +1,4 @@ -[gd_resource type="AnimationLibrary" load_steps=16 format=3 uid="uid://cw8bt4hqxpk55"] +[gd_resource type="AnimationLibrary" load_steps=21 format=3 uid="uid://cw8bt4hqxpk55"] [ext_resource type="Texture2D" uid="uid://cf7avgppv4kfk" path="res://base/assets/sprites/guns/placeholder/static.png" id="1_yheqn"] [ext_resource type="Texture2D" uid="uid://ij02cx0xdckw" path="res://base/assets/sprites/guns/placeholder/reload1.png" id="5_ve5jf"] @@ -11,6 +11,9 @@ [ext_resource type="Texture2D" uid="uid://b55h6w4km2c3u" path="res://base/assets/sprites/guns/placeholder/reload6.png" id="10_x8exi"] [ext_resource type="Texture2D" uid="uid://bp1frp3sm8bic" path="res://base/assets/sprites/guns/placeholder/shoot3.png" id="11_0d256"] [ext_resource type="Texture2D" uid="uid://b4fp0oo8qcino" path="res://base/assets/sprites/guns/placeholder/reload7.png" id="11_bkso5"] +[ext_resource type="Texture2D" uid="uid://3icyo6ynxk20" path="res://base/assets/sprites/guns/placeholder/holster1.png" id="12_y82fu"] +[ext_resource type="Texture2D" uid="uid://5b28gs37bo7a" path="res://base/assets/sprites/guns/placeholder/holster2.png" id="13_7aydm"] +[ext_resource type="Texture2D" uid="uid://dxmu14ucuokfl" path="res://base/assets/sprites/guns/placeholder/holster3.png" id="14_x8exi"] [sub_resource type="Animation" id="Animation_i1xqq"] length = 0.001 @@ -26,6 +29,61 @@ tracks/0/keys = { "update": 1, "values": [null] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_y82fu"] +resource_name = "draw" +length = 0.30001 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [ExtResource("14_x8exi"), ExtResource("13_7aydm"), ExtResource("12_y82fu")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("../..") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.3), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"finish_task" +}] +} [sub_resource type="Animation" id="Animation_8sdfx"] resource_name = "shoot" @@ -58,6 +116,49 @@ tracks/1/keys = { }] } +[sub_resource type="Animation" id="Animation_bkso5"] +resource_name = "holster" +length = 0.40001 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(7.45058e-09, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [ExtResource("12_y82fu"), ExtResource("13_7aydm"), ExtResource("14_x8exi")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(7.45058e-09, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [true, true, false] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("../..") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.4), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"finish_task" +}] +} + [sub_resource type="Animation" id="Animation_08xoc"] resource_name = "reload" length = 1.10001 @@ -109,7 +210,9 @@ tracks/0/keys = { [resource] _data = { &"RESET": SubResource("Animation_i1xqq"), +&"draw": SubResource("Animation_y82fu"), &"fire": SubResource("Animation_8sdfx"), +&"holster": SubResource("Animation_bkso5"), &"reload": SubResource("Animation_08xoc"), &"static": SubResource("Animation_ma1q3") } diff --git a/base/scenes/player.tscn b/base/scenes/player.tscn index ade45d6..17c253d 100644 --- a/base/scenes/player.tscn +++ b/base/scenes/player.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=8 format=3 uid="uid://dwx5tcatj35gu"] +[gd_scene load_steps=12 format=3 uid="uid://dwx5tcatj35gu"] [ext_resource type="Script" uid="uid://dts8lbivkgsmj" path="res://base/scripts/player/player.gd" id="1_1w3ab"] -[ext_resource type="Texture2D" uid="uid://cy3ija8ratxjq" path="res://base/assets/sprites/guns/gangstaholder/shoot1.png" id="2_gt0rj"] +[ext_resource type="Texture2D" uid="uid://cf7avgppv4kfk" path="res://base/assets/sprites/guns/placeholder/static.png" id="2_gt0rj"] [ext_resource type="PackedScene" uid="uid://bb6ovrbusyxpi" path="res://base/scenes/weapons/weapon_base.tscn" id="2_ma1q3"] [ext_resource type="Script" uid="uid://byhp4pklbjltn" path="res://base/scripts/player/weapon_container.gd" id="3_1w3ab"] [ext_resource type="Script" uid="uid://diu6eno2ag6ga" path="res://base/scripts/player/weapon_slot.gd" id="4_gt0rj"] @@ -9,6 +9,62 @@ [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jjqxs"] +[sub_resource type="Animation" id="Animation_8sdfx"] +resource_name = "default" +length = 1.33334 +loop_mode = 1 +step = 0.0166667 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("HUD/Weapon:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.333333, 0.666667, 1, 1.33333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(16, 32), Vector2(0, 0), Vector2(32, 32), Vector2(0, 0)] +} + +[sub_resource type="Animation" id="Animation_gt0rj"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("HUD/Weapon:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} + +[sub_resource type="Animation" id="Animation_juj2l"] +resource_name = "static" +step = 0.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("HUD/Weapon:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.00466507), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_juj2l"] +_data = { +&"RESET": SubResource("Animation_gt0rj"), +&"default": SubResource("Animation_8sdfx"), +&"static": SubResource("Animation_juj2l") +} + [node name="Player" type="CharacterBody3D"] collision_layer = 2 collision_mask = 3 @@ -69,3 +125,9 @@ metadata/_custom_type_script = "uid://diu6eno2ag6ga" [node name="Tertiary" type="Node3D" parent="WeaponContainer"] script = ExtResource("4_gt0rj") metadata/_custom_type_script = "uid://diu6eno2ag6ga" + +[node name="MovementPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_juj2l") +} +blend_times = [&"goto_static", &"static", 0.5] diff --git a/base/scripts/player/command_queue.gd b/base/scripts/player/command_queue.gd index ef12870..78ecb96 100644 --- a/base/scripts/player/command_queue.gd +++ b/base/scripts/player/command_queue.gd @@ -6,10 +6,10 @@ class_name CommandQueue ## Commands that can be pushed to queue enum Command { NONE, - TAKE_WEAPON, FIRE, STOP_FIRING, RELOAD, + DRAW_WEAPON, HOLSTER_WEAPON, TAKE_ZAZA, LIGHT_ZAZA, diff --git a/base/scripts/player/player.gd b/base/scripts/player/player.gd index beeac61..5364d73 100644 --- a/base/scripts/player/player.gd +++ b/base/scripts/player/player.gd @@ -6,19 +6,23 @@ extends CharacterBody3D @export var horizontal_sensivity = 0.005 var queue: CommandQueue = CommandQueue.new() +var queue_data: Dictionary = {} @onready var camera: Camera3D = $"Camera" @onready var weapon_player: AnimationPlayer = $"HUD/Weapon/AnimationPlayer" +@onready var movement_player: AnimationPlayer = $"MovementPlayer" @onready var weapons: WeaponContainer = $"WeaponContainer" # Placeholder UI @onready var ammo_label: Label = $"HUD/Ammo" -var current_weapon:Weapon +var current_weapon: Weapon var slot_actions: Array[StringName] = [ "slot_primary", "slot_secondary", "slot_tertiary" ] func _ready() -> void: + movement_player.play('static') + queue.command_pushed.connect(on_queue_command_pushed) queue.command_popped.connect(on_queue_command_popped) queue.command_started.connect(on_queue_command_started) @@ -54,8 +58,10 @@ func _process(_delta: float) -> void: if Input.is_action_just_pressed(slot_actions[slot]): slot_action = true slot_id = slot - if slot_action: - weapons.select_slot(slot_id) + if slot_action and weapons.slots[slot_id].has_weapon \ + and weapons.current_slot != weapons.slots[slot_id]: + queue_data['slot_id'] = slot_id + push_copied_command(CommandQueue.Command.HOLSTER_WEAPON, weapon_sides) # Stop firing logic if not current_weapon.fire_mode is SingleFireMode: @@ -82,6 +88,12 @@ func _physics_process(delta: float) -> void: target_velocity.y -= fall_acceleration * delta velocity = target_velocity + + if velocity == Vector3.ZERO and movement_player.current_animation == 'default': + movement_player.play('static') + elif movement_player.current_animation == 'static': + movement_player.play('default') + move_and_slide() func _input(event): @@ -109,7 +121,8 @@ func on_weapon_slot_selected(): current_weapon.fire_allowed.connect(finish_task) weapon_player.add_animation_library("current", current_weapon.animation_library) - weapon_player.play("current/static") + + push_copied_command(CommandQueue.Command.DRAW_WEAPON, current_weapon.uses_hands) update_ammo_label() @@ -192,6 +205,10 @@ func handle_ended_right_command(command: CommandQueue.Command): weapon_player.play('current/static') current_weapon.reload() update_ammo_label() + CommandQueue.Command.HOLSTER_WEAPON: + weapons.select_slot(queue_data['slot_id']) + CommandQueue.Command.DRAW_WEAPON: + weapon_player.play('current/static') func handle_started_left_command(command: CommandQueue.Command): match command: @@ -203,6 +220,10 @@ func handle_started_right_command(command: CommandQueue.Command): current_weapon.request_fire() CommandQueue.Command.STOP_FIRING: queue.pop() + CommandQueue.Command.DRAW_WEAPON: + weapon_player.play('current/draw') + CommandQueue.Command.HOLSTER_WEAPON: + weapon_player.play('current/holster') func handle_current_left_command(command: CommandQueue.Command): match command: diff --git a/base/scripts/weapons/weapon_base.gd b/base/scripts/weapons/weapon_base.gd index 263e23e..226ef40 100644 --- a/base/scripts/weapons/weapon_base.gd +++ b/base/scripts/weapons/weapon_base.gd @@ -15,7 +15,7 @@ var ammo: int @export var fire_mode: BaseFireMode -## Weapon animation library. Should contain "static", "fire", "reload" animations +## Weapon animation library. Should contain "static", "fire", "reload", "holster", "draw" animations @export var animation_library: AnimationLibrary var is_firing: bool = false