少年修仙传客户端代码仓库
client_Zxw
2018-08-17 1a13e98582ce38176d33c64e1437bd6b658195fb
System/HappyXB/BestXBWin.cs
@@ -5,6 +5,7 @@
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI
{
@@ -27,7 +28,11 @@
        [SerializeField] Transform getXBItemParent;
        [SerializeField] GameObject xbResultObj;
        [SerializeField] GameObject maskObj;
        [SerializeField] GameObject toolXBShowObj;
        [SerializeField] Image toolImg1;
        [SerializeField] Image toolImg2;
        [SerializeField] Text toolNumText;
        [Header("控制寻宝转动圈数")]
        [SerializeField] int cycleTimes = 1;
        [Header("时间间隔")]
@@ -47,6 +52,9 @@
        List<CommonItemBaisc> xbResultItemBasiclist = new List<CommonItemBaisc>();
        HappyXBModel XBModel { get { return ModelCenter.Instance.GetModel<HappyXBModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        XBFuncSet funcSet;
        float coolTime = 3;
        protected override void BindController()
        {
@@ -90,7 +98,9 @@
            XBModel.RefreshBestXBTimeAct += RefreshFreeTime;
            XBModel.RefreshXBTypeInfoAct += RefreshXBTypeInfo;
            XBModel.RefreshXBResultAct += RefreshXBResult;
            playerPack.RefreshItemCountAct += RefreshItemCount;
            getItemlist = XBModel.GetXBGetItemByID(1).Values.ToList();
            GlobalTimeEvent.Instance.secondEvent += RefreshSecond;
            isHaveFreeTime = XBModel.IsHaveFreeXBTime(1);
            InitUI();
            TimeDownMgr.CoolTimeData data;
@@ -116,10 +126,31 @@
            XBModel.RefreshXBResultAct -= RefreshXBResult;
            XBModel.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;
            XBModel.RefreshAgainXBAct -= RefreshAgainXB;
            playerPack.RefreshItemCountAct -= RefreshItemCount;
            GlobalTimeEvent.Instance.secondEvent -= RefreshSecond;
        }
        protected override void OnAfterClose()
        {
        }
        private void RefreshSecond()
        {
            if(XBModel.isXBCoolTime)
            {
                coolTime -= 1;
                if(coolTime < 0)
                {
                    XBModel.isXBCoolTime = false;
                    ResetXBItemState();
                    coolTime = 3;
                    DebugEx.Log("请求超时服务端未回包");
                }
            }
            else
            {
                coolTime = 3;
            }
        }
        private void InitUI()
@@ -142,7 +173,7 @@
            getXBItemParent.gameObject.SetActive(false);
            xbResultObj.SetActive(false);
            freeXbBtn.gameObject.SetActive(false);
            XBFuncSet funcSet = XBModel.GetXBFuncSet(1);
            funcSet = XBModel.GetXBFuncSet(1);
            if(funcSet != null)
            {
                xbBtnText.text = Language.Get("HappyXB101", funcSet.xbNums[0]);
@@ -151,9 +182,21 @@
                xbManyMoneyText.text = funcSet.xbPrices[1].ToString();
                xbOneMoney = funcSet.xbPrices[0];
                xbManyMoney = funcSet.xbPrices[1];
                ItemConfig itemConfig1 = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[0]);
                ItemConfig itemConfig2 = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[1]);
                if(itemConfig1 != null)
                {
                    toolImg1.SetSprite(itemConfig1.IconKey);
                }
                if (itemConfig2 != null)
                {
                    toolImg2.SetSprite(itemConfig2.IconKey);
                }
            }
            RefreshXBTypeInfo();
            RefreshXBTools();
        }
        private void RefreshFreeTime(float time)
@@ -170,8 +213,11 @@
                {
                    freeXBTimeText.gameObject.SetActive(true);
                    freeXBTimeText.text = Language.Get("HappyXB102", TimeUtility.SecondsToHMSCHSRetain((int)time));
                    freeXbBtn.gameObject.SetActive(false);
                    xbBtn.gameObject.SetActive(true);
                    if(!XBModel.IsHaveOneXBTool(1))
                    {
                        freeXbBtn.gameObject.SetActive(false);
                        xbBtn.gameObject.SetActive(true);
                    }
                }
            }
            else
