Slot selection and non-working auto weapon

This commit is contained in:
Alexey 2025-07-26 14:18:13 +03:00
commit 08d0859728
26 changed files with 528 additions and 4 deletions

View file

@ -0,0 +1,118 @@
[gd_resource type="AnimationLibrary" load_steps=16 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"]
[ext_resource type="Texture2D" uid="uid://bq6u2xb34xf0p" path="res://base/assets/sprites/guns/gangstaholder/shoot3.png" id="3_eqg6o"]
[ext_resource type="Texture2D" uid="uid://d3ys0jdfd5uxl" path="res://base/assets/sprites/guns/gangstaholder/reload1.png" id="4_vwudn"]
[ext_resource type="Texture2D" uid="uid://bkpthumpkpxh5" path="res://base/assets/sprites/guns/gangstaholder/reload2.png" id="5_p7jc5"]
[ext_resource type="Texture2D" uid="uid://bhoj5jfr2bqjo" path="res://base/assets/sprites/guns/gangstaholder/reload3.png" id="6_t6dve"]
[ext_resource type="Texture2D" uid="uid://b33s3psoy6k03" path="res://base/assets/sprites/guns/gangstaholder/reload4.png" id="7_5sdma"]
[ext_resource type="Texture2D" uid="uid://hyr3s50x4fsk" path="res://base/assets/sprites/guns/gangstaholder/reload5.png" id="8_2gfsp"]
[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"]
[sub_resource type="Animation" id="Animation_i1xqq"]
length = 0.001
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),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [null]
}
[sub_resource type="Animation" id="Animation_8sdfx"]
resource_name = "shoot"
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("1_rooin"), ExtResource("2_57rwx"), ExtResource("3_eqg6o")]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../..")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.2, 0.3),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"finish_task"
}, {
"args": [],
"method": &"reset_animation"
}]
}
[sub_resource type="Animation" id="Animation_08xoc"]
resource_name = "reload"
length = 1.10001
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.3, 0.4, 0.7, 0.8, 1),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ExtResource("4_vwudn"), ExtResource("5_p7jc5"), ExtResource("6_t6dve"), ExtResource("7_5sdma"), ExtResource("8_2gfsp"), ExtResource("9_y5ueg"), ExtResource("10_tf0tm")]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../..")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(1.1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"finish_task"
}]
}
[sub_resource type="Animation" id="Animation_ma1q3"]
resource_name = "static"
length = 0.001
step = 0.0
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),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("11_fahg7")]
}
[resource]
_data = {
&"RESET": SubResource("Animation_i1xqq"),
&"fire": SubResource("Animation_8sdfx"),
&"reload": SubResource("Animation_08xoc"),
&"static": SubResource("Animation_ma1q3")
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d3ys0jdfd5uxl"
path="res://.godot/imported/reload1.png-758d2fae958f68212399b02556f3d830.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/reload1.png"
dest_files=["res://.godot/imported/reload1.png-758d2fae958f68212399b02556f3d830.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bkpthumpkpxh5"
path="res://.godot/imported/reload2.png-f38017cfb06de950af87d5ce913ea4f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/reload2.png"
dest_files=["res://.godot/imported/reload2.png-f38017cfb06de950af87d5ce913ea4f6.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bhoj5jfr2bqjo"
path="res://.godot/imported/reload3.png-1dd7ee4373caa409c59eea5fc29cbbe6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/reload3.png"
dest_files=["res://.godot/imported/reload3.png-1dd7ee4373caa409c59eea5fc29cbbe6.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b33s3psoy6k03"
path="res://.godot/imported/reload4.png-32487311de3708121cec2955d1de0c8a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/reload4.png"
dest_files=["res://.godot/imported/reload4.png-32487311de3708121cec2955d1de0c8a.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hyr3s50x4fsk"
path="res://.godot/imported/reload5.png-61a4e463629f8c7e979be5486280453c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/reload5.png"
dest_files=["res://.godot/imported/reload5.png-61a4e463629f8c7e979be5486280453c.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvw7h7fsfdjln"
path="res://.godot/imported/reload6.png-56f58b6e5cbe8f75b730e7ce8996cdce.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/reload6.png"
dest_files=["res://.godot/imported/reload6.png-56f58b6e5cbe8f75b730e7ce8996cdce.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ditbn0dkyjj6e"
path="res://.godot/imported/reload7.png-e4ef6c1c193ef8a064241ddbf83ff8d2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/reload7.png"
dest_files=["res://.godot/imported/reload7.png-e4ef6c1c193ef8a064241ddbf83ff8d2.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cy3ija8ratxjq"
path="res://.godot/imported/shoot1.png-5a364697449e0b16d73f2ee13dd7452c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/shoot1.png"
dest_files=["res://.godot/imported/shoot1.png-5a364697449e0b16d73f2ee13dd7452c.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cd4m4g44rmwrc"
path="res://.godot/imported/shoot2.png-1d9c68873459e0c6cac350658144c708.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/shoot2.png"
dest_files=["res://.godot/imported/shoot2.png-1d9c68873459e0c6cac350658144c708.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bq6u2xb34xf0p"
path="res://.godot/imported/shoot3.png-0ce93184e8389371300396df906a89d0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/shoot3.png"
dest_files=["res://.godot/imported/shoot3.png-0ce93184e8389371300396df906a89d0.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dftqlo1lltx5f"
path="res://.godot/imported/static.png-cacc1ac24162795fade19c28e4324a1d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://base/assets/sprites/guns/gangstaholder/static.png"
dest_files=["res://.godot/imported/static.png-cacc1ac24162795fade19c28e4324a1d.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

View file

@ -1,10 +1,11 @@
[gd_scene load_steps=7 format=3 uid="uid://dwx5tcatj35gu"]
[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://cfw6p5g680c55" path="res://base/assets/sprites/guns/placeholder/shoot1.png" id="2_i1xqq"]
[ext_resource type="Texture2D" uid="uid://dftqlo1lltx5f" path="res://base/assets/sprites/guns/gangstaholder/static.png" id="2_1w3ab"]
[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"]
[ext_resource type="PackedScene" uid="uid://cig5dryfni4f8" path="res://base/scenes/weapons/auto_weapon_test.tscn" id="6_gt0rj"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jjqxs"]
@ -31,7 +32,7 @@ grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture = ExtResource("2_i1xqq")
texture = ExtResource("2_1w3ab")
stretch_mode = 6
[node name="AnimationPlayer" type="AnimationPlayer" parent="HUD/Weapon"]
@ -63,6 +64,8 @@ metadata/_custom_type_script = "uid://diu6eno2ag6ga"
script = ExtResource("4_gt0rj")
metadata/_custom_type_script = "uid://diu6eno2ag6ga"
[node name="Weapon" parent="WeaponContainer/Secondary" instance=ExtResource("6_gt0rj")]
[node name="Tertiary" type="Node3D" parent="WeaponContainer"]
script = ExtResource("4_gt0rj")
metadata/_custom_type_script = "uid://diu6eno2ag6ga"

View file

@ -0,0 +1,15 @@
[gd_scene load_steps=5 format=3 uid="uid://cig5dryfni4f8"]
[ext_resource type="PackedScene" uid="uid://bb6ovrbusyxpi" path="res://base/scenes/weapons/weapon_base.tscn" id="1_dnsf3"]
[ext_resource type="Script" uid="uid://dsvgbyeerw1ld" path="res://base/scripts/weapons/fire_mode/auto_fire_mode.gd" id="2_wftdl"]
[ext_resource type="AnimationLibrary" uid="uid://57ng8lwnt2k4" path="res://base/assets/sprites/guns/gangstaholder/gangstaholder.tres" id="3_wftdl"]
[sub_resource type="Resource" id="Resource_s6ep3"]
script = ExtResource("2_wftdl")
fire_delay = 0.3
metadata/_custom_type_script = "uid://dsvgbyeerw1ld"
[node name="Weapon" instance=ExtResource("1_dnsf3")]
max_ammo = 20
fire_mode = SubResource("Resource_s6ep3")
animation_library = ExtResource("3_wftdl")

View file

@ -14,7 +14,9 @@ var queue: CommandQueue = CommandQueue.new()
# 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:
queue.command_pushed.connect(on_queue_command_pushed)
@ -38,11 +40,23 @@ func _process(_delta: float) -> void:
Input.is_action_pressed('shoot')
if fire_action:
push_copied_command(CommandQueue.Command.FIRE, weapon_sides)
# Reload logic
var reload_action = Input.is_action_just_pressed('reload')
if reload_action:
if not queue.has_command(CommandQueue.Command.RELOAD):
push_copied_command(CommandQueue.Command.RELOAD, weapon_sides)
# 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
if slot_action:
weapons.select_slot(slot_id)
for side in CommandQueue.Side.values():
var command = queue.current_command(side)
match side: