From b4a6dadc433742cbe3e3ffea29f3bec9f476627f Mon Sep 17 00:00:00 2001 From: 2ndbeam <2ndbeam@disroot.org> Date: Sun, 27 Jul 2025 12:32:18 +0300 Subject: [PATCH] Weapon draw and holster --- .../guns/gangstaholder/gangstaholder.tres | 105 +++++++++++++++++- .../sprites/guns/gangstaholder/holster1.png | Bin 0 -> 411 bytes .../guns/gangstaholder/holster1.png.import | 34 ++++++ .../sprites/guns/gangstaholder/holster2.png | Bin 0 -> 271 bytes .../guns/gangstaholder/holster2.png.import | 34 ++++++ .../sprites/guns/gangstaholder/holster3.png | Bin 0 -> 179 bytes .../guns/gangstaholder/holster3.png.import | 34 ++++++ .../sprites/guns/placeholder/holster1.png | Bin 0 -> 379 bytes .../guns/placeholder/holster1.png.import | 34 ++++++ .../sprites/guns/placeholder/holster2.png | Bin 0 -> 275 bytes .../guns/placeholder/holster2.png.import | 34 ++++++ .../sprites/guns/placeholder/holster3.png | Bin 0 -> 181 bytes .../guns/placeholder/holster3.png.import | 34 ++++++ .../sprites/guns/placeholder/placeholder.tres | 105 +++++++++++++++++- base/scenes/player.tscn | 2 +- base/scripts/player/command_queue.gd | 2 +- base/scripts/player/player.gd | 17 ++- base/scripts/weapons/weapon_base.gd | 2 +- 18 files changed, 428 insertions(+), 9 deletions(-) create mode 100644 base/assets/sprites/guns/gangstaholder/holster1.png create mode 100644 base/assets/sprites/guns/gangstaholder/holster1.png.import create mode 100644 base/assets/sprites/guns/gangstaholder/holster2.png create mode 100644 base/assets/sprites/guns/gangstaholder/holster2.png.import create mode 100644 base/assets/sprites/guns/gangstaholder/holster3.png create mode 100644 base/assets/sprites/guns/gangstaholder/holster3.png.import create mode 100644 base/assets/sprites/guns/placeholder/holster1.png create mode 100644 base/assets/sprites/guns/placeholder/holster1.png.import create mode 100644 base/assets/sprites/guns/placeholder/holster2.png create mode 100644 base/assets/sprites/guns/placeholder/holster2.png.import create mode 100644 base/assets/sprites/guns/placeholder/holster3.png create mode 100644 base/assets/sprites/guns/placeholder/holster3.png.import diff --git a/base/assets/sprites/guns/gangstaholder/gangstaholder.tres b/base/assets/sprites/guns/gangstaholder/gangstaholder.tres index 2af4c99..bf6652c 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,18 @@ 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_8sdfx"] resource_name = "shoot" @@ -106,10 +121,98 @@ tracks/0/keys = { "values": [ExtResource("11_fahg7")] } +[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_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" +}] +} + [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 0000000000000000000000000000000000000000..d1394f0deeea09eccacc9e21962fc027a409efe0 GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O{!3HGlTK@_GDaPU;cPEB*=VV?2*`b~;jv*Cu z-rh9yJM199dZG1{t~tY{3rZIiE*6RM9SzNxm@y$EvuOv*q}>6Mjs-r4-}SuxuBCld z>+{$0M^l)9#$kXX)?Ic7g67VTd)xMW`}gNt?ib%`K6~@~L;g)|4=jE$WE+Zg@vtmd z*rVtX>FsS``o`yaBijm<%M+HLc{HK8Yz5~g7L}ul)AWitVi+5ZbXp&B#&oaoUdZO5 zu!+;e!MUE-Y7wW&fm4|c$2M(kV9Ut4T$*~h^y2X!ix`>i#NB!0rI~vByS<%!)5j0L zZsh1mDRiy~6KG&jTF=7BQIa7qv93dmMd82=+5P+Zw{SHwu-yLkcl|^DckA?5w>vO2 zZMpMhIfp~h)@TJ+uIqUf))w0Y=FP2{66CeBzG|hBHtz(7C-)CZDa>4XYW+nfrU?P3 v1vngn);cAy&sg~XPpSfg=ha)kzSlDCsfq~{`ugD+C~Q1k{an^LB{Ts50VAfK literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..724d1fe2b216b42e1513d9417074128df0552f37 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O{!3HGlTK@_GDaPU;cPEB*=VV?2IVU|`978JR zyuG=Rx5+`GEpbBYnL+L$dGCF)8?>ZxUc&Evx>^~!jpR+^1ZMEYQql9 zE-hCNxS3f0>&)ZpzvUvkV;?R1qgOYHp-b37Imn-dQAEAr5lg@v5WkQq!{d>!14Hjk zD<;O4C3b)Rfy6ZY7#trPELpD5Fy-{eH~9&nYjx_>8`eBG(S2MfF)jPF1B*aG?VVqF srEDJaSXl(7*>P|wWZYxA7JcyAzMwMMr8Nr`pMsp`>FVdQ&MBb@0A>DMFaQ7m literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d9cd56a00c53fbd5d9dcb51bf6aae219a3020211 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O{!3HGlTK@_GDaPU;cPEB*=VV?2Ik}!Ljv*Cu z-d@?r+2A1Ha`Cd)5ve!(nX(0}FNXN=y3P2$sry@ky){TXUNGP1CI6PF>2Is{^%wWQ wN%G^#{T^30iQyFI1NESAM~0^?0e%cm^Ug0|`@!DTPO-D2CH$bSCmjaYfprtUk;6Q(nW z`7sE0{&LW0n7HWO*W(-sPJ-c#j4CrOYbi9e3LiMcnUHjG9y7~^0w#}u@UwNX)71O_ zzjR0!a9EUk{i$4{5R=D+cV?@DwH;KZ?_}@DiJkV>t3bkKcIL8;EE66)e75iYoxJ-cW8!OTtiOHv^=%R5<(!&67su}{`qSp70`=ek2R44% z%)VpNs+?s%tL?WOtiONzCUeZuqL0an4a`RcS{a1Y8;)=)6f$|le7HVk#vki1tu?Y+ zm{t53I)xATCGGh9UkNCmz#e+jr!;Vm?J+H;8=mHU>HQnJ7|Jg2=jO3{-1z*j;}gRS z&V=1RAMG!1+@)dX|AJ-1!B6MkAN!bn(YgNtYn+|Tni{StCqXXsboFyt=akR{0Kn>I AE&u=k literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e69bcbdce28a97068dd9dd75f81a6c3091648d43 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O{!3HGlTK@_GDaPU;cPEB*=VV?2Ir*M0jv*Cu z-d@_s+hD-sdT@fLfboX^EHfE5a)x+xOgqGOzx3t4IoG9tO7VjAJ{Ot)WzD?)_}{&6 z6F*(kbg#Yp`Ln*H@{5bi9jXnFSOVrSbO}2Ys(;ht;9V2GE)Qgwr>mdKI;Vst08lkH Au>b%7 literal 0 HcmV?d00001 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..a5f5dc7 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,18 @@ 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_8sdfx"] resource_name = "shoot" @@ -106,10 +121,98 @@ tracks/0/keys = { "values": [ExtResource("1_yheqn")] } +[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_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" +}] +} + [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..422d60b 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"] [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://dxmu14ucuokfl" path="res://base/assets/sprites/guns/placeholder/holster3.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"] 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..8585a53 100644 --- a/base/scripts/player/player.gd +++ b/base/scripts/player/player.gd @@ -6,6 +6,7 @@ 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" @@ -49,13 +50,12 @@ func _process(_delta: float) -> void: # Slot changing logic var slot_action = false - var slot_id = 0 for slot in slot_actions.size(): if Input.is_action_just_pressed(slot_actions[slot]): slot_action = true - slot_id = slot + queue_data['slot_id'] = slot if slot_action: - weapons.select_slot(slot_id) + push_copied_command(CommandQueue.Command.HOLSTER_WEAPON, weapon_sides) # Stop firing logic if not current_weapon.fire_mode is SingleFireMode: @@ -109,7 +109,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 +193,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 +208,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