# weapon.gd
extends Resource
class_name iWeapon
# This acts as an interface base class.

# --- Common Stats ---
@export var weapon_name: String = "Unnamed Weapon"
@export var damage: float = 10.0
@export var attack_speed: float = 1.0        # attacks per second
@export var range: float = 1.5               # meters; melee = short, ranged = long
@export var knockback: float = 0.0
@export var stamina_cost: float = 5.0        

# --- Ranged‑specific Stats ---
@export var projectile_scene: PackedScene     # null for melee
@export var projectile_speed: float = 20.0
@export var ammo_type: String = ""            # e.g. "arrows", "bullets"
@export var ammo_per_shot: int = 1

# --- Melee‑specific Stats ---
@export var swing_arc: float = 90.0           # degrees
@export var hitbox_size: float = 1.0

# --- Interface Methods ---
func attack(user):
	push_error("Weapon.attack() not implemented in subclass")
	return null

func can_attack(user) -> bool:
	return true
