using UI.CommonGame;
using System.Collections.Generic;
using FairyGUI;
namespace GFGGame
{
    /// 
    /// 获取途径
    /// 
    public class ApproachOfItemView : BaseWindow
    {
        private UI_ApproachOfItemUI _ui;
        private List _approachDatas;
        private int _itemId;
        private object[] _fromeViewDatas;
        protected override void OnInit()
        {
            base.OnInit();
            _ui = UI_ApproachOfItemUI.Create();
            this.viewCom = _ui.target;
            this.viewCom.Center();
            this.modal = true;
            viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
            _ui.m_listApproach.itemRenderer = ListApproachItemRenderer;
            _ui.m_listApproach.onClickItem.Add(OnClickListApproachItem);
        }
        protected override void OnShown()
        {
            base.OnShown();
            object[] temp = viewData as object[];
            _itemId = (int)temp[0];
            _fromeViewDatas = temp[1] as object[];
            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_itemId);
            _ui.m_txtName.text = itemCfg.name;
            _ui.m_listApproach.RemoveChildrenToPool();
            if (itemCfg.approach.Length > 0)
            {
                _ui.m_txtNone.visible = false;
                string[] approachStrs = itemCfg.approach.Split(';');
                _approachDatas = new List();
                foreach (string approachStr in approachStrs)
                {
                    if (approachStr.Length > 0)
                    {
                        string[] infos = approachStr.Split('=');
                        _approachDatas.Add(infos);
                    }
                }
                _ui.m_listApproach.numItems = _approachDatas.Count;
                // _ui.m_listApproach.ResizeToFit();
            }
            else
            {
                _ui.m_txtNone.visible = true;
                // _ui.m_listApproach.height = 162;
            }
        }
        protected override void OnHide()
        {
            base.OnHide();
            _fromeViewDatas = null;
        }
        private void ListApproachItemRenderer(int index, GObject item)
        {
            UI_ButtonApproach listItem = UI_ButtonApproach.Proxy(item);
            string[] infos = _approachDatas[index];
            string functionId = infos[0];
            GameFunctionCfg gameFunctionCfg = GameFunctionCfgArray.Instance.GetCfg(functionId);
            if (functionId == ConstFunctionId.JU_QING_GUAN_QIA)
            {
                string value = infos[1];
                var levelCfgId = int.Parse(value);
                var levelCfg = StoryLevelCfgArray.Instance.GetCfg(levelCfgId);
                if (levelCfg.type == ConstInstanceZonesType.Story)
                {
                    var chapterCfg = StoryChapterCfgArray.Instance.GetCfg(levelCfg.chapterId);
                    string chapter = NumberUtil.GetChiniseNumberText(chapterCfg.order);
                    string level = NumberUtil.GetChiniseNumberText(levelCfg.order);
                    listItem.target.text = string.Format(gameFunctionCfg.name, chapter, level);
                }
                else if (levelCfg.type == ConstInstanceZonesType.Studio)
                {
                    var studioCfg = StudioCfgArray.Instance.GetCfg(levelCfg.chapterId);
                    listItem.target.text = studioCfg.name;
                }
            }
            else
            {
                listItem.target.text = gameFunctionCfg.name;
            }
            listItem.target.data = infos;
        }
        private void OnClickListApproachItem(EventContext context)
        {
            GObject listItem = context.data as GObject;
            string[] infos = listItem.data as string[];
            string functionId = infos[0];
            switch (functionId)
            {
                case ConstFunctionId.FU_ZHUANG_DIAN:
                    this.Hide();
                    object[] temp = viewData as object[];
                    int count = temp.Length > 2 ? (int)temp[2] : 1;
                    ViewManager.Show(ViewName.CLOTHING_SHOP_VIEW, new object[] { null, null, _itemId, count }, _fromeViewDatas, true, true);
                    break;
                case ConstFunctionId.JU_QING_GUAN_QIA:
                    string value = infos[1];
                    var levelCfgId = int.Parse(value);
                    var levelCfg = StoryLevelCfgArray.Instance.GetCfg(levelCfgId);
                    if (!MainStoryDataManager.CheckLevelUnlock(levelCfgId))
                    {
                        PromptController.Instance.ShowFloatTextPrompt("关卡未开启");
                        break;
                    }
                    if (levelCfg.type == ConstInstanceZonesType.Story)
                    {
                        if ((string)_fromeViewDatas[0] == ViewName.DRESS_UP_FIGHT_VIEW)
                        {
                            //从战斗换装必需品来源跳转到剧情界面,在剧情界面点返回后直接返回章节界面,无需返回换装界面
                            _fromeViewDatas = null;
                        }
                        ViewManager.Show(ViewName.STORY_CHAPTER_VIEW, levelCfg.chapterId, _fromeViewDatas, true);
                    }
                    else if (levelCfg.type == ConstInstanceZonesType.Studio)
                    {
                        //TO DO
                    }
                    StoryController.ShowLevelView(levelCfgId);
                    break;
                case ConstFunctionId.FU_ZHUANG_HE_CHENG:
                    int suitId = SuitCfgManager.Instance.GetItemSuitId(_itemId);
                    if (suitId > 0)
                    {
                        this.Hide();
                        ViewManager.Show(ViewName.CLOTHING_SYNTHETIC_VIEW, new object[] { suitId, _itemId }, _fromeViewDatas);
                    }
                    break;
                case ConstFunctionId.ZHAI_XING:
                    this.Hide();
                    ViewManager.Show(ViewName.LUCKY_BOX_VIEW, null, _fromeViewDatas);
                    break;
                case ConstFunctionId.TAO_ZHUANG_TU_JIAN:
                    if (ViewManager.isViewOpen(ViewName.SUIT_GUIDE_VIEW))
                    {
                        this.Hide();
                        return;
                    }
                    this.Hide();
                    ViewManager.Show(ViewName.SUIT_GUIDE_VIEW, null, _fromeViewDatas);
                    break;
                case ConstFunctionId.TAO_ZHUANG_HE_CHENG:
                    this.Hide();
                    ViewManager.Show(ViewName.SUIT_SYNTHETIC_LIST_VIEW);
                    break;
            }
        }
        protected override void UpdateToCheckGuide(object param)
        {
            if (!ViewManager.CheckIsTopView(this.viewCom)) return;
            if (_approachDatas == null) return;
            int index = 0;
            for (int i = 0; i < _approachDatas.Count; i++)
            {
                if (_approachDatas[i][0] == ConstFunctionId.FU_ZHUANG_DIAN)
                {
                    index = i;
                    break;
                }
            }
            GuideController.TryGuide(_ui.m_listApproach, ConstGuideId.BUY_CLOTHING, 2, "该物品可以在服装店购买,点开服装店看看", index, true, (int)(this.viewCom.y + this.viewCom.height + 10));
        }
    }
}