少年修仙传客户端代码仓库
lcy
2024-12-16 a39c35fc6449430cd02bccb681c4a0a880e46cd9
10296 轮回殿修复bug

1.更改任务名读取规则
2.改成用两个滚动条
3.当功能未开启时不显示对应的页签
4.不能获得显示列表时,直接关闭界面
1个文件已删除
1 文件已重命名
3个文件已添加
3个文件已修改
736 ■■■■ 已修改文件
System/LoopAct/CycleHall/CycleHallActModel.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/CycleHallCell.cs 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/CycleHallGiftCell.cs 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/CycleHallGiftCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/CycleHallMissionCell.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/CycleHallMissionCell.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/CycleHallWin.cs 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/OperationCycleHall.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/CycleHall/CycleHallActModel.cs
@@ -13,7 +13,8 @@
            get { return m_NowTabId; }
            set
            {
                m_NowTabId = value;
                if (m_NowTabId != value)
                    m_NowTabId = value;
                UpdateRedpoint();
                onNowTabIdUpdate?.Invoke();
            }
@@ -50,6 +51,9 @@
        //<轮回类型,界面ID>
        public Dictionary<int, int> windowIDDict = new Dictionary<int, int>();
        //<轮回类型,功能ID>
        public Dictionary<int, int> funcIdDict = new Dictionary<int, int>();
        public const int activityType = (int)OpenServerActivityCenter.ActivityType.AT_Activity2;
        public const int activityID = (int)NewDayActivityID.CycleHallAct;
        public static Operation operaType = Operation.default47;
@@ -76,6 +80,13 @@
            {
                windowIDDict.Add(int.Parse(keyList[i]), int.Parse(jsonData[keyList[i]].ToJson()));
            }
            jsonData = JsonMapper.ToObject(FuncConfigConfig.Get("CycleHall").Numerical2);
            keyList = jsonData.Keys.ToList();
            for (int i = 0; i < keyList.Count; i++)
            {
                funcIdDict.Add(int.Parse(keyList[i]), int.Parse(jsonData[keyList[i]].ToJson()));
            }
        }
        public OperationCycleHall GetOperationInfo()
