Files
fps_project_1/scripts/WeaponManager.gd

52 lines
1.5 KiB
GDScript

extends Node3D
@export var player : Node
@export var gun_1 : Resource
@export var gun_2 : Resource
var held_guns = []
var ammo_current = [0,0]
var ammo_reserve = [0,0]
var guns_dict = {}
var current_gun_index
# Called when the node enters the scene tree for the first time.
func _ready():
held_guns = [gun_1,gun_2]
var instance_gun = held_guns[0].instantiate()
var instance_gun_2 = held_guns[1].instantiate()
#set up ammo for starting guns
ammo_current[1] = instance_gun_2.max_ammo
ammo_reserve[1] = instance_gun_2.max_ammo * instance_gun_2.start_mags
ammo_current[0] = instance_gun.max_ammo
ammo_reserve[0] = instance_gun.max_ammo * instance_gun.start_mags
#spawn first gun
current_gun_index = 0
gun_spawn(0)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func gun_spawn(index):
#loop around if scrolling past available guns
if index > held_guns.size() - 1:
index = 0
elif index < 0:
index = held_guns.size() - 1
current_gun_index = index
var instance_gun = held_guns[index].instantiate()
instance_gun.global_transform.origin = player.weapon_spawner.position
player.gun = instance_gun
player.def_weapon_holder_pos = player.weapon_holder.position
player.ammo = player.gun.max_ammo
player.ammo_reserve = player.gun.max_ammo * player.gun.start_mags
player.gun_fire_pitch_starting = player.gun.audio_fire.pitch_scale
instance_gun.gun_index = index
instance_gun.anim_player.play("swap_in")
player.weapon_holder.add_child(instance_gun)