| | using System; |
| | using System.Collections; |
| | using System.Collections.Generic; |
| | using UnityEngine; |
| | using UnityEngine.EventSystems; |
| | using UnityEngine.UI; |
| |
|
| | public class InventoryItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler |
| | { |
| | |
| | public bool isTrashable; |
| |
|
| | |
| | private GameObject itemInfoUI; |
| |
|
| | private Text itemInfoUI_itemName; |
| | private Text itemInfoUI_itemDescription; |
| | private Text itemInfoUI_itemFunctionality; |
| |
|
| | public string thisName, thisDescription, thisFunctionality; |
| |
|
| | |
| | private GameObject itemPendingConsumption; |
| | public bool isConsumable; |
| |
|
| | public float healthEffect; |
| | public float caloriesEffect; |
| | public float hydrationEffect; |
| |
|
| | public bool isEquitable; |
| | private GameObject itemPendingEquipping; |
| | public bool isInQuickSlot; |
| | internal bool isSelected; |
| |
|
| | public bool isUsable; |
| | public GameObject itemPendingToBeUsed; |
| |
|
| | private void Start() |
| | { |
| | itemInfoUI = InventorySystem.Instance.ItemInfoUI; |
| | itemInfoUI_itemName = itemInfoUI.transform.Find("itemName").GetComponent<Text>(); |
| | itemInfoUI_itemDescription = itemInfoUI.transform.Find("itemDescription").GetComponent<Text>(); |
| | itemInfoUI_itemFunctionality = itemInfoUI.transform.Find("itemFunctionality").GetComponent<Text>(); |
| | } |
| |
|
| | private void Update() |
| | { |
| | if (isSelected) |
| | { |
| | gameObject.GetComponent<DragDrop>().enabled = false; |
| | } |
| | else |
| | { |
| | gameObject.GetComponent<DragDrop>().enabled = true; |
| | } |
| | } |
| |
|
| | |
| | public void OnPointerEnter(PointerEventData eventData) |
| | { |
| | itemInfoUI.SetActive(true); |
| | itemInfoUI_itemName.text = thisName; |
| | itemInfoUI_itemDescription.text = thisDescription; |
| | itemInfoUI_itemFunctionality.text = thisFunctionality; |
| | } |
| |
|
| | |
| | public void OnPointerExit(PointerEventData eventData) |
| | { |
| | itemInfoUI.SetActive(false); |
| | } |
| |
|
| | |
| | public void OnPointerDown(PointerEventData eventData) |
| | { |
| | |
| | if (eventData.button == PointerEventData.InputButton.Right) |
| | { |
| | if (isConsumable) |
| | { |
| | |
| | itemPendingConsumption = gameObject; |
| | consumingFunction(healthEffect, caloriesEffect, hydrationEffect); |
| | } |
| | if (isEquitable && isInQuickSlot == false && !EquipSystem.Instance.CheckIfFull()) |
| | { |
| | EquipSystem.Instance.AddToQuickSlots(gameObject); |
| | isInQuickSlot = true; |
| |
|
| | } |
| | if (isUsable) |
| | { |
| | ConstructionManager.Instance.itemToBeDestroyed = gameObject; |
| | UseItem(); |
| | } |
| | } |
| |
|
| |
|
| | } |
| |
|
| | |
| | public void OnPointerUp(PointerEventData eventData) |
| | { |
| | if (eventData.button == PointerEventData.InputButton.Right) |
| | { |
| | if (isConsumable && itemPendingConsumption == gameObject) |
| | { |
| | DestroyImmediate(gameObject); |
| | InventorySystem.Instance.ReCalculateList(); |
| | CraftingSystem.Instance.RefreshNeededItems(); |
| | } |
| | |
| | |
| | |
| | |
| | |
| | } |
| | } |
| |
|
| | private void consumingFunction(float healthEffect, float caloriesEffect, float hydrationEffect) |
| | { |
| | itemInfoUI.SetActive(false); |
| |
|
| | healthEffectCalculation(healthEffect); |
| |
|
| | caloriesEffectCalculation(caloriesEffect); |
| |
|
| | hydrationEffectCalculation(hydrationEffect); |
| |
|
| | } |
| |
|
| |
|
| | private static void healthEffectCalculation(float healthEffect) |
| | { |
| | |
| |
|
| | float healthBeforeConsumption = PlayerState.Instance.currentHealth; |
| | float maxHealth = PlayerState.Instance.maxHealth; |
| |
|
| | if (healthEffect != 0) |
| | { |
| | if ((healthBeforeConsumption + healthEffect) > maxHealth) |
| | { |
| | PlayerState.Instance.setHealth(maxHealth); |
| | } |
| | else |
| | { |
| | PlayerState.Instance.setHealth(healthBeforeConsumption + healthEffect); |
| | } |
| | } |
| | } |
| |
|
| |
|
| | private static void caloriesEffectCalculation(float caloriesEffect) |
| | { |
| | |
| |
|
| | float caloriesBeforeConsumption = PlayerState.Instance.currentCalories; |
| | float maxCalories = PlayerState.Instance.maxCalories; |
| |
|
| | if (caloriesEffect != 0) |
| | { |
| | if ((caloriesBeforeConsumption + caloriesEffect) > maxCalories) |
| | { |
| | PlayerState.Instance.setCalories(maxCalories); |
| | } |
| | else |
| | { |
| | PlayerState.Instance.setCalories(caloriesBeforeConsumption + caloriesEffect); |
| | } |
| | } |
| | } |
| |
|
| |
|
| | private static void hydrationEffectCalculation(float hydrationEffect) |
| | { |
| | |
| |
|
| | float hydrationBeforeConsumption = PlayerState.Instance.currentHydration; |
| | float maxHydration = PlayerState.Instance.maxHydration; |
| |
|
| | if (hydrationEffect != 0) |
| | { |
| | if ((hydrationBeforeConsumption + hydrationEffect) > maxHydration) |
| | { |
| | PlayerState.Instance.setHydration(maxHydration); |
| | } |
| | else |
| | { |
| | PlayerState.Instance.setHydration(hydrationBeforeConsumption + hydrationEffect); |
| | } |
| | } |
| | } |
| |
|
| |
|
| |
|
| | private void UseItem() |
| | { |
| | itemInfoUI.SetActive(false); |
| | InventorySystem.Instance.isOpen = false; |
| | InventorySystem.Instance.inventoryScreenUI.SetActive(false); |
| | CraftingSystem.Instance.isOpen = false; |
| | CraftingSystem.Instance.craftingScreenUI.SetActive(false); |
| | CraftingSystem.Instance.toolsScreenUI.SetActive(false); |
| | CraftingSystem.Instance.survivalScreenUI.SetActive(false); |
| | CraftingSystem.Instance.refineScreenUI.SetActive(false); |
| | CraftingSystem.Instance.constructionScreenUI.SetActive(false); |
| |
|
| | Cursor.lockState = CursorLockMode.Locked; |
| | Cursor.visible=false; |
| |
|
| | SelectionManager.Instance.EnableSelection(); |
| | SelectionManager.Instance.enabled = true; |
| |
|
| | switch (gameObject.name) { |
| | case "Foundation(Clone)": |
| | ConstructionManager.Instance.ActivateConstructionPlacement("FoundationModel"); |
| | break; |
| | case "Foundation": |
| | ConstructionManager.Instance.ActivateConstructionPlacement("FoundationModel"); |
| | break; |
| | } |
| |
|
| |
|
| |
|
| |
|
| |
|
| | } |
| | } |
| |
|