@@ -179,6 +225,39 @@
                freeXBTimeText.gameObject.SetActive(false);
            }
         
        }
        private void RefreshItemCount(PackType type, int index, int id)
        {
            if (type != PackType.rptItem || !XBModel.CheckIsXBTool(id, 1)) return;
            RefreshXBTools();
        }
        public void RefreshXBTools()
        {
            if(XBModel.IsHaveOneXBTool(1))
            {
                freeXbBtn.gameObject.SetActive(true);
                xbBtn.gameObject.SetActive(false);
            }
            else
            {
                freeXbBtn.gameObject.SetActive(false);
                xbBtn.gameObject.SetActive(true);
            }
            int xbToolCnt = 0;
            if (XBModel.IsHaveManyXBTool(1,out xbToolCnt))
            {
                toolXBShowObj.SetActive(true);
                toolNumText.text = StringUtility.Contact("x", xbToolCnt);
            }
            else
            {
                toolXBShowObj.SetActive(false);
            }
        }
@@ -194,16 +273,47 @@
        {
            if (XBModel.CheckIsEmptyGrid(PackType.rptTreasure))
            {
                if (UIHelper.GetMoneyCnt(1) >= (ulong)xbManyMoney)
                int toolCnt = 0;
                if(XBModel.IsHaveManyXBTool(1,out toolCnt))
                {
                    maskObj.SetActive(true);
                    isXBMany = true;
                    XBModel.SendXBQuest(1, 1, 0);
                    int needToolCnt = funcSet.costToolNums[1] - toolCnt;
                    int needMoney = needToolCnt * xbOneMoney;
                    if(needToolCnt > 0)
                    {
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HappyXBCostTools", funcSet.costToolNums[1],needMoney,needToolCnt), (bool isOk) =>
                        {
                            if (isOk)
                            {
                                CheckXBManyLimit(needMoney);
                            }
                            return;
                        });
                    }
                    else
                    {
                        CheckXBManyLimit(xbManyMoney);
                    }
                }
                else
                {
                    WindowCenter.Instance.Open<RechargeTipWin>();
                    CheckXBManyLimit(xbManyMoney);
                }
            }
        }
        private void CheckXBManyLimit(int needMoney)
        {
            if (UIHelper.GetMoneyCnt(1) >= (ulong)needMoney)
            {
                maskObj.SetActive(true);
                isXBMany = true;
                XBModel.SendXBQuest(1, 1, 0);
            }
            else
            {
                WindowCenter.Instance.Open<RechargeTipWin>();
            }
        }
@@ -213,7 +323,14 @@
            {
                maskObj.SetActive(true);
                isXBMany = false;
                XBModel.SendXBQuest(1, 0, 1);
                if (XBModel.IsHaveFreeXB(1))
                {
                    XBModel.SendXBQuest(1, 0, 1);
                }
                else if(XBModel.IsHaveOneXBTool(1))
                {
                    XBModel.SendXBQuest(1,0,2);
                }
            }
        }
@@ -288,7 +405,8 @@
                {
                    if (index == xbResultItemBasiclist.Count - 1)
                    {
                        RestXBItemState();
                        ResetXBItemState();
                        WindowCenter.Instance.Open<HappyXBGetItemWin>();
                    }
                });
                if (xbResultItemBasiclist[index].itemConfig != null)
@@ -370,7 +488,8 @@
                }
                else
                {
                    RestXBItemState();
                    ResetXBItemState();
                    WindowCenter.Instance.Open<HappyXBGetItemWin>();
                }
            }
            else
@@ -380,7 +499,7 @@
            }
        }
        private void RestXBItemState()
        private void ResetXBItemState()
        {
            luckDesObj.SetActive(true);
            maskObj.SetActive(false);
@@ -389,8 +508,6 @@
            {
                xbItemlist[i].RefreshSelectIcon(0);
            }
            WindowCenter.Instance.Open<HappyXBGetItemWin>();
        }
    }
}