@@ -100,7 +111,7 @@
                if (!CycleHallConfig.Has(id))
                    continue;
                CycleHallConfig config = CycleHallConfig.Get(id);
                if (act.TryGetRound(config.RoundType, out var info))
                if (act.TryGetRound(config.RoundType, out var info) && funcIdDict.TryGetValue(config.RoundType, out var funcId) && FuncOpen.Instance.IsFuncOpen(funcId))
                {
                    if (!resList.Contains(id))
                    {
System/LoopAct/CycleHall/CycleHallCell.cs
File was deleted
System/LoopAct/CycleHall/CycleHallGiftCell.cs
New file
@@ -0,0 +1,177 @@
using System.Collections.Generic;
using UnityEngine;
namespace vnxbqy.UI
{
    public class CycleHallGiftCell : CellView
    {
        [SerializeField] TextEx txtTitle;
        [SerializeField] List<ItemCell> giftItemCells = new List<ItemCell>();
        [SerializeField] ButtonEx btnBuy;
        [SerializeField] ImageEx imgRed;
        [SerializeField] TextEx txtBuy;
        [SerializeField] ImageEx imgBuy;
        [SerializeField] TextEx txtLimitCount;
        [SerializeField] TextEx orgPrice;
        int roundType;
        CycleHallActModel model { get { return ModelCenter.Instance.GetModel<CycleHallActModel>(); } }
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        BossTrialModel bossTrialModel { get { return ModelCenter.Instance.GetModel<BossTrialModel>(); } }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        public void Display(int index, CellView cellView)
        {
            roundType = cellView.info.Value.infoInt1;
            imgRed.SetActive(false);
            if (model.playerInfoDict == null || !model.playerInfoDict.TryGetValue((byte)roundType, out var playerInfo) || playerInfo == null)
                return;
            var act = model.GetOperationInfo();
            if (act == null || !act.TryGetRound(roundType, out var round) || round.CTGIDList == null)
                return;
            List<StoreConfig> _list = null;
            StoreConfig.TryGetStoreConfigs(round.ShopType, out _list);
            if (_list != null && index < _list.Count)
            {
                DisplayStore(_list[index]);
                return;
            }
            index = index - (_list != null ? _list.Count : 0);
            if (round.CTGIDList.Length <= index || index < 0)
                return;
            int ctgId = round.CTGIDList[index];
            if (!CTGConfig.Has(ctgId))
                return;
            CTGConfig config = CTGConfig.Get(ctgId);
            var countInfo = GetBuyCntInfo(ctgId);
            int buyCnt = countInfo.x;
            int totalCnt = countInfo.y;
            btnBuy.SetActive(buyCnt < totalCnt);
            imgBuy.SetActive(buyCnt >= totalCnt);
            OrderInfoConfig orderConfig;
            vipModel.TryGetOrderInfo(ctgId, out orderConfig);
            txtBuy.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderConfig.PayRMBNum));
            txtLimitCount.SetActive(true);
            txtLimitCount.text = Language.Get("CycleHall05", UIHelper.AppendColor(buyCnt >= totalCnt ? TextColType.Red : TextColType.Green, Mathf.Max(0, totalCnt - buyCnt).ToString(), true));
            if (orgPrice != null)
            {
                orgPrice.SetActive(PlayerDatas.Instance.baseData.IsActive90Off);
                orgPrice.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderConfig.m_PayRMBNum));
            }
            btnBuy.SetListener(() =>
            {
                if (PlayerDatas.Instance.baseData.VIPLv < config.VipLevel)
                {
                    SysNotifyMgr.Instance.ShowTip("VIPNotEnough", config.VipLevel);
                    return;
                }
                if (bossTrialModel.IsOpen)
                {
                    //参与时间结束前直接购买,时间结束后再购买需要弹窗提示
                    if (bossTrialModel.IsPrepareTime || bossTrialModel.IsJoin)
                        vipModel.CTG(ctgId);
                    else
                    {
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("BossTrial14"), (bool isOk) =>
                        {
                            if (isOk)
                            {
                                vipModel.CTG(ctgId);
                            }
                        });
                    }
                }
                else
                {
                    vipModel.CTG(ctgId);
                }
            });
            txtTitle.text = config.Title;
            if (vipModel.TryGetRechargeItem(ctgId, out var list) && list != null)
            {
                for (int i = 0; i < giftItemCells.Count; i++)
                {
                    var itemBaisc = giftItemCells[i];
                    if (i < list.Count)
                    {
                        var itemInfo = list[i];
                        itemBaisc.SetActive(true);
                        ItemCellModel cellModel = new ItemCellModel((int)itemInfo.id, false, (ulong)itemInfo.count);
                        itemBaisc.Init(cellModel);
                        itemBaisc.button.AddListener(() =>
                        {
                            ItemTipUtility.Show((int)itemInfo.id);
                        });
                    }
                    else
                    {
                        itemBaisc.SetActive(false);
                    }
                }
            }
        }
        public Int2 GetBuyCntInfo(int ctgID)
        {
            VipModel.RechargeCount rechargeCount;
            vipModel.TryGetRechargeCount(ctgID, out rechargeCount);
            var ctgConfig = CTGConfig.Get(ctgID);
            int buyCnt = 0;
            int totalCnt = 0;
            buyCnt = rechargeCount.totalCount;
            totalCnt = ctgConfig.TotalBuyCount;
            return new Int2(buyCnt, totalCnt);
        }
        private void DisplayStore(StoreConfig storeConfig)
        {
            bool isFree = storeConfig.MoneyNumber == 0;
            txtTitle.text = isFree ? Language.Get("StoreName_free") : Language.Get("StoreName_money");
            //saleObj.SetActive(false);
            int remainNum;
            storeModel.TryGetIsSellOut(storeConfig, out remainNum);
            orgPrice.SetActive(false);
            txtLimitCount.SetActive(!isFree);
            txtLimitCount.text = Language.Get("CycleHall06", UIHelper.AppendColor(remainNum == 0 ? TextColType.Red : TextColType.Green, Mathf.Max(0, remainNum).ToString(), true));
            imgRed.SetActive(isFree);
            btnBuy.SetActive(remainNum > 0);
            btnBuy.SetListener(() =>
            {
                storeModel.SendBuyShopItemWithPopCheck(storeConfig, 1, (int)BuyStoreItemCheckType.ActGift);
            });
            imgBuy.SetActive(remainNum <= 0);
            txtBuy.text = isFree ? Language.Get("AloneFree") : Language.Get("ItemOverdue105", UIHelper.GetMoneyFormat(storeConfig.MoneyNumber));
            var items = storeModel.GetShopItemlistByIndex(storeConfig);
            for (int i = 0; i < giftItemCells.Count; i++)
            {
                var itemBaisc = giftItemCells[i];
                if (i < items.Count)
                {
                    var itemInfo = items[i];
                    itemBaisc.SetActive(true);
                    ItemCellModel cellModel = new ItemCellModel(itemInfo.itemId, false, (ulong)itemInfo.count);
                    itemBaisc.Init(cellModel);
                    itemBaisc.button.AddListener(() =>
                    {
                        ItemTipUtility.Show(itemInfo.itemId);
                    });
                }
                else
                {
                    itemBaisc.SetActive(false);
                }
            }
        }
    }
}
System/LoopAct/CycleHall/CycleHallGiftCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3c514e9b541f463468608db0a31460ad
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/LoopAct/CycleHall/CycleHallMissionCell.cs
New file
@@ -0,0 +1,145 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace vnxbqy.UI
{
    public class CycleHallMissionCell : CellView
    {
        [SerializeField] ImageEx imgFinish;
        [SerializeField] TextEx txtTitle;
        [SerializeField] ButtonEx btnMissionHave;
        [SerializeField] List<ItemCell> missionItemCells = new List<ItemCell>();
        [SerializeField] List<ImageEx> missionHaves = new List<ImageEx>();
        [SerializeField] List<ImageEx> missionGreys = new List<ImageEx>();
        [SerializeField] List<RotationTween> missionTweens = new List<RotationTween>();
        [SerializeField] Slider buyCountGiftSlider;
        [SerializeField] Text buyCountGiftSliderText;
        int roundType;
        int tabType;
        int mIndex;
        CycleHallActModel model { get { return ModelCenter.Instance.GetModel<CycleHallActModel>(); } }
        private void OnEnable()
        {
            model.PlayAnimationSync += OnPlaySyncAnimation;
            for (int i = 0; i < missionTweens.Count; i++)
            {
                missionTweens[i].Stop();
                missionTweens[i].SetStartState();
            }
            if (tabType == 1)
            {
                int state = model.GetAwardState(roundType, mIndex);//0 不可领取 1 可领取  2 已领取
                for (int i = 0; i < missionTweens.Count; i++)
                {
                    var act = model.GetOperationInfo();
                    if (act == null || !act.TryGetRound(roundType, out var round) || round.AwardList == null || round.AwardList.Length <= mIndex || mIndex < 0)
                        return;
                    var award = round.AwardList[mIndex];
                    if (award.AwardItemList == null)
                        return;
                    if (i < award.AwardItemList.Length)
                    {
                        if (state == 1)
                        {
                            missionTweens[i].Play();
                        }
                    }
                }
            }
        }
        private void OnDisable()
        {
            model.PlayAnimationSync -= OnPlaySyncAnimation;
        }
        public void Display(int index, CellView cellView)
        {
            this.mIndex = index;
            roundType = cellView.info.Value.infoInt1;
            tabType = cellView.info.Value.infoInt2;
            btnMissionHave.enabled = false;
            if (model.playerInfoDict == null || !model.playerInfoDict.TryGetValue((byte)roundType, out var playerInfo) || playerInfo == null)
                return;
            var act = model.GetOperationInfo();
            if (act == null || !act.TryGetRound(roundType, out var round) || round.AwardList == null || round.AwardList.Length <= index || index < 0)
                return;
            var award = round.AwardList[index];
            int state = model.GetAwardState(roundType, index);//0 不可领取 1 可领取  2 已领取
            imgFinish.SetActive(state == 2);
            txtTitle.text = Language.Get(StringUtility.Contact("CycleHallMissionTitle", "_", round.AwardType, "_", round.AwardTypeValue), award.NeedValue);
            buyCountGiftSlider.value = playerInfo.CurValue / (float)award.NeedValue;
            buyCountGiftSliderText.text = string.Format("{0}/{1}", playerInfo.CurValue, award.NeedValue);
            btnMissionHave.enabled = true;
            btnMissionHave.SetListener(() =>
            {
                HaveMissionAward();
            });
            for (int i = 0; i < missionItemCells.Count; i++)
            {
                var itemBaisc = missionItemCells[i];
                if (i < award.AwardItemList.Length)
                {
                    var itemInfo = award.AwardItemList[i];
                    itemBaisc.SetActive(true);
                    missionHaves[i].SetActive(state == 2);
                    missionGreys[i].SetActive(state == 2);
                    ItemCellModel cellModel = new ItemCellModel((int)itemInfo.ItemID, false, (ulong)itemInfo.ItemCount);
                    itemBaisc.Init(cellModel);
                    itemBaisc.button.AddListener(() =>
                    {
                        if (state == 1)
                        {
                            HaveMissionAward();
                        }
                        else
                        {
                            ItemTipUtility.Show((int)itemInfo.ItemID);
                        }
                    });
                }
                else
                {
                    itemBaisc.SetActive(false);
                    missionHaves[i].SetActive(false);
                    missionGreys[i].SetActive(false);
                }
            }
            OnPlaySyncAnimation();
        }
        public void HaveMissionAward()
        {
            var act = model.GetOperationInfo();
            if (act == null || !act.TryGetRound(roundType, out var round) || round.AwardList == null || round.AwardList.Length <= mIndex || mIndex < 0)
                return;
            int state = model.GetAwardState(roundType, mIndex);//0 不可领取 1 可领取  2 已领取
            if (state != 1)
                return;
            model.SendGetAward(roundType, (int)round.AwardList[mIndex].NeedValue);
        }
        private void OnPlaySyncAnimation()
        {
            if (tabType != 1)
                return;
            for (int i = 0; i < missionTweens.Count; i++)
            {
                missionTweens[i].Stop();
                missionTweens[i].SetStartState();
            }
            int state = model.GetAwardState(roundType, mIndex);//0 不可领取 1 可领取  2 已领取
            for (int i = 0; i < missionTweens.Count; i++)
            {
                if (missionTweens[i].isActiveAndEnabled && state == 1)
                {
                    missionTweens[i].Play();
                }
            }
        }
    }
}
System/LoopAct/CycleHall/CycleHallMissionCell.cs.meta
System/LoopAct/CycleHall/CycleHallWin.cs
@@ -8,6 +8,8 @@
    public class CycleHallWin : Window
    {
        [SerializeField] ScrollerController tabScroller;
        [SerializeField] ScrollerController missionScroller;
        [SerializeField] ScrollerController giftScroller;
        [SerializeField] ImageEx imgTitle;
        [SerializeField] ImageEx imgInfo;
@@ -17,7 +19,6 @@
        [SerializeField] ButtonEx btnGo;
        [SerializeField] ButtonEx btnClose;
        [SerializeField] ScrollerController scroller;
        RechargeGiftActModel rechargeGiftActModel { get { return ModelCenter.Instance.GetModel<RechargeGiftActModel>(); } }
        CycleHallActModel model { get { return ModelCenter.Instance.GetModel<CycleHallActModel>(); } }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
@@ -37,7 +38,8 @@
        {
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            tabScroller.OnRefreshCell += OnScrollerRefreshTabCell;
            scroller.OnRefreshCell += OnScrollerRefreshCell;
            missionScroller.OnRefreshCell += OnScrollerRefreshMissionCell;
            giftScroller.OnRefreshCell += OnScrollerRefreshGiftCell;
            model.onNowTabIdUpdate += OnNowTabIdUpdate;
            vipModel.rechargeCountEvent += VipModel_rechargeCountEvent;
            storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
@@ -50,7 +52,7 @@
            }
            else
            {
                model.nowTabId = int.Parse(CycleHallConfig.GetKeys()[0]);
                WindowCenter.Instance.Close<CycleHallWin>();
            }
            Display();
        }
