using vnxbqy.UI; using System.Collections.Generic; using System.Linq; using UnityEngine; public class GatheringSoulZhanLingCell : CellView { [SerializeField] ImageEx imgUnlockLV; [SerializeField] ImageEx imgFreeHave; [SerializeField] ImageEx imgFreeGrey; [SerializeField] TextEx txtUnlockLV; [SerializeField] ItemCell freeItemCell; [SerializeField] List paidItemCellList = new List(); [SerializeField] List imgPaidHaveList = new List(); [SerializeField] List imgPaidLockList = new List(); [SerializeField] List imgPaidGreyList = new List(); [SerializeField] List paidItemCellHList = new List(); [SerializeField] List imgPaidHaveHList = new List(); [SerializeField] List imgPaidLockHList = new List(); [SerializeField] List imgPaidGreyHList = new List(); [SerializeField] ImageEx imgBrownProgressBar; [SerializeField] ImageEx imgGreenProgressBar; [SerializeField] ImageEx imgBG; [SerializeField] RotationTween freeItemCellTween; [SerializeField] List paidItemCellTweenList = new List(); [SerializeField] List paidItemCellTweenHList = new List(); VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } GatheringSoulZhanLingModel gatheringSoulZhanLingModel { get { return ModelCenter.Instance.GetModel(); } } ZhanLingHBuyModel zhanLingHBuyModel { get { return ModelCenter.Instance.GetModel(); } } int curValue = 0; int zhanlingId; void OnEnable() { gatheringSoulZhanLingModel.PlayAnimationSync += OnPlaySyncAnimation; if (curValue == 0) return; int freeState = gatheringSoulZhanLingModel.GetFreeGiftState(GatheringSoulZhanLingModel.ZhanLingHType, curValue); int paidState = gatheringSoulZhanLingModel.GetPaidGiftState(GatheringSoulZhanLingModel.ZhanLingHType, curValue); int paidHState = gatheringSoulZhanLingModel.GetPaidGiftHState(GatheringSoulZhanLingModel.ZhanLingHType, curValue); freeItemCellTween.Stop(); freeItemCellTween.SetStartState(); for (int i = 0; i < paidItemCellTweenList.Count; i++) { paidItemCellTweenList[i].Stop(); paidItemCellTweenList[i].SetStartState(); } for (int i = 0; i < paidItemCellTweenHList.Count; i++) { paidItemCellTweenHList[i].Stop(); paidItemCellTweenHList[i].SetStartState(); } if (freeState == 1) { freeItemCellTween.Play(); } if (paidState == 1) { for (int i = 0; i < paidItemCellTweenList.Count; i++) { paidItemCellTweenList[i].Play(); } } if (paidHState == 1) { for (int i = 0; i < paidItemCellTweenHList.Count; i++) { paidItemCellTweenHList[i].Play(); } } } public void Display(int needValue) { curValue = needValue; int zhanlingId = ILZhanlingConfig.GetTypeToIDDict(GatheringSoulZhanLingModel.ZhanLingHType)[needValue]; int freeState = gatheringSoulZhanLingModel.GetFreeGiftState(GatheringSoulZhanLingModel.ZhanLingHType, needValue); int paidState = gatheringSoulZhanLingModel.GetPaidGiftState(GatheringSoulZhanLingModel.ZhanLingHType, needValue); int paidHState = gatheringSoulZhanLingModel.GetPaidGiftHState(GatheringSoulZhanLingModel.ZhanLingHType, needValue); int buyState = gatheringSoulZhanLingModel.GetBuyState(GatheringSoulZhanLingModel.ZhanLingHType); DebugEx.Log($"needValue {needValue} freeState {freeState} paidState {paidState} paidHState {paidHState}"); imgFreeHave.SetActive(freeState == 2); imgFreeGrey.SetActive(freeState == 2); imgGreenProgressBar.SetActive(freeState != 0); for (int i = 0; i < paidItemCellList.Count; i++) { bool isBuy = buyState == 1 || buyState == 3; imgPaidGreyList[i].SetActiveIL(paidState == 2 || !isBuy); imgPaidHaveList[i].SetActiveIL(paidState == 2); imgPaidLockList[i].SetActiveIL(!isBuy); } for (int i = 0; i < paidItemCellHList.Count; i++) { bool isBuy = buyState == 2 || buyState == 3; imgPaidGreyHList[i].SetActiveIL(paidHState == 2 || !isBuy); imgPaidHaveHList[i].SetActiveIL(paidHState == 2); imgPaidLockHList[i].SetActiveIL(!isBuy); } imgUnlockLV.gray = !gatheringSoulZhanLingModel.IsNeedValueOk(needValue); txtUnlockLV.text = needValue.ToString(); txtUnlockLV.colorType = gatheringSoulZhanLingModel.IsNeedValueOk(needValue) ? TextColType.NavyBrown : TextColType.White; //让第一个cell的进度条不凸出 if (ILZhanlingConfig.GetTypeToIDDict(GatheringSoulZhanLingModel.ZhanLingHType).Keys.ToList()[0] == needValue) { imgBrownProgressBar.rectTransform.sizeDelta = new Vector2(imgBG.rectTransform.sizeDelta.x, imgBrownProgressBar.rectTransform.sizeDelta.y); imgGreenProgressBar.rectTransform.sizeDelta = new Vector2(imgBG.rectTransform.sizeDelta.x, imgGreenProgressBar.rectTransform.sizeDelta.y); } else { imgBrownProgressBar.rectTransform.sizeDelta = new Vector2(imgBG.rectTransform.sizeDelta.x + 30, imgBrownProgressBar.rectTransform.sizeDelta.y); imgGreenProgressBar.rectTransform.sizeDelta = new Vector2(imgBG.rectTransform.sizeDelta.x + 30, imgGreenProgressBar.rectTransform.sizeDelta.y); } //展示ItemCell var itemId = ILZhanlingConfig.Get(zhanlingId).FreeRewardItemList[0][0]; var model = new ItemCellModel(itemId, false, (ulong)ILZhanlingConfig.Get(zhanlingId).FreeRewardItemList[0][1]); freeItemCell.Init(model); freeItemCell.button.SetListener(() => { if (freeState == 1) { gatheringSoulZhanLingModel.HaveAllZhanLingGift(GatheringSoulZhanLingModel.ZhanLingHType); } else { ItemTipUtility.Show(itemId); } }); for (int i = 0; i < paidItemCellList.Count; i++) { var itemId2 = ILZhanlingConfig.Get(zhanlingId).ZLRewardItemList[i][0]; var model2 = new ItemCellModel(itemId2, false, (ulong)ILZhanlingConfig.Get(zhanlingId).ZLRewardItemList[i][1]); paidItemCellList[i].Init(model2); paidItemCellList[i].button.SetListener(() => { //0 没购买进阶和玄级 1 购买了进阶没买玄级 2 购买了玄级没买进阶 3 购买了进阶和玄级 if (buyState == 0 || buyState == 2) { zhanLingHBuyModel.ShowZhanLingHBuy(GatheringSoulZhanLingModel.ZhanLingHType,1); } else { if (paidState == 1) { gatheringSoulZhanLingModel.HaveAllZhanLingGift(GatheringSoulZhanLingModel.ZhanLingHType); } else { ItemTipUtility.Show(itemId2); } } }); } for (int i = 0; i < paidItemCellHList.Count; i++) { var itemId3 = ILZhanlingConfig.Get(zhanlingId).ZLRewardItemListH[i][0]; var model3 = new ItemCellModel(itemId3, false, (ulong)ILZhanlingConfig.Get(zhanlingId).ZLRewardItemListH[i][1]); paidItemCellHList[i].Init(model3); paidItemCellHList[i].button.SetListener(() => { //0 没购买进阶和玄级 1 购买了进阶没买玄级 2 购买了玄级没买进阶 3 购买了进阶和玄级 if (buyState == 0 || buyState == 1) { zhanLingHBuyModel.ShowZhanLingHBuy(GatheringSoulZhanLingModel.ZhanLingHType, 2); } else { if (paidHState == 1) { gatheringSoulZhanLingModel.HaveAllZhanLingGift(GatheringSoulZhanLingModel.ZhanLingHType); } else { ItemTipUtility.Show(itemId3); } } }); } //播放旋转动画 PlayAnimation(); } void OnDisable() { gatheringSoulZhanLingModel.PlayAnimationSync -= OnPlaySyncAnimation; } //播放旋转动画 void PlayAnimation() { int freeState = gatheringSoulZhanLingModel.GetFreeGiftState(GatheringSoulZhanLingModel.ZhanLingHType, curValue); int paidState = gatheringSoulZhanLingModel.GetPaidGiftState(GatheringSoulZhanLingModel.ZhanLingHType, curValue); int paidHState = gatheringSoulZhanLingModel.GetPaidGiftHState(GatheringSoulZhanLingModel.ZhanLingHType, curValue); freeItemCellTween.Stop(); freeItemCellTween.SetStartState(); for (int i = 0; i < paidItemCellTweenList.Count; i++) { paidItemCellTweenList[i].Stop(); paidItemCellTweenList[i].SetStartState(); } for (int i = 0; i < paidItemCellTweenHList.Count; i++) { paidItemCellTweenHList[i].Stop(); paidItemCellTweenHList[i].SetStartState(); } if (freeItemCellTween.isActiveAndEnabled && freeState == 1) { freeItemCellTween.Play(); } for (int i = 0; i < paidItemCellTweenList.Count; i++) { if (paidItemCellTweenList[i].isActiveAndEnabled && paidState == 1) { paidItemCellTweenList[i].Play(); } } for (int i = 0; i < paidItemCellTweenHList.Count; i++) { if (paidItemCellTweenHList[i].isActiveAndEnabled && paidHState == 1) { paidItemCellTweenHList[i].Play(); } } } private void OnPlaySyncAnimation() { PlayAnimation(); } }