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

public class MarketPlayerPublicity : UIControllerBase<MarketPlayerPublicity>
{
    void Awake()
    {
        InitMenu();
    }
	// Use this for initialization
	void OnEnable ()
    {
        SetInstance(this);
        _BuyPage.SetActive(true);
        UpdatePage();
    }

    void OnDisable()
    {
        SetInstance(null);
    }
	
	// Update is called once per frame
	void Update ()
    {
	
	}

    #region showPage

    public GameObject _BuyPage;

    public UISubScollMenu _BuyItemMenu;
    public MarketFindPage _FindPage;
    public MarketEquipFilterPage _EquipFilterPaeg;
    public MarketItemClassPage _ItemClassPage;
    public MarketItemListPage _ItemListPage;
    public UICurrencyItem _OwnMoney;
    public GameObject _NoneWatchPanel;

    private bool _IsShowWatchPanel = false;

    private Market.MarketItemClass _SelectedPage;
    public Market.MarketItemClass SelectedPage
    {
        get
        {
            return _SelectedPage;
        } 
    }
    private void InitMenu()
    {
        _BuyItemMenu.PushMenu(new Market.MarketItemClass(999, 1));
        _BuyItemMenu.PushMenu(new Market.MarketItemClass(998, 1));
        _BuyItemMenu.PushMenu(new Market.MarketItemClass(1, 2));
        _BuyItemMenu.PushMenu(new Market.MarketItemClass(1, 3));
        _BuyItemMenu.PushMenu(Market.GetMarketClassName(9, 4), new Market.MarketItemClass[4] { new Market.MarketItemClass(6, 2), new Market.MarketItemClass(7, 1) , new Market.MarketItemClass(7, 2), new Market.MarketItemClass(9, 1) });

        
    }

    public void UpdateShopInfo()
    {
        if (!_IsShowWatchPanel)
        {
            if (_ItemListPage.gameObject.activeSelf)
            {
                _ItemListPage.RefreshItems();
                _ItemListPage.UpdateWatchBtn();
            }
        }
        else
        {
            if (Market.WatchItems.Count > 0)
            {
                _ItemListPage.gameObject.SetActive(true);
                _ItemListPage.UpdateWatchItems();
                _NoneWatchPanel.SetActive(false);
            }
            else
            {
                _ItemListPage.gameObject.SetActive(false);
                _ItemListPage.UpdateWatchItems();
                _NoneWatchPanel.SetActive(true);
            }
        }

    }

    public void UpdatePage()
    {
        _OwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_COIN);

        StartCoroutine(UpdateMenu());
    }

    private IEnumerator UpdateMenu()
    {
        yield return new WaitForEndOfFrame();
        _BuyItemMenu.ShowDefaultFirst();
    }


    public void OnMenu(object menuObj)
    {
        var selectedPage = menuObj as Market.MarketItemClass;
        if (selectedPage == null)
            return;

        _SelectedPage = selectedPage;

        _IsShowWatchPanel = false;
        _NoneWatchPanel.SetActive(false);
        if (_SelectedPage.ItemClass == 999)//关注
        {
            _IsShowWatchPanel = true;
            OnShowWatch();
        }
        else if (_SelectedPage.ItemClass == 998)//关注
        {
            ShowItemList(null, MarketItemListPage.SHOW_ITEM_CNT_PER_PAGE);
        }
        else if (_SelectedPage.ItemClass == 1)
        {
            if (_SelectedPage.ItemSubClass == 1)
            {
                ShowEquipFilter(0);
            }
            else if (_SelectedPage.ItemSubClass == 2)
            {
                ShowEquipFilter(2);
            }
            else if (_SelectedPage.ItemSubClass == 3)
            {
                ShowEquipFilter(1);
            }
        }
        else
        {
            ShowItemClass();
        }
    }

    public void OnShowWatch()
    {
        _FindPage.gameObject.SetActive(false);
        _EquipFilterPaeg.gameObject.SetActive(false);
        _ItemClassPage.gameObject.SetActive(false);
        _ItemListPage.gameObject.SetActive(false);
        _NoneWatchPanel.SetActive(true);

        CG_REQ_USER_SHOP_FOCUS_ITEMS packet = (CG_REQ_USER_SHOP_FOCUS_ITEMS)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_USER_SHOP_FOCUS_ITEMS);
        packet.SetState((int)CG_REQ_USER_SHOP_FOCUS_ITEMS.EUserShopFocusState.EFocustemOnShow);
        packet.SendPacket();
    }

    private void ShowEquipFilter(int filterType)
    {
        _FindPage.gameObject.SetActive(false);
        _EquipFilterPaeg.gameObject.SetActive(true);
        _ItemClassPage.gameObject.SetActive(false);
        _ItemListPage.gameObject.SetActive(false);

        _EquipFilterPaeg.SetEquipFilter(filterType);
    }

    private void ShowItemClass()
    {
        _FindPage.gameObject.SetActive(false);
        _EquipFilterPaeg.gameObject.SetActive(false);
        _ItemClassPage.gameObject.SetActive(true);
        _ItemListPage.gameObject.SetActive(false);

        _ItemClassPage.ShowItemClass(_SelectedPage.ItemClass, _SelectedPage.ItemSubClass, true);
    }

    public void ShowItemList(List<int> itemDataID, int itemCnt, int isRare = 2)
    {
        _FindPage.gameObject.SetActive(false);
        _EquipFilterPaeg.gameObject.SetActive(false);
        _ItemClassPage.gameObject.SetActive(false);
        _ItemListPage.gameObject.SetActive(true);

        _ItemListPage.ShowItemType(itemDataID, itemCnt, isRare);
    }

    private void ShowLikeItemList()
    {
        _FindPage.gameObject.SetActive(false);
        _EquipFilterPaeg.gameObject.SetActive(false);
        _ItemClassPage.gameObject.SetActive(false);
        _ItemListPage.gameObject.SetActive(true);
    }
    #endregion


}