@@ -59,7 +61,8 @@
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            tabScroller.OnRefreshCell -= OnScrollerRefreshTabCell;
            scroller.OnRefreshCell -= OnScrollerRefreshCell;
            missionScroller.OnRefreshCell -= OnScrollerRefreshMissionCell;
            giftScroller.OnRefreshCell -= OnScrollerRefreshGiftCell;
            model.onNowTabIdUpdate -= OnNowTabIdUpdate;
            vipModel.rechargeCountEvent -= VipModel_rechargeCountEvent;
            storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
@@ -72,7 +75,8 @@
            if (operation == Operation.default47)
            {
                tabScroller.m_Scorller.RefreshActiveCellViews();
                scroller.m_Scorller.RefreshActiveCellViews();
                missionScroller.m_Scorller.RefreshActiveCellViews();
                giftScroller.m_Scorller.RefreshActiveCellViews();
                Display();
            }
        }
@@ -80,19 +84,20 @@
        private void OnUpdatePlayerInfoAction()
        {
            tabScroller.m_Scorller.RefreshActiveCellViews();
            scroller.m_Scorller.RefreshActiveCellViews();
            missionScroller.m_Scorller.RefreshActiveCellViews();
            giftScroller.m_Scorller.RefreshActiveCellViews();
            Display();
        }
        private void RefreshBuyShopLimitEvent()
        {
            scroller.m_Scorller.RefreshActiveCellViews();
            giftScroller.m_Scorller.RefreshActiveCellViews();
            model.IsPlayAnimation = true;
        }
        private void VipModel_rechargeCountEvent(int obj)
        {
            scroller.m_Scorller.RefreshActiveCellViews();
            giftScroller.m_Scorller.RefreshActiveCellViews();
            model.IsPlayAnimation = true;
        }
