using UnityEngine;
using System.Collections;
using GCGame.Table;
using Games.GlobeDefine;
using UnityEngine.UI;
using System.Collections.Generic;

public class FashionViewPanelCtr : MonoBehaviour{

    public Text fashionItemName;
    public UICameraTexture modelCamera; 

    public static FashionViewPanelCtr Instance;
    private void Awake()
    {
        Instance = this;
    }

    private void OnDestroy()
    {
        Instance = null;
    }

    private void OnEnable()
    {
        SetBtnNameAndState();
    }

    public List<GameObject> _MarkIconList;
    public List<Text> _MenuItemNameList;

    private int _CurItemVisualId = -1;
    public void ShowFashionView(Tab_CommonItem _CommonItem)
    {
        fashionItemName.text = _CommonItem.Name;
        Tab_CommonFashionItem commonFashionItem = TableManager.GetCommonFashionItemByID(_CommonItem.Id, 0);
        if(commonFashionItem == null)
        {
            OnBackClick();
            return;
        }
        int _Prefession = -1;
        var _MainPlayer = Singleton<ObjManager>.Instance.MainPlayer;
        if(_MainPlayer != null)
        {
            _Prefession = _MainPlayer.Profession;
        }else
        {
            _Prefession = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession;
        }
        if(_Prefession == -1)
        {
            OnBackClick();
            return;
        }
        switch(_CommonItem.SubClassID)
        {
            case (int)Games.Item.FashionSubClass.FASHION:
                {
                    if(gameObject.activeInHierarchy)
                    {
                        _CurItemVisualId = commonFashionItem.ItemVisualId;
                        OnProfessionBtnClick(_Prefession);
                    }
                }
                break;
            default:
                break;
        }
    }

    public void SetBtnNameAndState()
    {
        for(int index = 0; index < (int)CharacterDefine.PROFESSION.MAX; index ++)
        {
            string _StrId = "#{" + (int)CharacterDefine.PROFESSION_DICNUM[index] + "}";
            _MenuItemNameList[index].text = _MenuItemNameList[index + (int)CharacterDefine.PROFESSION.MAX].text = StrDictionary.GetClientDictionaryString(_StrId);
        }
    }

    public void OnProfessionBtnClick(int index )
    {
        for(int _Index = 0; _Index < _MarkIconList.Count; _Index++)
        {
            _MarkIconList[_Index].SetActive(index == _Index);
        }

        //StopAllCoroutines();
        if (_IsMarryView)
        {
            StartCoroutine(ShowFashionView(_CurFashionItemId, index));
        }else
        {
            StartCoroutine(ShowSelfFashionView(_CurItemVisualId, index));
        }
    }

    private int _CurFashionItemId = -1;
    private int _MarryItemDataId = -1;
    public void SetFashionView(int fahsionItemId, int profession, int marryItemId)
    {
        _IsMarryView = true;
        _CurFashionItemId = fahsionItemId;
        _MarryItemDataId = marryItemId;
        OnProfessionBtnClick(profession);
    }

    private bool _IsMarryView = false;
    IEnumerator ShowSelfFashionView(int _ItemVisualId, int profession)
    {
        yield return new WaitForEndOfFrame();
        var itemVisual = TableManager.GetItemVisualByID(_ItemVisualId, 0);
        if (itemVisual == null)
        {
            yield break;
        }

        int charModelId = -1;
        switch (profession)
        {
            case (int)CharacterDefine.PROFESSION.XUANNV:
                charModelId = itemVisual.CharModelIDXiaoYao;
                break;
            case (int)CharacterDefine.PROFESSION.LIUSHAN:
                charModelId = itemVisual.CharModelIDTianShan;
                break;
            case (int)CharacterDefine.PROFESSION.SHUSHAN:
                charModelId = itemVisual.CharModelIDDaLi;
                break;
            case (int)CharacterDefine.PROFESSION.TIANJI:
                charModelId = itemVisual.CharModelIDShaoLin;
                break;
        }
        Tab_CharModel charModel = TableManager.GetCharModelByID(charModelId, 0);
        if(charModel == null)
        {
            yield break;
        }

        modelCamera.InitModelPath(charModel.ResPath, charModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true);
        yield break;
    }

    IEnumerator ShowFashionView(int fahsionItemId, int profession)
    {
        yield return new WaitForEndOfFrame();
        var fahionItemTab = TableManager.GetFashionItemByID(fahsionItemId, 0);
        if(fahionItemTab == null)
        {
            yield break;
        }

        Tab_CommonItem commonmItem = TableManager.GetCommonItemByID(_MarryItemDataId, 0);
        if (commonmItem != null)
        {
            fashionItemName.text = commonmItem.Name;
        }

        var itemVisual = TableManager.GetItemVisualByID(fahionItemTab.ItemVisualId, 0);
        if(itemVisual == null)
        {
            yield break;
        }

        int charModelId = -1;
       switch(profession)
        {
            case (int)CharacterDefine.PROFESSION.XUANNV:
                charModelId = itemVisual.CharModelIDXiaoYao;
                break;
            case (int)CharacterDefine.PROFESSION.LIUSHAN:
                charModelId = itemVisual.CharModelIDTianShan;
                break;
            case (int)CharacterDefine.PROFESSION.SHUSHAN:
                charModelId = itemVisual.CharModelIDDaLi;
                break;
            case (int)CharacterDefine.PROFESSION.TIANJI:
                charModelId = itemVisual.CharModelIDShaoLin;
                break;
        }
        if(charModelId == -1)
        {
            yield break;
        }
        Tab_CharModel charModel = TableManager.GetCharModelByID(charModelId, 0);
        if(charModel == null)
        {
            yield break;
        }

        modelCamera.InitModelPath(charModel.ResPath, charModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true);
        yield break;
    }

    public void OnBackClick()
    {
        UIManager.CloseUI(UIInfo.FashionViewPanel);
    }

    private void OnDisable()
    {
        _IsMarryView = false;  //隐藏的时候重置
    }
}