using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class EquippableItemUI : MonoBehaviour
{
    [HideInInspector] public Text Name;
    [HideInInspector] public Text Description;
    [HideInInspector] public Text InfoValue;
    [HideInInspector] public Image Image;
    [HideInInspector] public int indexContainer;
    [HideInInspector] public EquippableItem ClickedEquippableItem;
    [SerializeField] private Attacks Attacks;

    public GameObject[] itemsArray;
    public GameObject rightHandSlot;
    private EquippableItem EquippedEquippableItem;
    private int counter;
    public GameObject unequipItemButton;
    private int itemPlayerPrefsHolder;

    public void PlayerPrefsCheck()
    {
        
        if (PlayerPrefs.HasKey("EquippedItem"))
        {
            itemPlayerPrefsHolder = PlayerPrefs.GetInt("EquippedItem");

            if (itemPlayerPrefsHolder == itemsArray.Length - 1)
            {
                Attacks.canHandFight = true;

                for (int i = 0; i < itemsArray.Length - 1; i++)
                {
                    itemsArray[i].SetActive(false);
                }
            }

            else if (itemPlayerPrefsHolder == 5)
            {
                for (int i = 0; i < itemsArray.Length - 1; i++)
                {
                    itemsArray[i].SetActive(false);
                    itemsArray[itemPlayerPrefsHolder].SetActive(true);
                    itemsArray[itemPlayerPrefsHolder + 1].SetActive(true);
                }
                Attacks.canDoubleAttack = true;
                Attacks.canHandFight = false;
            }
            else
            {
                for (int i = 0; i < itemsArray.Length - 1; i++)
                {
                    itemsArray[i].SetActive(false);
                    itemsArray[itemPlayerPrefsHolder].SetActive(true);
                }
                itemsArray[itemPlayerPrefsHolder].transform.SetParent(rightHandSlot.transform);
                itemsArray[itemPlayerPrefsHolder].transform.position = rightHandSlot.transform.position;

                Attacks.canDoubleAttack = false;
                Attacks.canHandFight = false;
            }
        }
        else
        {
            PlayerPrefs.SetInt("EquippedItem", itemsArray.Length - 1);

            itemPlayerPrefsHolder = PlayerPrefs.GetInt("EquippedItem");

            Attacks.canHandFight = true;

            for (int i = 0; i < itemsArray.Length - 1; i++)
            {
                itemsArray[i].SetActive(false);
            }
        }
    }
    public void ItemWasClicked(string itemName, string itemDescription, string itemInfoValue, Sprite itemArtwork, Vector3 artworkScale)
    {
            
            Name.text = itemName;
            Description.text = itemDescription;
            InfoValue.text = itemInfoValue;
            Image.sprite = itemArtwork;
            Image.transform.localScale = artworkScale;

        if (ClickedEquippableItem.isTheEquippedItem == true)
        {
            unequipItemButton.SetActive(true);
        }
        else if (ClickedEquippableItem.isTheEquippedItem == false)
        {
            unequipItemButton.SetActive(false);
        }
    }
   
    public void ExitButtonWasClicked()
    {
       gameObject.SetActive(false);
    }

    public void EquipButtonWasClicked()
    {


        unequipItemButton.SetActive(true);

        Attacks.canHandFight = false;

        counter++;
    
        if (counter > 1)
        {
            EquippedEquippableItem.slotBorder.gameObject.SetActive(false);
            EquippedEquippableItem.isTheEquippedItem = false;
            
        }
       
              EquippedEquippableItem = ClickedEquippableItem;
              EquippedEquippableItem.isTheEquippedItem = true;
        EquippedEquippableItem.slotBorder.gameObject.SetActive(true);

        indexContainer = EquippedEquippableItem.index;

        PlayerPrefs.SetInt("EquippedItem", indexContainer);

       

            if (indexContainer == 5)
            {
                for (int i = 0; i < itemsArray.Length - 1; i++)
                {
                    itemsArray[i].SetActive(false);
                    itemsArray[indexContainer].SetActive(true);
                    itemsArray[indexContainer + 1].SetActive(true);
                }
                Attacks.canDoubleAttack = true;
            }
            else
            {
                
                for (int i = 0; i < itemsArray.Length - 1; i++)
                {
                    itemsArray[i].SetActive(false);
                    itemsArray[indexContainer].SetActive(true);
                }
                itemsArray[indexContainer].transform.SetParent(rightHandSlot.transform);
                itemsArray[indexContainer].transform.position = rightHandSlot.transform.position;

                Attacks.canDoubleAttack = false;
            }
       
    }
    public void UnequipButtonWasClicked()
    {
        PlayerPrefs.SetInt("EquippedItem", 7);

        Attacks.canHandFight = true;

        unequipItemButton.SetActive(false);

        EquippedEquippableItem.slotBorder.gameObject.SetActive(false);
        EquippedEquippableItem.isTheEquippedItem = false;

        if (indexContainer == 5)
        {
            itemsArray[indexContainer].SetActive(false);
            itemsArray[indexContainer + 1].SetActive(false);
        }
        else
        {
            itemsArray[indexContainer].SetActive(false);
        }

    }

     public void ItemsOff()
     {
            for (int i = 0; i < itemsArray.Length - 1; i++)
            {
                itemsArray[i].SetActive(false);
            }
        
     }
    public void ItemsOn()
    {
        if (indexContainer == itemsArray.Length - 1)
        {

        }

        else if (indexContainer == 5)
        {
            itemsArray[indexContainer].SetActive(true);
            itemsArray[indexContainer + 1].SetActive(true);
        }

        else
        {
            for (int i = 0; i < itemsArray.Length - 1; i++)
            {
                itemsArray[i].SetActive(false);
                itemsArray[indexContainer].SetActive(true);
            }
        }
    }
    
}