@@ -100,7 +105,8 @@
        {
            tabScroller.m_Scorller.RefreshActiveCellViews();
            CreateScroller();
            scroller.JumpIndex(JumpIndex());
            missionScroller.JumpIndex(JumpMissionIndex());
            giftScroller.JumpIndex(JumpGiftIndex());
            Display();
        }
@@ -110,11 +116,17 @@
            _cell.Display(_cell.index);
        }
        private void OnScrollerRefreshCell(ScrollerDataType type, CellView cell)
        private void OnScrollerRefreshMissionCell(ScrollerDataType type, CellView cell)
        {
            var _cell = cell as CycleHallCell;
            var _cell = cell as CycleHallMissionCell;
            _cell.Display(_cell.index, cell);
            model.IsPlayAnimation = true;
        }
        private void OnScrollerRefreshGiftCell(ScrollerDataType type, CellView cell)
        {
            var _cell = cell as CycleHallGiftCell;
            _cell.Display(_cell.index, cell);
        }
        protected override void OnAfterOpen()
@@ -122,7 +134,8 @@
            CreateTabScroller();
            tabScroller.JumpIndex(JumpTabIndex());
            CreateScroller();
            scroller.JumpIndex(JumpIndex());
            missionScroller.JumpIndex(JumpMissionIndex());
            giftScroller.JumpIndex(JumpGiftIndex());
        }
        protected override void OnAfterClose()
