built revolver and tweaked weapn management system

This commit is contained in:
derek
2024-07-15 16:59:11 -05:00
parent 89e5333735
commit af7b6afa3d
22 changed files with 441 additions and 63 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dit5pj07jr02y"
path.s3tc="res://.godot/imported/revolver1.albedo.png-74e328e26c169705fe8d31d14670e8fd.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/Models/revolver1.albedo.png"
dest_files=["res://.godot/imported/revolver1.albedo.png-74e328e26c169705fe8d31d14670e8fd.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
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=0

Binary file not shown.

View File

@@ -0,0 +1,50 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dgogd08c0ubt6"
path="res://.godot/imported/revolver1.blend-192fbd02967e01bb13b7e1e62d4a2399.scn"
[deps]
source_file="res://assets/Models/revolver1.blend"
dest_files=["res://.godot/imported/revolver1.blend-192fbd02967e01bb13b7e1e62d4a2399.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1
blender/nodes/visible=0
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blcxok1w8f4xu"
path.s3tc="res://.godot/imported/revolver1.roughness.png-f8c40214b9c261c0a4b2cd9f6a4e9a14.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/Models/revolver1.roughness.png"
dest_files=["res://.godot/imported/revolver1.roughness.png-f8c40214b9c261c0a4b2cd9f6a4e9a14.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgvjulost7tbg"
path.s3tc="res://.godot/imported/revolver1.wood.normal.png-124c76d98776c077883d20d817b5307f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/Models/revolver1.wood.normal.png"
dest_files=["res://.godot/imported/revolver1.wood.normal.png-124c76d98776c077883d20d817b5307f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://assets/Models/revolver1.wood.normal.png"
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvsqe82hirgbj"
path.s3tc="res://.godot/imported/revolver1.wood.png-0324c8b84a4fb9d83b499c14570bfb4f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/Models/revolver1.wood.png"
dest_files=["res://.godot/imported/revolver1.wood.png-0324c8b84a4fb9d83b499c14570bfb4f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0qhedxixr7hi"
path.s3tc="res://.godot/imported/revolver1.wood.roughness.png-8350ea1e5a4a247a54a8016aea09becd.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/Models/revolver1.wood.roughness.png"
dest_files=["res://.godot/imported/revolver1.wood.roughness.png-8350ea1e5a4a247a54a8016aea09becd.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
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=0

View File

@@ -310,6 +310,34 @@ tracks/5/keys = {
[sub_resource type="Animation" id="Animation_tikvk"]
resource_name = "sprint"
[sub_resource type="Animation" id="Animation_0sp0s"]
resource_name = "swap_in"
step = 0.01
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("mac10:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.6, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0.948953, -2.62066, 0.655643), Vector3(-0.270935, -0.0610588, 0), Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("mac10:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.6, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(-0.0311214, -1.03495, 2.52892), Vector3(-0.0758979, -1.23084, 0.21119), Vector3(0, -1.5708, 0)]
}
[sub_resource type="Animation" id="Animation_i5303"]
resource_name = "swap_out"
step = 0.01
@@ -352,34 +380,6 @@ tracks/2/keys = {
}]
}
[sub_resource type="Animation" id="Animation_0sp0s"]
resource_name = "swap_in"
step = 0.01
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("mac10:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.6, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1.24557, 1.01031, 2.22439), Vector3(-0.270935, -0.0610588, 0), Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("mac10:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.6, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(-0.0713455, -1.36426, -2.36786), Vector3(-0.0758979, -1.23084, 0.21119), Vector3(0, -1.5708, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vkrtt"]
_data = {
"empty": SubResource("Animation_u008m"),
@@ -411,7 +411,7 @@ audio_empty = NodePath("Audio/Empty")
audio_reload = NodePath("Audio/Reload")
[node name="mac10" parent="." index="0"]
transform = Transform3D(0.00110078, 0.000233951, -0.532828, 0.00152579, 0.532826, 0.000237103, 0.532825, -0.00152628, 0.00110011, -0.00253865, -0.0010342, -0.00140877)
transform = Transform3D(-1.92883e-06, 0, -0.532829, 0, 0.532828, 0, 0.532828, 0, -1.92884e-06, 0, 0, 0)
[node name="SpotLight3D" type="SpotLight3D" parent="mac10" index="0"]
transform = Transform3D(-6.79394e-06, 0, 1.87678, 0, 1.87678, 0, -1.87677, 0, -6.79392e-06, -1.63231, 0, 5.90892e-06)

View File

@@ -195,6 +195,33 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_tikvk"]
resource_name = "sprint"
[sub_resource type="Animation" id="Animation_7422e"]
resource_name = "swap_in"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("gun:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.7, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(-2.63402, -3.06256, 0.366018), Vector3(-0.274662, -0.000397999, 0.0729132), Vector3(0, -0.000397999, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("gun:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.7, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(-0.95634, 0.530067, 1.30899), Vector3(-0.289219, -1.03888, -0.16629), Vector3(0, -1.5708, 0)]
}
[sub_resource type="Animation" id="Animation_lleyf"]
resource_name = "swap_out"
tracks/0/type = "value"
@@ -236,33 +263,6 @@ tracks/2/keys = {
}]
}
[sub_resource type="Animation" id="Animation_7422e"]
resource_name = "swap_in"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("gun:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.7, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1.44543, 1.00681, 2.10684), Vector3(-0.274662, -0.000397999, 0.0729132), Vector3(0, -0.000397999, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("gun:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.7, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(-0.221353, -1.10575, -2.02639), Vector3(-0.289219, -1.03888, -0.16629), Vector3(0, -1.5708, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vkrtt"]
_data = {
"empty": SubResource("Animation_u008m"),
@@ -293,7 +293,7 @@ audio_empty = NodePath("Audio/Empty")
audio_reload = NodePath("Audio/Reload")
[node name="gun" parent="." index="0"]
transform = Transform3D(-3.23167e-06, 0, -0.892728, 0, 0.892728, 0, 0.892728, 0, -3.23167e-06, 0, -0.000397999, 0)
transform = Transform3D(-0.156879, -0.839429, 0.260213, 0.497133, 0.133208, 0.729437, -0.724714, 0.273088, 0.444044, -2.63402, -3.06256, 0.366018)
[node name="mag" parent="gun" index="0"]
transform = Transform3D(0.0897307, -0.048904, -9.31323e-10, 0.012226, 0.358923, 1.74623e-10, 3.72529e-09, -1.86265e-09, 0.0323253, 0.00225297, 0.0306008, -2.98023e-08)

14
assets/revolver_1.tscn Normal file
View File

@@ -0,0 +1,14 @@
[gd_scene load_steps=2 format=3 uid="uid://bmwch3mi8ow0m"]
[ext_resource type="PackedScene" uid="uid://dgogd08c0ubt6" path="res://assets/Models/revolver1.blend" id="1_i5f84"]
[node name="revolver1" instance=ExtResource("1_i5f84")]
[node name="revolver1" parent="." index="0"]
transform = Transform3D(-2.18557e-08, 0.5, 0, -0.5, -2.18557e-08, 0, 0, 0, 0.5, 0, 0.206226, -0.277466)
[node name="Chamber" parent="revolver1" index="0"]
transform = Transform3D(1.19209e-07, -1.19209e-07, 1, 1, 0, -1.19209e-07, 0, 1, 1.19209e-07, -0.0143475, 0, -0.0849619)
[node name="hammer" parent="revolver1" index="1"]
transform = Transform3D(1, 3.55271e-15, 0, -3.55271e-15, 1, 0, 0, 0, 1, -0.0180137, 8.88178e-16, 0.241647)

View File

@@ -435,7 +435,7 @@ mesh = SubResource("ArrayMesh_exipw")
skeleton = NodePath("")
[node name="leg1" type="MeshInstance3D" parent="body"]
transform = Transform3D(0.612077, 0.622855, 0.487249, -0.71325, 0.700909, 0, -0.341518, -0.347531, 0.873262, -0.305074, -0.206463, 0.323723)
transform = Transform3D(0.687491, 0.699597, 0.194727, -0.71325, 0.700909, 0, -0.136486, -0.138889, 0.980856, -0.305074, -0.206463, 0.323723)
mesh = SubResource("ArrayMesh_cwwo8")
skeleton = NodePath("")
@@ -445,7 +445,7 @@ mesh = SubResource("ArrayMesh_epfun")
skeleton = NodePath("")
[node name="leg2" type="MeshInstance3D" parent="body"]
transform = Transform3D(-0.686766, -0.698732, 0.200316, -0.713186, 0.700974, 4.21911e-09, -0.140416, -0.142863, -0.979732, 0.318604, -0.206463, 0.321527)
transform = Transform3D(-0.612169, -0.622708, 0.487323, -0.713114, 0.701047, 8.99523e-09, -0.341636, -0.347517, -0.873222, 0.318604, -0.206463, 0.321527)
mesh = SubResource("ArrayMesh_j8pcb")
skeleton = NodePath("")
@@ -455,7 +455,7 @@ mesh = SubResource("ArrayMesh_vgp1v")
skeleton = NodePath("")
[node name="leg3" type="MeshInstance3D" parent="body"]
transform = Transform3D(0.612077, 0.622855, -0.487249, -0.71325, 0.700909, 0, 0.341518, 0.347531, 0.873262, -0.327034, -0.206463, -0.315327)
transform = Transform3D(0.687491, 0.699597, -0.194727, -0.71325, 0.700909, 0, 0.136486, 0.138889, 0.980856, -0.327034, -0.206463, -0.315327)
mesh = SubResource("ArrayMesh_wv2l2")
skeleton = NodePath("")
@@ -465,7 +465,7 @@ mesh = SubResource("ArrayMesh_375ql")
skeleton = NodePath("")
[node name="leg4" type="MeshInstance3D" parent="body"]
transform = Transform3D(-0.677596, -0.689402, -0.256104, -0.713187, 0.700974, -6.19164e-08, 0.179522, 0.18265, -0.966649, 0.351545, -0.206463, -0.339484)
transform = Transform3D(-0.58948, -0.599627, -0.541258, -0.713115, 0.701047, -1.32007e-07, 0.379448, 0.38598, -0.840856, 0.351545, -0.206463, -0.339484)
mesh = SubResource("ArrayMesh_v81tc")
skeleton = NodePath("")

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=49 format=3 uid="uid://dyop6vk3rgkkb"]
[gd_scene load_steps=50 format=3 uid="uid://dyop6vk3rgkkb"]
[ext_resource type="Script" path="res://scripts/WeaponManager.gd" id="1_orhgl"]
[ext_resource type="Texture2D" uid="uid://dqs06ic3vjtwk" path="res://assets/Models/asphalt1.albedo.jpg" id="1_w4rag"]
@@ -11,6 +11,7 @@
[ext_resource type="PackedScene" uid="uid://bpkmyd3wvqi5p" path="res://assets/boombox.tscn" id="6_xrg7k"]
[ext_resource type="AudioStream" uid="uid://jo4n05go5hdt" path="res://assets/Audio/train-pass-by-steady-loop-SBA-300156766.wav" id="7_00j8j"]
[ext_resource type="PackedScene" uid="uid://cnfc8rtk6l1d8" path="res://assets/crate1.tscn" id="8_b57j8"]
[ext_resource type="PackedScene" uid="uid://djr7vnr1hcx82" path="res://assets/spiderTEst.tscn" id="12_gnu56"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_nb6x7"]
sky_top_color = Color(0.145935, 0.111347, 0.255579, 1)
@@ -413,7 +414,6 @@ gun_2 = ExtResource("3_rky7g")
[node name="Player" parent="." instance=ExtResource("2_f87c2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.0295, 1.4435, 21.1166)
AUDIO = false
weapon_sway_amount = 0.05
weapon_rotation_amount = 0.05
@@ -633,3 +633,6 @@ mass = 10.0
[node name="Crate3" parent="." instance=ExtResource("8_b57j8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5641, 1.51906, 11.3001)
mass = 10.0
[node name="spider14" parent="." instance=ExtResource("12_gnu56")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -3.267, -0.228641, 15.75)

136
scripts/revolver_1.gd Normal file
View File

@@ -0,0 +1,136 @@
extends Node3D
var start_position
var start_rotation
var random_spread_start
var cycle_count_start
var cycle_count
@export_group("Gun Feel")
@export var gun_name : String
@export_enum("Auto", "Single", "Burst") var fire_mode: int
@export var recoil_amount = .2
@export var max_ammo = 15
@export var start_mags = 3
@export var bullet_damage = 1
@export var kick_amount = 1
@export var bullet_speed = 150
@export var bullet_drop = .3
@export var random_spread_amt = 1.0
@export var fire_pitch_scale_amt = .2
@export_group("Gun Assets")
@export_subgroup("Main Assets")
@export var flare_light : Node
@export var bullet : Resource
@export var bullethole : Resource
@export var casing : Resource
@export var mag : Resource
@export_subgroup("Raycast Nodes")
@export var anim_player : Node
@export var barrel_raycast : Node
@export var casing_ejector : Node
@export var mag_ejector : Node
@export_subgroup("Audio Clips")
@export var audio_fire : Node
@export var audio_empty : Node
@export var audio_reload : Node
@onready var player = $"../../../../"
@onready var level_control = $"../../../../../"
@onready var ammo_current
var rng = RandomNumberGenerator.new()
var gun_index
#var ammo_current
var ammo_reserve
# Called when the node enters the scene tree for the first time.
func _ready():
start_position = self.position
start_rotation = self.rotation
random_spread_start = random_spread_amt
ammo_current = level_control.ammo_current[gun_index]
ammo_reserve = level_control.ammo_reserve[gun_index]
if fire_mode == 0:
cycle_count = 1
cycle_count_start = 1
elif fire_mode == 1:
cycle_count = 1
cycle_count_start = 1
elif fire_mode == 2:
cycle_count = 3
cycle_count_start = 3
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func reload_finished():
if level_control.ammo_reserve[gun_index] >= max_ammo:
level_control.ammo_current[gun_index] += max_ammo
level_control.ammo_reserve[gun_index] -= max_ammo
player.reloading = false
else:
level_control.ammo_current[gun_index] += level_control.ammo_reserve[gun_index]
level_control.ammo_reserve[gun_index] -= level_control.ammo_reserve[gun_index]
player.reloading = false
func shoot(player,delta):
if level_control.ammo_current[gun_index] > 0 and cycle_count > 0:
if !anim_player.is_playing():
level_control.ammo_current[gun_index] -= 1
#RECOIL --- fix later to happen over a period of time
#player.camera.rotation.x = clamp(lerp(player.camera.rotation.x, player.camera.rotation.x + recoil_amount, delta * 10), deg_to_rad(-90), deg_to_rad(60))
player.weapon_recoil(delta)
#(ADD PLAYER KICK HERE. RELATIVE TO GUN POSITION)
audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt)
audio_fire.play()
anim_player.play("shoot")
# instance bullet
var instance_bullet = bullet.instantiate()
instance_bullet.position = player.bullet_ray.global_position
#shoot bullet from real gun if gun is folded up
if player.gun_folded == false:
instance_bullet.transform.basis = player.bullet_ray.global_transform.basis
else:
instance_bullet.transform.basis = barrel_raycast.global_transform.basis
instance_bullet.bullet_speed = bullet_speed
instance_bullet.bullet_drop = bullet_drop
instance_bullet.random_spread_amt = random_spread_amt
instance_bullet.instance_bullethole = bullethole.instantiate()
instance_bullet.gun = self
get_tree().get_root().add_child(instance_bullet)
# chamberspin transform
elif !anim_player.is_playing() and cycle_count != 0:
anim_player.play("empty")
audio_empty.play()
func reload(player,delta):
if level_control.ammo_current[gun_index] < max_ammo and player.reloading == false and level_control.ammo_reserve[gun_index] > 0:
player.reloading = true
anim_player.play("reload")
audio_reload.play()
if anim_player.is_playing() and anim_player.current_animation == "reload":
if level_control.ammo_current[gun_index] == 0:
level_control.ammo_current[gun_index] = 0
else:
level_control.ammo_current[gun_index] = 1
func spawn_mag():
var instance_mag = mag.instantiate()
instance_mag.position = mag_ejector.global_position
instance_mag.transform.basis = mag_ejector.global_transform.basis
get_tree().get_root().add_child(instance_mag)
func swapped_out():
queue_free()