hello, recently made a weapon system, problem is its not equipping the weapon, its just doing queue_free, the weapon is being detected, problem is i have two guns, M4A1 class and an inherited M4 which is in relation to the Weapon Scene
im trying to make a dictionary of weapons in the weapon system, here is the code
extends Node2D
class_name Weapon
onready var playerPath = preload("res://Player.tscn")
onready var animation_player: AnimationPlayer = get_node("AnimationPlayer")
onready var hitbox: Area2D = get_node("Node2D/Sprite/Hitbox")
export(bool) var on_floor: bool = true
#var _player = playerPath.instance()
#var player_instance = _player.get_node("ItemPickupCollision")
var player_in_range : bool
var player_picked_up : bool
var hasWeapon : bool
var ammoAmount: int
var ammoMagazineAmount: int
var bulletSpread: Array = [0,0]
var damage: float
var freeze: float
var hasEquiped: bool
var hasAttachedMod1: bool
var hasAttachedMod2: bool
var hasAttachedMod3: bool
var Melee: Array = ["Sword"]
var melee_types = Melee
var Pistol: Array = ["Glock"]
var pistol_types = Pistol
var AssaultRifle: Array = ["M4A1", "AK47"]
var assault_rifle_types = AssaultRifle
var assault_rifle_data = {
m4a1 = load("res://M4A1.tscn")
}
var sidearm_data = {
tac1 = load("res://Tac1.tscn")
}
func _process(_delta):
_pick_up_weapon()
hasAttachedMod1 = true
hasAttachedMod2 = true
func _pick_up_weapon():
if Input.is_action_just_pressed("interact"):
if player_picked_up == true:
player_picked_up = false
else:
if player_in_range == true:
player_picked_up = true
print(player_picked_up)
#hasWeapon = true
if (on_floor == false and $ItemPickupCollision.get_overlapping_areas() == assault_rifle_data["m4a1"]):# put something here to detect what gun it is some how
equip_assaultRifle1("M4A1")# this doesnt work
queue_free()# here it just deleted the gun but it doesnt equip
#Primary
func equip_assaultRifle1(assault_rifle_type: String):
var _player = playerPath.instance()
var GunPos: Player = _player.get_node("Position2D/Weapons")
for assaultrifle in GunPos.get_children():
assaultrifle.queue_free()
var assaultrifle: Sprite = assault_rifle_data[assault_rifle_type].instance()
GunPos.add_child(assaultrifle)
# Secondary
func equip_sideArm(sidearm_type: String):
var _player = playerPath.instance()
var GunPos2: Player = _player.get_node("Position2D/Weapons")
for sidearm in GunPos2.get_children():
sidearm.queue_free()
var sidearm: Sprite = sidearm_data[sidearm_type].instance()
GunPos2.add_child(sidearm)
func assaultRifle_mods():
if hasAttachedMod1 == true:
$Node2D/Sprite/Mods/Silencer2.visible = true
if hasAttachedMod2 == true:
$Node2D/Sprite/Mods/LazerGreen.visible = true
else:
$Node2D/Sprite/Mods/Silencer2.visible = false
$Node2D/Sprite/Mods/LazerGreen.visible = false
func _on_Pickup_body_entered(body):
if body.name == "Player":
print("player detected")
player_in_range = true
if body.has_method("add_weapon"):
body.add_weapon(self)
func _on_Pickup_body_exited(body):
if body.name == "Player":
player_in_range = false