Fix for weapon switching

This commit is contained in:
Marco 2025-02-11 13:47:31 +01:00
commit 9e04056800
5 changed files with 83 additions and 3 deletions

View file

@ -45,6 +45,10 @@ public partial class PlayerMovement : CharacterBody2D, IDestructible
[Export] public float MaxHealth = 32f;
public Weapon EquippedWeapon { get; set; }
public Array<Weapon> EquippedWeapons { get; set; } = new Array<Weapon>();
public int CurrentWeaponIndex { get; set; } = 0;
private float _currentHealth = 0f;
@ -157,12 +161,56 @@ public partial class PlayerMovement : CharacterBody2D, IDestructible
}
}*/
public void AddWeapon(Weapon weapon)
{
EquippedWeapons.Add(weapon);
}
public void EquipWeapon(Weapon weapon)
{
EquippedWeapon = weapon;
CurrentWeaponIndex = EquippedWeapons.IndexOf(weapon);
}
public void NextWeapon()
{
CurrentWeaponIndex += 1;
if (CurrentWeaponIndex > EquippedWeapons.Count - 1)
{
CurrentWeaponIndex = EquippedWeapons.Count - 1;
}
EquipWeapon(EquippedWeapons[CurrentWeaponIndex]);
}
public void PreviousWeapon()
{
CurrentWeaponIndex -= 1;
if (CurrentWeaponIndex < 0)
{
CurrentWeaponIndex = 0;
}
EquipWeapon(EquippedWeapons[CurrentWeaponIndex]);
}
public override void _Process(double delta)
{
SetAnimation();
if (!_canMove) return;
HandleShoot();
FindInteractable();
if (Input.IsActionJustPressed("next_weapon"))
{
NextWeapon();
}
if (Input.IsActionJustPressed("previous_weapon"))
{
PreviousWeapon();
}
}
private void FindInteractable()