using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; using System.Collections.Generic; using System; using DG.Tweening; namespace vnxbqy.UI { public class CrossSeverOneVsOneDayAwardCell : ScrollItem { [SerializeField] Text taskNameText; [SerializeField] Slider progressSlider; [SerializeField] Text progressText; [SerializeField] Button recieveBtn; [SerializeField] Image stateImg; [SerializeField] List itemBaiscs = new List(); [SerializeField] CrossServerOneVsOneCyclicScroll m_CrossServerCyclicScroll; [SerializeField] UIAlphaTween m_AlphaTween; public UIAlphaTween alphaTween { get { return m_AlphaTween; } } [SerializeField] UILinerMove m_LinerMove; public UILinerMove linerMove { get { return m_LinerMove; } } CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel(); } } CrossServerOneVsOneRewardModel rewardModel { get { return ModelCenter.Instance.GetModel(); } } CrossServerOneVsOneModel.AwardType awardType; float height = 0; bool isLineMove = false; private void Awake() { recieveBtn.AddListener(ClickRecieve); } public override void Display(object _data) { base.Display(_data); isLineMove = false; awardType = (CrossServerOneVsOneModel.AwardType)_data; DisplayDayAward(); crossServerModel.UpdateDayAwardsEvent -= UpdateDayAwards; crossServerModel.UpdateDayAwardsEvent += UpdateDayAwards; } public override void Dispose() { base.Dispose(); crossServerModel.UpdateDayAwardsEvent -= UpdateDayAwards; } private void DisplayDayAward() { var awardItems = awardType.awardItems; progressSlider.minValue = 0; progressSlider.maxValue = awardType.num; progressSlider.value = awardType.curCompletedNum; progressText.text = StringUtility.Contact(awardType.curCompletedNum, "/", awardType.num); for (int i = 0; i < itemBaiscs.Count; i++) { var itemBasic = itemBaiscs[i]; itemBasic.SetActive(i < awardItems.Count); if (i < awardItems.Count) { var awardItem = awardItems[i]; ItemCellModel cellModel = new ItemCellModel(awardItem.itemId, true, (ulong)awardItem.itemCount); itemBasic.Init(cellModel); itemBasic.button.RemoveAllListeners(); itemBasic.button.AddListener(() => { ItemTipUtility.Show(awardItem.itemId); }); } } switch(awardType.type) { case 1: taskNameText.text = Language.Get("CrossServer116",awardType.num); break; case 2: taskNameText.text = Language.Get("CrossServer117", awardType.num); break; } stateImg.SetActive(awardType.progress != CrossServerOneVsOneModel.AwardType.CompleteProgress.Completed); recieveBtn.SetActive(awardType.progress == CrossServerOneVsOneModel.AwardType.CompleteProgress.Completed); switch (awardType.progress) { case CrossServerOneVsOneModel.AwardType.CompleteProgress.Completed: break; case CrossServerOneVsOneModel.AwardType.CompleteProgress.UnCompleted: stateImg.SetSprite("LVReward2"); break; case CrossServerOneVsOneModel.AwardType.CompleteProgress.AlreadyReceived: stateImg.SetSprite("LVReward1"); break; } } private void ClickRecieve() { if (awardType == null || m_CrossServerCyclicScroll.showing) return; isLineMove = true; switch (awardType.type) { case 1: rewardModel.CrossRealmPKGetAward(CrossRealmPKAwardStateEnum.DayWinCountAwardState,awardType.num); break; case 2: rewardModel.CrossRealmPKGetAward(CrossRealmPKAwardStateEnum.DayPKCountAwardState, awardType.num); break; } } private void UpdateDayAwards() { if (!isLineMove) return; isLineMove = false; m_CrossServerCyclicScroll.ShowBegin(this); } } }