System/LoopAct/CycleHall/CycleHallActModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
System/LoopAct/CycleHall/CycleHallCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
System/LoopAct/CycleHall/CycleHallGiftCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
System/LoopAct/CycleHall/CycleHallGiftCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
System/LoopAct/CycleHall/CycleHallMissionCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
System/LoopAct/CycleHall/CycleHallMissionCell.cs.meta | 补丁 | 查看 | 原始文档 | blame | 历史 | |
System/LoopAct/CycleHall/CycleHallWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
System/LoopAct/CycleHall/OperationCycleHall.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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)