using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
using System.Collections.Generic;
using System;
using GCGame.Table;

public class MarketSystemItem : UIItemSelect
{

    public Image _ItemIcon;
    public Image _ItemQuality;
    public Text _ItemName;
    public UICurrencyItem _Price;
    public Text _PriceUp;
    public Text _PriceDown;
    public Text _BuyLimit;
    public Text _SellEmpty;

    private ExchangeShopItem _ShowMarketItem;
    public ExchangeShopItem ShowMarketItem
    {
        get
        {
            return _ShowMarketItem;
        }
    }

    public override void Show(Hashtable hash)
    {
        base.Show();

        var marketItem = (ExchangeShopItem)hash["InitObj"];
        UpdateMarketItem(marketItem);
    }

    public void UpdateMarketItem(ExchangeShopItem marketItem)
    {
        if (_InitInfo != null)
        {
            (_InitInfo as ExchangeShopItem).HadBuyNum = marketItem.HadBuyNum;
        }
        _ShowMarketItem = marketItem;
        var commonItem = TableManager.GetCommonItemByID(marketItem.DataId, 0);
        var marketItemTab = TableManager.GetExchangeMarketByID(marketItem.DataId, 0);

        _ItemQuality.gameObject.SetActive(true);
        LoadAssetBundle.Instance.SetImageSprite(_ItemIcon, commonItem.Icon);
        LoadAssetBundle.Instance.SetImageSprite(_ItemQuality, GCGame.Utils.GetItemQualityFrame(commonItem));
        if (commonItem.QualityEffect > 0)
        {
            CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, _ItemIcon.transform);
        }
        else
        {
            CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, _ItemIcon.transform);
        }

        _ItemName.text = commonItem.Name;
        if (marketItem.CurPrice < 0)
        {
            _SellEmpty.gameObject.SetActive(true);
            _Price.gameObject.SetActive(false);
            _PriceUp.gameObject.SetActive(false);
            _PriceDown.gameObject.SetActive(false);
            _BuyLimit.text = "";
        }
        else
        {
            _SellEmpty.gameObject.SetActive(false);
            _Price.gameObject.SetActive(true);
            _Price.ShowCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND, marketItem.NewPrice);
            float delta = (marketItem.NewPrice - marketItem.CurPrice) / ((float)marketItem.CurPrice) * 100.0f;
            if (delta > 0)
            {
                _PriceUp.gameObject.SetActive(true);
                _PriceDown.gameObject.SetActive(false);
                _PriceUp.text = string.Format("{0:0.00}", delta) + "%";
            }
            else if (delta < 0)
            {
                _PriceUp.gameObject.SetActive(false);
                _PriceDown.gameObject.SetActive(true);
                _PriceDown.text = string.Format("{0:0.00}", delta) + "%";
            }
            else
            {
                _PriceUp.gameObject.SetActive(false);
                _PriceDown.gameObject.SetActive(false);
            }

            if (marketItemTab.LimitNum > 0)
            {
                _BuyLimit.text = StrDictionary.GetClientDictionaryString("#{9300}", marketItemTab.LimitNum - marketItem.HadBuyNum);
            }
            else
            {
                _BuyLimit.text = "";
            }
        }
    }

    public void OnShowItemTips()
    {
        ItemTooltipsLogic.ShowItemTooltip(_ShowMarketItem.DataId, ItemTooltipsLogic.ShowType.Info, transform.position);
        OnItemClick();
    }
}