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