Files
Cielonos/Assets/Scripts/MainGame/Items/Submodules/AmmoSubmodule.cs
SoulliesOfficial ef7b479712 initial
2025-11-25 08:19:33 -05:00

86 lines
2.7 KiB
C#

using UnityEngine;
namespace Cielonos.MainGame.Inventory
{
public class AmmoSubmodule : SubmoduleBase<ItemBase>
{
public AmmoData ammoData;
public bool hasInfiniteAmmo;
public int currentTotalAmmo;
public int currentMagazineAmmo;
public AmmoSubmodule(ItemBase owner, AmmoData ammoData) : base(owner)
{
if (ammoData != null)
{
this.ammoData = ammoData;
this.hasInfiniteAmmo = ammoData.hasInfiniteAmmo;
this.currentTotalAmmo = ammoData.totalAmmoSize;
this.currentMagazineAmmo = ammoData.magazineSize;
}
else
{
this.hasInfiniteAmmo = true;
this.currentTotalAmmo = -1;
this.currentMagazineAmmo = -1;
}
}
public bool CanUse(int amount = 1)
{
return hasInfiniteAmmo || currentMagazineAmmo >= amount;
}
public void ConsumeAmmo()
{
currentMagazineAmmo--;
//GameManager.gameUIManager.gameCanvas.mainPanel.mainWeaponUIModule.UpdateAmmo();
}
public bool ConsumeAmmo(int amount)
{
if (currentMagazineAmmo >= amount)
{
currentMagazineAmmo -= amount;
//GameManager.gameUIManager.gameCanvas.mainPanel.mainWeaponUIModule.UpdateAmmo();
return true;
}
return false;
}
public void SupplyMagazineAmmo(int amount)
{
currentMagazineAmmo += amount;
currentMagazineAmmo = Mathf.Clamp(currentMagazineAmmo, 0, ammoData.magazineSize);
//GameManager.gameUIManager.gameCanvas.mainPanel.mainWeaponUIModule.UpdateAmmo();
}
public void ReloadAmmo()
{
if (currentTotalAmmo < ammoData.magazineSize)
{
int ammoNeeded = ammoData.magazineSize - currentMagazineAmmo;
if (currentTotalAmmo >= ammoNeeded)
{
currentMagazineAmmo = ammoData.magazineSize;
currentTotalAmmo -= ammoNeeded;
}
else
{
currentMagazineAmmo += currentTotalAmmo;
currentTotalAmmo = 0;
}
}
else
{
int ammoNeeded = ammoData.magazineSize - currentMagazineAmmo;
currentMagazineAmmo = ammoData.magazineSize;
currentTotalAmmo -= ammoNeeded;
}
//GameManager.gameUIManager.gameCanvas.mainPanel.mainWeaponUIModule.UpdateAmmo();
}
}
}