//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, June 11, 2019 //-------------------------------------------------------- using LitJson; using vnxbqy.UI; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class ILAchievementActivityWin : ILWindow { ScrollerController groupScroller; IntensifySmoothSlider slider; Text process; ButtonEx scoreAwardBtn; ItemCell scoreItem; Text awardtip; Image getImg; ScrollerController scrollerAward; #region Built-in protected override void BindController() { groupScroller = proxy.GetWidgtEx("groupScroller"); slider = proxy.GetWidgtEx("ExpSlider"); process = proxy.GetWidgtEx("process"); scoreAwardBtn = proxy.GetWidgtEx("scoreAwardBtn"); scoreItem = proxy.GetWidgtEx("itemcell"); awardtip = proxy.GetWidgtEx("awardtip"); getImg = proxy.GetWidgtEx("ImageEx"); scrollerAward = proxy.GetWidgtEx("scrollerAward"); } int jumpIndex = 0; protected override void OnPreOpen() { jumpIndex = ILAchievementModel.Instance.GetJumpIndex(); ILAchievementModel.Instance.selectIndex = ILAchievementModel.Instance.m_NewAchieveMentGroup[jumpIndex]; ILAchievementModel.Instance.UpdateScoreAwardState += UpdateScoreAwardState; ILAchievementModel.Instance.OnSelectUpdate += OnSelectUpdate; ILAchievementModel.Instance.UpdateAchievement += UpdateAchievement; ShowScore(); } protected override void OnAfterOpen() { groupScroller.OnRefreshCell += OnRefreshGroupCell; scrollerAward.OnRefreshCell += OnRefreshAwardCell; CreateGroupScroller(); CreateAwardScroller(); } protected override void OnPreClose() { ILAchievementModel.Instance.OnSelectUpdate -= OnSelectUpdate; groupScroller.OnRefreshCell -= OnRefreshGroupCell; scrollerAward.OnRefreshCell -= OnRefreshAwardCell; ILAchievementModel.Instance.UpdateScoreAwardState -= UpdateScoreAwardState; ILAchievementModel.Instance.UpdateAchievement -= UpdateAchievement; } #endregion void OnSelectUpdate() { groupScroller.m_Scorller.RefreshActiveCellViews(); CreateAwardScroller(); } void OnRefreshAwardCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetILBehaviour(); _cell.Display(cell.index); } void OnRefreshGroupCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetILBehaviour(); _cell.Display(cell.index); } void CreateGroupScroller() { groupScroller.Refresh(); for (int i = 0; i < ILAchievementModel.Instance.m_NewAchieveMentGroup.Length; i++) { groupScroller.AddCell(ScrollerDataType.Header, ILAchievementModel.Instance.m_NewAchieveMentGroup[i]); } groupScroller.Restart(); groupScroller.JumpIndex(jumpIndex); } void CreateAwardScroller() { var ids = ILAchievementModel.Instance.GetAchieveIDs(ILAchievementModel.Instance.selectIndex); scrollerAward.Refresh(); for (int i = 0; i < ids.Count; i++) { scrollerAward.AddCell(ScrollerDataType.Header, ids[i]); } scrollerAward.Restart(); } void ShowScore() { int showIndex = ILAchievementModel.Instance.GetScoreAwardShowIndex(); int index = showIndex; var keys = ILAchievementModel.Instance.scoreAwards.Keys.ToList(); keys.Sort(); if (showIndex == -1) { index = keys.Count - 1; } var showScore = ILAchievementModel.Instance.GetShowScore(); slider.value = Math.Min(1, (float)showScore / keys[index]); process.text = showScore + "/" + keys[index]; scoreAwardBtn.SetListener(()=> { var pak = new IL_CA504_tagCMPlayerGetReward(); pak.RewardType = 59; pak.DataEx = (uint)index; GameNetSystem.Instance.SendInfo(pak); }); int itemID = ILAchievementModel.Instance.scoreAwards[keys[index]][0]; var count = (ulong)ILAchievementModel.Instance.scoreAwards[keys[index]][1]; scoreItem.Init(new ItemCellModel(itemID, false, count)); scoreItem.button.SetListener(()=> { ItemTipUtility.Show(itemID); }); getImg.SetActiveIL(showIndex == -1); scoreAwardBtn.SetActiveIL(showIndex != -1); if (showScore < (ulong)keys[index]) { awardtip.text = Language.Get("AchievementActivity1", (ulong)keys[index] - showScore); scoreAwardBtn.interactable = false; } else { awardtip.text = string.Empty; scoreAwardBtn.interactable = true; } } void UpdateScoreAwardState() { ShowScore(); } void UpdateAchievement() { scrollerAward.m_Scorller.RefreshActiveCellViews(); } }