Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Inventory/inventoryInfo.cs

478 lines
13 KiB
C#
Raw Normal View History

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using GameKitController.Audio;
[System.Serializable]
public class inventoryInfo
{
2026-03-29 23:03:14 -07:00
//Main settings
public string Name;
public GameObject inventoryGameObject;
[TextArea (3, 10)] public string objectInfo;
public Texture icon;
public int amount;
public int amountPerUnit;
public bool infiniteAmount;
2026-03-29 23:03:14 -07:00
public bool storeTotalAmountPerUnit;
2026-03-29 23:03:14 -07:00
public bool showAmountPerUnitInAmountText;
2026-03-29 23:03:14 -07:00
//Special settings to use, equi, drop, combine, etc...
2026-03-29 23:03:14 -07:00
public bool canBeUsed;
public bool canBeEquiped;
public bool canBeDropped;
public bool canBeCombined;
2026-03-29 23:03:14 -07:00
public bool canBeExamined = true;
2026-03-29 23:03:14 -07:00
public bool canBeDiscarded;
2026-03-29 23:03:14 -07:00
public bool hideSlotOnMenu;
2026-03-29 23:03:14 -07:00
//Behavior elements
2026-03-29 23:03:14 -07:00
public bool useNewBehaviorOnUse;
[TextArea (3, 10)] public string newBehaviorOnUseMessage;
[TextArea (3, 10)] public string newBehaviorOnUnableToUseMessage;
2026-03-29 23:03:14 -07:00
public bool useNewBehaviorOnCombine;
[TextArea (3, 10)] public string newBehaviorOnCombineMessage;
2026-03-29 23:03:14 -07:00
public bool useOneUnitOnNewBehaviourCombine = true;
2026-03-29 23:03:14 -07:00
public bool useSoundOnUseObject;
public AudioClip soundOnUseObject;
public AudioElement onUseObjectAudioElement;
2026-03-29 23:03:14 -07:00
//States
2026-03-29 23:03:14 -07:00
public bool isEquipped;
2026-03-29 23:03:14 -07:00
public int quickAccessSlotIndex = -1;
2026-03-29 23:03:14 -07:00
public bool useDurability;
public float durabilityAmount = 100;
2026-03-29 23:03:14 -07:00
public float maxDurabilityAmount = 100;
2026-03-29 23:03:14 -07:00
public bool objectIsBroken;
2026-03-29 23:03:14 -07:00
public float sellMultiplierIfObjectIsBroken = 1;
2026-03-29 23:03:14 -07:00
//Weapon settings
2026-03-29 23:03:14 -07:00
public bool isWeapon;
public bool isMeleeWeapon;
2026-03-29 23:03:14 -07:00
public bool isMeleeShield;
2026-03-29 23:03:14 -07:00
public bool isArmorClothAccessory;
2026-03-29 23:03:14 -07:00
public int projectilesInMagazine = -1;
2026-03-29 23:03:14 -07:00
public weaponObjectInfo mainWeaponObjectInfo;
2026-03-29 23:03:14 -07:00
//Combine object settings
2026-03-29 23:03:14 -07:00
public GameObject objectToCombine;
public GameObject combinedObject;
[TextArea (3, 10)] public string combinedObjectMessage;
2026-03-29 23:03:14 -07:00
//Vendor settings
2026-03-29 23:03:14 -07:00
public bool canBeSold = true;
2026-03-29 23:03:14 -07:00
public float vendorPrice;
public bool infiniteVendorAmountAvailable;
2026-03-29 23:03:14 -07:00
public string categoryName;
2026-03-29 23:03:14 -07:00
public int categoryIndex;
public int elementIndex;
2026-03-29 23:03:14 -07:00
public float sellPrice;
2026-03-29 23:03:14 -07:00
public bool useMinLevelToBuy;
public float minLevelToBuy;
2026-03-29 23:03:14 -07:00
//Other settings
2026-03-29 23:03:14 -07:00
public float weight;
2026-03-29 23:03:14 -07:00
public bool spawnObject;
2026-03-29 23:03:14 -07:00
public bool useCustomObjectToDrop;
public GameObject customObjectToDrop;
public Vector3 dropObjectOffset;
2026-03-29 23:03:14 -07:00
public bool cantBeStoredOnInventory;
2026-03-29 23:03:14 -07:00
public bool canBeHeld;
2026-03-29 23:03:14 -07:00
public bool canBePlaceOnQuickAccessSlot;
2026-03-29 23:03:14 -07:00
public bool canBeSetOnQuickSlots;
2026-03-29 23:03:14 -07:00
public bool setMaximumAmountPerSlot;
public int maximumAmountPerSlot;
2026-03-29 23:03:14 -07:00
public bool setMaximumObjectAmount;
public int maximumObjectAmount;
2026-03-29 23:03:14 -07:00
//Editor and prefabs settings
public Button button;
public inventoryMenuIconElement menuIconElement;
public GameObject inventoryObjectPrefab;
2026-03-29 23:03:14 -07:00
public vendorObjectSlotPanelInfo currentVendorObjectSlotPanelInfo;
2026-03-29 23:03:14 -07:00
public GameObject emptyInventoryPrefab;
2026-03-29 23:03:14 -07:00
public inventoryInfo (inventoryInfo obj)
{
Name = obj.Name;
inventoryGameObject = obj.inventoryGameObject;
objectInfo = obj.objectInfo;
icon = obj.icon;
amount = obj.amount;
amountPerUnit = obj.amountPerUnit;
2026-03-29 23:03:14 -07:00
infiniteAmount = obj.infiniteAmount;
2026-03-29 23:03:14 -07:00
storeTotalAmountPerUnit = obj.storeTotalAmountPerUnit;
2026-03-29 23:03:14 -07:00
showAmountPerUnitInAmountText = obj.showAmountPerUnitInAmountText;
2026-03-29 23:03:14 -07:00
canBeUsed = obj.canBeUsed;
canBeEquiped = obj.canBeEquiped;
canBeDropped = obj.canBeDropped;
canBeCombined = obj.canBeCombined;
2026-03-29 23:03:14 -07:00
canBeExamined = obj.canBeExamined;
2026-03-29 23:03:14 -07:00
hideSlotOnMenu = obj.hideSlotOnMenu;
2026-03-29 23:03:14 -07:00
useNewBehaviorOnUse = obj.useNewBehaviorOnUse;
newBehaviorOnUseMessage = obj.newBehaviorOnUseMessage;
newBehaviorOnUnableToUseMessage = obj.newBehaviorOnUnableToUseMessage;
2026-03-29 23:03:14 -07:00
useOneUnitOnNewBehaviourCombine = obj.useOneUnitOnNewBehaviourCombine;
2026-03-29 23:03:14 -07:00
useNewBehaviorOnCombine = obj.useNewBehaviorOnCombine;
newBehaviorOnCombineMessage = obj.newBehaviorOnCombineMessage;
2026-03-29 23:03:14 -07:00
useSoundOnUseObject = obj.useSoundOnUseObject;
soundOnUseObject = obj.soundOnUseObject;
onUseObjectAudioElement = obj.onUseObjectAudioElement;
2026-03-29 23:03:14 -07:00
canBeDiscarded = obj.canBeDiscarded;
2026-03-29 23:03:14 -07:00
canBeSold = obj.canBeSold;
2026-03-29 23:03:14 -07:00
vendorPrice = obj.vendorPrice;
infiniteVendorAmountAvailable = obj.infiniteVendorAmountAvailable;
2026-03-29 23:03:14 -07:00
categoryName = obj.categoryName;
2026-03-29 23:03:14 -07:00
categoryIndex = obj.categoryIndex;
elementIndex = obj.elementIndex;
2026-03-29 23:03:14 -07:00
sellPrice = obj.sellPrice;
2026-03-29 23:03:14 -07:00
useMinLevelToBuy = obj.useMinLevelToBuy;
minLevelToBuy = obj.minLevelToBuy;
2026-03-29 23:03:14 -07:00
isEquipped = obj.isEquipped;
2026-03-29 23:03:14 -07:00
quickAccessSlotIndex = obj.quickAccessSlotIndex;
2026-03-29 23:03:14 -07:00
useDurability = obj.useDurability;
durabilityAmount = obj.durabilityAmount;
2026-03-29 23:03:14 -07:00
maxDurabilityAmount = obj.maxDurabilityAmount;
2026-03-29 23:03:14 -07:00
objectIsBroken = obj.objectIsBroken;
2026-03-29 23:03:14 -07:00
sellMultiplierIfObjectIsBroken = obj.sellMultiplierIfObjectIsBroken;
2026-03-29 23:03:14 -07:00
isWeapon = obj.isWeapon;
isMeleeWeapon = obj.isMeleeWeapon;
2026-03-29 23:03:14 -07:00
isMeleeShield = obj.isMeleeShield;
2026-03-29 23:03:14 -07:00
isArmorClothAccessory = obj.isArmorClothAccessory;
2026-03-29 23:03:14 -07:00
projectilesInMagazine = obj.projectilesInMagazine;
2026-03-29 23:03:14 -07:00
mainWeaponObjectInfo = obj.mainWeaponObjectInfo;
2026-03-29 23:03:14 -07:00
weight = obj.weight;
2026-03-29 23:03:14 -07:00
objectToCombine = obj.objectToCombine;
combinedObject = obj.combinedObject;
combinedObjectMessage = obj.combinedObjectMessage;
button = obj.button;
2026-03-29 23:03:14 -07:00
spawnObject = obj.spawnObject;
2026-03-29 23:03:14 -07:00
useCustomObjectToDrop = obj.useCustomObjectToDrop;
customObjectToDrop = obj.customObjectToDrop;
dropObjectOffset = obj.dropObjectOffset;
2026-03-29 23:03:14 -07:00
cantBeStoredOnInventory = obj.cantBeStoredOnInventory;
2026-03-29 23:03:14 -07:00
canBeHeld = obj.canBeHeld;
2026-03-29 23:03:14 -07:00
canBePlaceOnQuickAccessSlot = obj.canBePlaceOnQuickAccessSlot;
2026-03-29 23:03:14 -07:00
canBeSetOnQuickSlots = obj.canBeSetOnQuickSlots;
2026-03-29 23:03:14 -07:00
setMaximumAmountPerSlot = obj.setMaximumAmountPerSlot;
maximumAmountPerSlot = obj.maximumAmountPerSlot;
2026-03-29 23:03:14 -07:00
setMaximumObjectAmount = obj.setMaximumObjectAmount;
maximumObjectAmount = obj.maximumObjectAmount;
}
2026-03-29 23:03:14 -07:00
public inventoryInfo ()
{
Name = "New Object";
objectInfo = "New Description";
}
public void InitializeAudioElements ()
{
if (soundOnUseObject != null) {
onUseObjectAudioElement.clip = soundOnUseObject;
}
}
public void setNewName (string newName)
{
Name = newName;
}
public void resetInventoryInfo ()
2026-03-29 23:03:14 -07:00
{
Name = "Empty Slot";
inventoryGameObject = null;
objectInfo = "It is an empty slot";
icon = null;
amount = 0;
amountPerUnit = 0;
2026-03-29 23:03:14 -07:00
infiniteAmount = false;
2026-03-29 23:03:14 -07:00
storeTotalAmountPerUnit = false;
2026-03-29 23:03:14 -07:00
showAmountPerUnitInAmountText = false;
2026-03-29 23:03:14 -07:00
canBeUsed = false;
canBeDropped = false;
canBeEquiped = false;
canBeCombined = false;
2026-03-29 23:03:14 -07:00
canBeExamined = false;
2026-03-29 23:03:14 -07:00
hideSlotOnMenu = false;
2026-03-29 23:03:14 -07:00
useNewBehaviorOnUse = false;
newBehaviorOnUseMessage = "";
newBehaviorOnUnableToUseMessage = "";
2026-03-29 23:03:14 -07:00
useOneUnitOnNewBehaviourCombine = true;
2026-03-29 23:03:14 -07:00
useNewBehaviorOnCombine = false;
newBehaviorOnCombineMessage = "";
2026-03-29 23:03:14 -07:00
useSoundOnUseObject = false;
soundOnUseObject = null;
onUseObjectAudioElement = null;
2026-03-29 23:03:14 -07:00
canBeDiscarded = false;
2026-03-29 23:03:14 -07:00
canBeSold = true;
vendorPrice = 0;
2026-03-29 23:03:14 -07:00
sellPrice = 0;
2026-03-29 23:03:14 -07:00
useMinLevelToBuy = false;
minLevelToBuy = 0;
2026-03-29 23:03:14 -07:00
weight = 0;
2026-03-29 23:03:14 -07:00
infiniteVendorAmountAvailable = false;
2026-03-29 23:03:14 -07:00
categoryName = "";
2026-03-29 23:03:14 -07:00
categoryIndex = 0;
elementIndex = 0;
2026-03-29 23:03:14 -07:00
isEquipped = false;
2026-03-29 23:03:14 -07:00
quickAccessSlotIndex = -1;
2026-03-29 23:03:14 -07:00
useDurability = false;
durabilityAmount = 100;
2026-03-29 23:03:14 -07:00
maxDurabilityAmount = 100;
2026-03-29 23:03:14 -07:00
objectIsBroken = false;
2026-03-29 23:03:14 -07:00
sellMultiplierIfObjectIsBroken = 1;
2026-03-29 23:03:14 -07:00
isWeapon = false;
isMeleeWeapon = false;
isMeleeShield = false;
2026-03-29 23:03:14 -07:00
isArmorClothAccessory = false;
2026-03-29 23:03:14 -07:00
projectilesInMagazine = -1;
2026-03-29 23:03:14 -07:00
mainWeaponObjectInfo = null;
2026-03-29 23:03:14 -07:00
objectToCombine = null;
combinedObject = null;
combinedObjectMessage = "";
2026-03-29 23:03:14 -07:00
if (menuIconElement != null) {
menuIconElement.icon.texture = null;
menuIconElement.iconName.text = "Empty Slot";
menuIconElement.amount.text = "0";
}
2026-03-29 23:03:14 -07:00
spawnObject = false;
2026-03-29 23:03:14 -07:00
useCustomObjectToDrop = false;
customObjectToDrop = null;
dropObjectOffset = Vector3.zero;
2026-03-29 23:03:14 -07:00
cantBeStoredOnInventory = false;
2026-03-29 23:03:14 -07:00
canBeHeld = false;
2026-03-29 23:03:14 -07:00
canBePlaceOnQuickAccessSlot = false;
2026-03-29 23:03:14 -07:00
canBeSetOnQuickSlots = false;
2026-03-29 23:03:14 -07:00
setMaximumAmountPerSlot = false;
maximumAmountPerSlot = 0;
2026-03-29 23:03:14 -07:00
setMaximumObjectAmount = false;
maximumObjectAmount = 0;
}
2026-03-29 23:03:14 -07:00
public inventoryInfo copyInventoryObject (inventoryInfo objectToStore, inventoryInfo objectToCopy)
{
objectToStore.Name = objectToCopy.Name;
objectToStore.inventoryGameObject = objectToCopy.inventoryGameObject;
objectToStore.objectInfo = objectToCopy.objectInfo;
objectToStore.icon = objectToCopy.icon;
2026-03-29 23:03:14 -07:00
objectToStore.infiniteAmount = objectToCopy.infiniteAmount;
2026-03-29 23:03:14 -07:00
objectToStore.storeTotalAmountPerUnit = objectToCopy.storeTotalAmountPerUnit;
2026-03-29 23:03:14 -07:00
objectToStore.showAmountPerUnitInAmountText = objectToCopy.showAmountPerUnitInAmountText;
2026-03-29 23:03:14 -07:00
objectToStore.canBeUsed = objectToCopy.canBeUsed;
objectToStore.canBeEquiped = objectToCopy.canBeEquiped;
objectToStore.canBeDropped = objectToCopy.canBeDropped;
objectToStore.canBeCombined = objectToCopy.canBeCombined;
2026-03-29 23:03:14 -07:00
objectToStore.canBeExamined = objectToCopy.canBeExamined;
2026-03-29 23:03:14 -07:00
objectToStore.hideSlotOnMenu = objectToCopy.hideSlotOnMenu;
2026-03-29 23:03:14 -07:00
objectToStore.useNewBehaviorOnUse = objectToCopy.useNewBehaviorOnUse;
objectToStore.newBehaviorOnUseMessage = objectToCopy.newBehaviorOnUseMessage;
objectToStore.newBehaviorOnUnableToUseMessage = objectToCopy.newBehaviorOnUnableToUseMessage;
2026-03-29 23:03:14 -07:00
objectToStore.useOneUnitOnNewBehaviourCombine = objectToCopy.useOneUnitOnNewBehaviourCombine;
2026-03-29 23:03:14 -07:00
objectToStore.useNewBehaviorOnCombine = objectToCopy.useNewBehaviorOnCombine;
objectToStore.newBehaviorOnCombineMessage = objectToCopy.newBehaviorOnCombineMessage;
2026-03-29 23:03:14 -07:00
useSoundOnUseObject = objectToCopy.useSoundOnUseObject;
soundOnUseObject = objectToCopy.soundOnUseObject;
onUseObjectAudioElement = objectToCopy.onUseObjectAudioElement;
2026-03-29 23:03:14 -07:00
objectToStore.isEquipped = objectToCopy.isEquipped;
2026-03-29 23:03:14 -07:00
objectToStore.quickAccessSlotIndex = objectToCopy.quickAccessSlotIndex;
2026-03-29 23:03:14 -07:00
useDurability = objectToCopy.useDurability;
durabilityAmount = objectToCopy.durabilityAmount;
2026-03-29 23:03:14 -07:00
maxDurabilityAmount = objectToCopy.maxDurabilityAmount;
2026-03-29 23:03:14 -07:00
objectIsBroken = objectToCopy.objectIsBroken;
2026-03-29 23:03:14 -07:00
sellMultiplierIfObjectIsBroken = objectToCopy.sellMultiplierIfObjectIsBroken;
2026-03-29 23:03:14 -07:00
objectToStore.isWeapon = objectToCopy.isWeapon;
objectToStore.isMeleeWeapon = objectToCopy.isMeleeWeapon;
objectToStore.isMeleeShield = objectToCopy.isMeleeShield;
2026-03-29 23:03:14 -07:00
objectToStore.isArmorClothAccessory = objectToCopy.isArmorClothAccessory;
2026-03-29 23:03:14 -07:00
objectToStore.objectToCombine = objectToCopy.objectToCombine;
objectToStore.combinedObject = objectToCopy.combinedObject;
objectToStore.combinedObjectMessage = objectToCopy.combinedObjectMessage;
2026-03-29 23:03:14 -07:00
objectToStore.menuIconElement.icon.texture = objectToCopy.icon;
2026-03-29 23:03:14 -07:00
objectToStore.canBeDiscarded = objectToCopy.canBeDiscarded;
2026-03-29 23:03:14 -07:00
objectToStore.canBeSold = objectToCopy.canBeSold;
objectToStore.vendorPrice = objectToCopy.vendorPrice;
objectToStore.infiniteVendorAmountAvailable = objectToCopy.infiniteVendorAmountAvailable;
objectToStore.categoryName = objectToCopy.categoryName;
2026-03-29 23:03:14 -07:00
objectToStore.categoryIndex = objectToCopy.categoryIndex;
objectToStore.elementIndex = objectToCopy.elementIndex;
2026-03-29 23:03:14 -07:00
objectToStore.sellPrice = objectToCopy.sellPrice;
2026-03-29 23:03:14 -07:00
objectToStore.useMinLevelToBuy = objectToCopy.useMinLevelToBuy;
objectToStore.minLevelToBuy = objectToCopy.minLevelToBuy;
2026-03-29 23:03:14 -07:00
objectToStore.weight = objectToCopy.weight;
2026-03-29 23:03:14 -07:00
objectToStore.spawnObject = objectToCopy.spawnObject;
2026-03-29 23:03:14 -07:00
useCustomObjectToDrop = objectToCopy.useCustomObjectToDrop;
customObjectToDrop = objectToCopy.customObjectToDrop;
dropObjectOffset = objectToCopy.dropObjectOffset;
2026-03-29 23:03:14 -07:00
objectToStore.cantBeStoredOnInventory = objectToCopy.cantBeStoredOnInventory;
2026-03-29 23:03:14 -07:00
objectToStore.canBeHeld = objectToCopy.canBeHeld;
2026-03-29 23:03:14 -07:00
objectToStore.canBePlaceOnQuickAccessSlot = objectToCopy.canBePlaceOnQuickAccessSlot;
2026-03-29 23:03:14 -07:00
objectToStore.canBeSetOnQuickSlots = objectToCopy.canBeSetOnQuickSlots;
2026-03-29 23:03:14 -07:00
setMaximumAmountPerSlot = objectToCopy.setMaximumAmountPerSlot;
maximumAmountPerSlot = objectToCopy.maximumAmountPerSlot;
setMaximumObjectAmount = objectToCopy.setMaximumObjectAmount;
maximumObjectAmount = objectToCopy.maximumObjectAmount;
return objectToStore;
}
}