86 lines
2.7 KiB
C#
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();
|
|
}
|
|
}
|
|
} |