Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Inventory/Inventory Pickups Behaviour/ammoOnInventory.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

116 lines
3.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ammoOnInventory : objectOnInventory
{
public ammoPickup mainAmmoPickup;
string ammoName;
public override void activateCombineObjectActionOnInventory (GameObject currentPlayer, inventoryInfo inventoryInfoToUse)
{
int amountTaken = 0;
bool canCombineAmmo = false;
ammoName = mainAmmoPickup.ammoName;
print ("ammo selected for the weapon " + ammoName);
playerComponentsManager currentPlayerComponentsManager = currentPlayer.GetComponent<playerComponentsManager> ();
playerWeaponsManager weaponsManager = currentPlayerComponentsManager.getPlayerWeaponsManager ();
playerWeaponSystem currrentPlayerWeaponSystem = weaponsManager.getWeaponSystemByName (ammoName);
inventoryManager mainInventoryManager = currentPlayerComponentsManager.getInventoryManager ();
print ("ammo type selected is " + currrentPlayerWeaponSystem.getWeaponSystemName () + " to combine with the ammo for the weapon " + ammoName);
bool ammoToUseIsForWeaponSelected = false;
inventoryInfo firstObjectToCombine = mainInventoryManager.getCurrentFirstObjectToCombine ();
inventoryInfo secondObjectToCombine = mainInventoryManager.getCurrentSecondObjectToCombine ();
print ("first inventory object selected is " + firstObjectToCombine.Name);
print ("second inventory object selected is " + secondObjectToCombine.Name);
if (firstObjectToCombine.isWeapon && firstObjectToCombine.mainWeaponObjectInfo.getWeaponAmmoName () == secondObjectToCombine.Name) {
ammoToUseIsForWeaponSelected = true;
} else {
if (secondObjectToCombine.isWeapon && secondObjectToCombine.mainWeaponObjectInfo.getWeaponAmmoName () == firstObjectToCombine.Name) {
ammoToUseIsForWeaponSelected = true;
}
}
if (ammoToUseIsForWeaponSelected) {
int amountAvailable = inventoryInfoToUse.amountPerUnit;
if (inventoryInfoToUse.storeTotalAmountPerUnit) {
amountAvailable = inventoryInfoToUse.amount;
}
print ("amount available " + amountAvailable);
bool weaponAvailable = weaponsManager.checkIfWeaponIsAvailable (ammoName);
bool weaponHasAmmoLimit = weaponsManager.hasAmmoLimit (ammoName);
if (!weaponAvailable) {
if (mainInventoryManager.existInPlayerInventoryFromName (ammoName)) {
weaponAvailable = true;
weaponHasAmmoLimit = false;
}
}
if (weaponAvailable) {
if (weaponHasAmmoLimit) {
bool weaponHasMaximumAmmoAmount = weaponsManager.hasMaximumAmmoAmount (ammoName);
if (weaponHasMaximumAmmoAmount) {
print ("maximum amount on " + ammoName);
} else {
amountTaken = applyDamage.getPlayerWeaponAmmoAmountToPick (weaponsManager, ammoName, amountAvailable);
}
print ("use weapon ammo limit");
} else {
if (currrentPlayerWeaponSystem.isUseRemainAmmoFromInventoryActive ()) {
int magazineSizeToRefill = currrentPlayerWeaponSystem.getAmmoAmountToRefillMagazine ();
print ("magazine free space " + magazineSizeToRefill);
if (magazineSizeToRefill > 0) {
if (amountAvailable >= magazineSizeToRefill) {
amountTaken = magazineSizeToRefill;
} else {
amountTaken = amountAvailable;
}
} else {
amountTaken = 0;
canCombineAmmo = true;
}
print ("use remain ammo from inventory active");
} else {
amountTaken = amountAvailable;
}
}
}
print (amountTaken);
if (amountTaken > 0) {
weaponsManager.setWeaponRemainAmmoFromInventory (currrentPlayerWeaponSystem);
weaponsManager.AddAmmo ((int)Mathf.Round (amountTaken), ammoName);
canCombineAmmo = true;
}
} else {
print ("Weapon selected doesn't use the ammo of the " + ammoName);
}
mainInventoryManager.setCombineObjectsWithNewBehaviorResult ((int)amountTaken, canCombineAmmo);
}
}