@@ -179,6 +192,8 @@
        private void CreateScroller()
        {
            missionScroller.SetActive(false);
            giftScroller.SetActive(false);
            int id = model.nowTabId;
            if (!CycleHallConfig.Has(id))
                return;
@@ -189,20 +204,22 @@
            if (config.TabType == 1)
            {
                scroller.Refresh();
                missionScroller.SetActive(true);
                missionScroller.Refresh();
                var act = model.GetOperationInfo();
                if (act != null && act.TryGetRound(config.RoundType, out var round) && round.AwardList != null)
                {
                    for (int i = 0; i < round.AwardList.Length; i++)
                    {
                        scroller.AddCell(ScrollerDataType.Header, i, cellInfo);
                        missionScroller.AddCell(ScrollerDataType.Header, i, cellInfo);
                    }
                }
                scroller.Restart();
                missionScroller.Restart();
            }
            else if (config.TabType == 2)
            {
                scroller.Refresh();
                giftScroller.SetActive(true);
                giftScroller.Refresh();
                var act = model.GetOperationInfo();
                if (act != null && act.TryGetRound(config.RoundType, out var round) && round.CTGIDList != null)
                {
@@ -211,10 +228,10 @@
                    int totaleCnt = (_list == null ? 0 : _list.Count) + round.CTGIDList.Length;
                    for (int i = 0; i < totaleCnt; i++)
                    {
                        scroller.AddCell(ScrollerDataType.Header, i, cellInfo);
                        giftScroller.AddCell(ScrollerDataType.Header, i, cellInfo);
                    }
                }
                scroller.Restart();
                giftScroller.Restart();
            }
        }
@@ -285,23 +302,6 @@
                        }
                    }
                }
            }
            return 0;
        }
        private int JumpIndex()
        {
            int id = model.nowTabId;
            if (!CycleHallConfig.Has(id))
                return 0;
            CycleHallConfig config = CycleHallConfig.Get(id);
            if (config.TabType == 1)
            {
                return JumpMissionIndex();
            }
            else if (config.TabType == 2)
            {
                return JumpGiftIndex();
            }
            return 0;
        }
System/LoopAct/CycleHall/OperationCycleHall.cs
@@ -10,10 +10,7 @@
        public bool TryGetRound(int roundType, out HAA88_tagMCActLunhuidianInfo.tagMCActLunhuidianRound round)
        {
            round = new HAA88_tagMCActLunhuidianInfo.tagMCActLunhuidianRound { };
            if (roundInfoDict == null || !roundInfoDict.TryGetValue(roundType, out round))
                return false;
            return true;
            return roundInfoDict.TryGetValue(roundType, out round);
        }
        public bool TryGetRoundInfoByIndex(int roundType, int index, out HAA88_tagMCActLunhuidianInfo.tagMCActLunhuidianAward awardInfo)
@@ -69,6 +66,7 @@
        public override void Reset()
        {
            base.Reset();
            roundInfoDict.Clear();
        }
        public void ParseCycleHallInfo(HAA88_tagMCActLunhuidianInfo package)