少年修仙传客户端代码仓库
client_Zxw
2018-08-17 1a13e98582ce38176d33c64e1437bd6b658195fb
System/HappyXB/RuneXBWin.cs
@@ -3,6 +3,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
@@ -28,6 +29,10 @@
        [SerializeField] GameObject xbResultObj;
        [SerializeField] Button lookRuneBtn;
        [SerializeField] GameObject maskObj;
        [SerializeField] GameObject toolXBShowObj;
        [SerializeField] Text toolNumText;
        [SerializeField] Image toolImg1;
        [SerializeField] Image toolImg2;
        [Header("控制寻宝转动圈数")]
        [SerializeField] int cycleTimes = 1;
@@ -49,7 +54,9 @@
        List<GameObject> xbResultObjlist = new List<GameObject>();
        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()
        {
            xbItemlist.Clear();
@@ -95,10 +102,12 @@
        protected override void OnPreOpen()
        {
            playerPack.RefreshItemCountAct += RefreshItemCount;
            XBModel.RefreshAgainXBAct += RefreshAgainXB;
            XBModel.RefreshRuneXBTimeAct += RefreshFreeTime;
            XBModel.RefreshXBTypeInfoAct += RefreshXBTypeInfo;
            XBModel.RefreshXBResultAct += RefreshXBResult;
            GlobalTimeEvent.Instance.secondEvent += RefreshSecond;
            getItemlist = XBModel.GetXBGetItemByID(2).Values.ToList();
            isHaveFreeTime = XBModel.IsHaveFreeXBTime(2);
            InitUI();
@@ -125,10 +134,31 @@
            XBModel.RefreshRuneXBTimeAct -= RefreshFreeTime;
            XBModel.RefreshXBResultAct -= RefreshXBResult;
            XBModel.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;
            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()
@@ -152,7 +182,7 @@
            getXBItemParent.gameObject.SetActive(false);
            xbResultObj.SetActive(false);
            freeXbBtn.gameObject.SetActive(false);
            XBFuncSet funcSet = XBModel.GetXBFuncSet(2);
            funcSet = XBModel.GetXBFuncSet(2);
            if(funcSet != null)
            {
                xbBtnText.text = Language.Get("HappyXB101", funcSet.xbNums[0]);
@@ -161,9 +191,20 @@
                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)
@@ -180,8 +221,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(2))
                    {
                        freeXbBtn.gameObject.SetActive(false);
                        xbBtn.gameObject.SetActive(true);
                    }
                }
            }
            else
@@ -189,6 +233,38 @@
                freeXBTimeText.gameObject.SetActive(false);
            }
         
        }
        private void RefreshItemCount(PackType type, int index, int id)
        {
            if (type != PackType.rptItem || !XBModel.CheckIsXBTool(id, 2)) return;
            RefreshXBTools();
        }
        public void RefreshXBTools()
        {
            if (XBModel.IsHaveOneXBTool(2))
            {
                freeXbBtn.gameObject.SetActive(true);
                xbBtn.gameObject.SetActive(false);
            }
            else
            {
                freeXbBtn.gameObject.SetActive(false);
                xbBtn.gameObject.SetActive(true);
            }
            int xbToolCnt = 0;
            if (XBModel.IsHaveManyXBTool(2, out xbToolCnt))
            {
                toolXBShowObj.SetActive(true);
                toolNumText.text = StringUtility.Contact("x", xbToolCnt);
            }
            else
            {
                toolXBShowObj.SetActive(false);
            }
        }
        private void RefreshAgainXB(HappXBTitle title, int xbType)
@@ -203,16 +279,46 @@
        {
            if (XBModel.CheckIsEmptyGrid(PackType.rptRunePack))
            {
                if (UIHelper.GetMoneyCnt(1) >= (ulong)xbManyMoney)
                int toolCnt = 0;
                if (XBModel.IsHaveManyXBTool(2, out toolCnt))
                {
                    maskObj.SetActive(true);
                    isXBMany = true;
                    XBModel.SendXBQuest(2, 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(2, 1, 0);
            }
            else
            {
                WindowCenter.Instance.Open<RechargeTipWin>();
            }
        }
@@ -239,7 +345,14 @@
            {
                maskObj.SetActive(true);
                isXBMany = false;
                XBModel.SendXBQuest(2, 0, 1);
                if (XBModel.IsHaveFreeXB(2))
                {
                    XBModel.SendXBQuest(2, 0, 1);
                }
                else if (XBModel.IsHaveOneXBTool(2))
                {
                    XBModel.SendXBQuest(2, 0, 2);
                }
            }
        }
@@ -296,7 +409,8 @@
                {
                    if (index == xbResultItemBasiclist.Count - 1)
                    {
                        RestXBItemState();
                        ResetXBItemState();
                        WindowCenter.Instance.Open<HappyXBGetItemWin>();
                    }
                }); ;
                if(xbResultItemBasiclist[index].itemConfig != null)
@@ -376,7 +490,8 @@
                }
                else
                {
                    RestXBItemState();
                    ResetXBItemState();
                    WindowCenter.Instance.Open<HappyXBGetItemWin>();
                }
            }
            else
@@ -386,7 +501,7 @@
            }
        }
        private void RestXBItemState()
        private void ResetXBItemState()
        {
            luckDesObj.SetActive(true);
            maskObj.SetActive(false);
@@ -395,8 +510,6 @@
            {
                xbItemlist[i].RefreshSelectIcon(0);
            }
            WindowCenter.Instance.Open<HappyXBGetItemWin>();
        }
    }
}