//--------------------------------------------------------  
 | 
//    [Author]:           第二世界  
 | 
//    [  Date ]:           Monday, December 10, 2018  
 | 
//--------------------------------------------------------  
 | 
  
 | 
using System;  
 | 
using System.Collections;  
 | 
using System.Collections.Generic;  
 | 
using System.Linq;  
 | 
using UnityEngine;  
 | 
using UnityEngine.UI;  
 | 
  
 | 
namespace vnxbqy.UI  
 | 
{  
 | 
      
 | 
    public class GatherSoulXBWin : Window  
 | 
    {  
 | 
        [SerializeField] Text txtGuaranteCount;  //保底次数  
 | 
        [SerializeField] Text itemCountText;    
 | 
        [SerializeField] ButtonEx btnOneGo;  
 | 
        [SerializeField] ButtonEx btnManyGo;  
 | 
        [SerializeField] Toggle btnSkip;  
 | 
        [SerializeField] UIEffect uiEffect;  
 | 
  
 | 
        HappyXBModel XBModel { get { return ModelCenter.Instance.GetModel<HappyXBModel>(); } }  
 | 
        PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }  
 | 
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }  
 | 
  
 | 
        GatheringSoulModel model  
 | 
        {  
 | 
            get { return ModelCenter.Instance.GetModel<GatheringSoulModel>(); }  
 | 
        }  
 | 
  
 | 
        int type = GatheringSoulModel.xbType;  
 | 
  
 | 
        #region Built-in  
 | 
        protected override void BindController()  
 | 
        {  
 | 
        }  
 | 
  
 | 
        protected override void AddListeners()  
 | 
        {  
 | 
            btnSkip.AddListener(onToggleChange);  
 | 
  
 | 
            btnOneGo.SetListener(OnOneXunbao);  
 | 
            btnManyGo.SetListener(OnManeyXunbap);  
 | 
        }  
 | 
  
 | 
        protected override void OnPreOpen()  
 | 
        {  
 | 
            model.isOpenXBWin = true;  
 | 
            btnSkip.isOn = XBModel.isJumpGatherSoulXB;  
 | 
            XBModel.RefreshXBResultAct += RefreshXBResult;  
 | 
            XBModel.RefreshXBTypeInfoAct += RefreshXBTypeInfo;  
 | 
            uiEffect.OnComplete += OnCompleted;  
 | 
            playerPack.refreshItemCountEvent += PlayerPack_refreshItemCountEvent;  
 | 
            TreasurePavilionModel.Instance.isEffectPlaying = false;  
 | 
            XBModel.title = HappXBTitle.GatherSoul;  
 | 
            Display();  
 | 
        }  
 | 
  
 | 
  
 | 
  
 | 
        protected override void OnAfterOpen()  
 | 
        {  
 | 
        }  
 | 
  
 | 
        protected override void OnPreClose()  
 | 
        {  
 | 
            model.isOpenXBWin = false;  
 | 
            XBModel.RefreshXBResultAct -= RefreshXBResult;  
 | 
            XBModel.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;  
 | 
            uiEffect.OnComplete -= OnCompleted;  
 | 
            playerPack.refreshItemCountEvent -= PlayerPack_refreshItemCountEvent;  
 | 
        }  
 | 
  
 | 
  
 | 
  
 | 
        protected override void OnAfterClose()  
 | 
        {  
 | 
        }  
 | 
  
 | 
  
 | 
        #endregion  
 | 
  
 | 
        void onToggleChange(bool isOn)  
 | 
        {  
 | 
            XBModel.isJumpGatherSoulXB = isOn;  
 | 
        }  
 | 
  
 | 
        public void Display()  
 | 
        {  
 | 
            XBTypeInfo typeInfo = XBModel.GetXBInfoByType(type);  
 | 
            if (typeInfo == null)  
 | 
            {  
 | 
                typeInfo = new XBTypeInfo()  
 | 
                {  
 | 
                    xbType = type,  
 | 
                    luckValue = 0,  
 | 
                    freeCountToday = 0,  
 | 
                    treasureCount = 0,  
 | 
                };  
 | 
            }  
 | 
            int toolCnt = playerPack.GetItemCountByID(PackType.Item, GatheringSoulModel.xbItemID);  
 | 
            itemCountText.text = toolCnt.ToString();  
 | 
            int luckValue = typeInfo.luckValue;  
 | 
            int fullLuck = TreasureSetConfig.Get(type).FullLucky;  
 | 
            int onceLucky = TreasureSetConfig.Get(type).OnceLucky;  
 | 
            int guaranteCount = (fullLuck - luckValue) / onceLucky;  
 | 
  
 | 
            txtGuaranteCount.text = Language.Get("GatherSoulXB_1", guaranteCount);  
 | 
  
 | 
        }  
 | 
  
 | 
  
 | 
        private void RefreshXBResult()  
 | 
        {  
 | 
            if (XBModel.isJumpGatherSoulXB)  
 | 
            {  
 | 
                TreasurePavilionModel.Instance.isEffectPlaying = false;  
 | 
                WindowCenter.Instance.Open<HappyXBGetItemWin>();  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                uiEffect.Play();  
 | 
            }  
 | 
        }  
 | 
  
 | 
  
 | 
        private void RefreshXBTypeInfo()  
 | 
        {  
 | 
            Display();  
 | 
        }  
 | 
  
 | 
        public void OnCompleted()  
 | 
        {  
 | 
            TreasurePavilionModel.Instance.isEffectPlaying = false;  
 | 
            WindowCenter.Instance.Open<HappyXBGetItemWin>();  
 | 
        }  
 | 
  
 | 
  
 | 
        void OnOneXunbao()  
 | 
        {  
 | 
            if (TreasurePavilionModel.Instance.isEffectPlaying)  
 | 
                return;  
 | 
  
 | 
            var funcSet = XBModel.GetXBFuncSet(type);  
 | 
            if (XBModel.IsHaveOneXBTool(type))  
 | 
            {  
 | 
                TreasurePavilionModel.Instance.isEffectPlaying = true;  
 | 
                XBModel.SendXBQuest(type, 0, 2);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                int moneyType = XBModel.XBCostTypeDict[type];  
 | 
                int xbOneMoney = TreasureSetConfig.Get(type).CostMoneyList[0];  
 | 
  
 | 
                if (UIHelper.GetMoneyCnt(moneyType) >= (ulong) xbOneMoney)  
 | 
                {  
 | 
                    storeModel.UseMoneyCheck(xbOneMoney, () =>  
 | 
                    {  
 | 
                        TreasurePavilionModel.Instance.isEffectPlaying = true;  
 | 
                        XBModel.SendXBQuest(type, 0, 0);  
 | 
                    }, 3);  
 | 
                }  
 | 
                else  
 | 
                {  
 | 
                SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);  
 | 
  
 | 
                }  
 | 
                      
 | 
            }  
 | 
        }  
 | 
  
 | 
  
 | 
        void OnManeyXunbap()  
 | 
        {  
 | 
            if (TreasurePavilionModel.Instance.isEffectPlaying)  
 | 
                return;  
 | 
              
 | 
            int toolCnt = 0;  
 | 
            int needToolCnt = 0;  
 | 
            if (XBModel.IsHaveManyXBTool(type, out toolCnt, out needToolCnt))  
 | 
            {  
 | 
                if (toolCnt >= needToolCnt)  
 | 
                {  
 | 
                    TreasurePavilionModel.Instance.isEffectPlaying = true;  
 | 
                    XBModel.SendXBQuest(type, 1, 2);  
 | 
                    return;  
 | 
                }  
 | 
  
 | 
            }  
 | 
  
 | 
            int moneyType = XBModel.XBCostTypeDict[type];  
 | 
            int xbManyMoney = TreasureSetConfig.Get(type).CostMoneyList[1];  
 | 
  
 | 
            if (UIHelper.GetMoneyCnt(moneyType) >= (ulong)xbManyMoney)  
 | 
            {  
 | 
                storeModel.UseMoneyCheck(xbManyMoney, () =>  
 | 
                {  
 | 
                    TreasurePavilionModel.Instance.isEffectPlaying = true;  
 | 
                    XBModel.SendXBQuest(type, 1, 0);  
 | 
                }, 3);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);  
 | 
  
 | 
            }  
 | 
  
 | 
        }  
 | 
  
 | 
        private void PlayerPack_refreshItemCountEvent(PackType type, int arg2, int itemID)  
 | 
        {  
 | 
            if (type == PackType.Item && itemID == GatheringSoulModel.xbItemID)  
 | 
            {  
 | 
                int toolCnt = playerPack.GetItemCountByID(PackType.Item, GatheringSoulModel.xbItemID);  
 | 
                itemCountText.text = toolCnt.ToString();  
 | 
            }  
 | 
        }  
 | 
    }  
 | 
  
 | 
}  
 | 
  
 | 
  
 | 
  
 | 
  
 |