//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 07, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; using EnhancedUI.EnhancedScroller; namespace Snxxz.UI { //开服成就 [XLua.Hotfix] public class OpenServiceAchievementWin : Window { [SerializeField] ScrollerController m_ScrollerController1;//天 [SerializeField] ScrollerController m_ScrollerController2;//列表 private int InDay; #region Built-in OpenServiceAchievementModel model { get { return ModelCenter.Instance.GetModel(); } } List SortList = new List(); protected override void BindController() { m_ScrollerController1.OnRefreshCell += OnRefreshGridCell_1; m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_2; } protected override void AddListeners() { } protected override void OnPreOpen() { OnCreateGridLineCell1(m_ScrollerController1); OnCreateGridLineCell2(m_ScrollerController2); } protected override void OnAfterOpen() { model.WeekPartyDayInfoUpdate += WeekPartyDayInfoUpdate; } protected override void OnPreClose() { model.WeekPartyDayInfoUpdate -= WeekPartyDayInfoUpdate; } protected override void OnAfterClose() { } private void WeekPartyDayInfoUpdate()//列表刷新 { m_ScrollerController2.m_Scorller.RefreshActiveCellViews();//刷新可见 } #endregion void OnCreateGridLineCell1(ScrollerController gridCtrl) { gridCtrl.Refresh(); for (int i = 0; i < 8; i++) { gridCtrl.AddCell(ScrollerDataType.Header,i); } gridCtrl.Restart(); } private void OnRefreshGridCell_1(ScrollerDataType type, CellView cell) { int Index = cell.index; ButtonEx Btn = cell.GetComponent(); GameObject SelectedObj = cell.transform.Find("Image_XZ").gameObject;//选中 GameObject Unselected = cell.transform.Find("Image_WXZ").gameObject;//未选中 Text DayText = cell.transform.Find("DayText").GetComponent();//天数 if (Index == InDay) { SelectedObj.SetActive(true); Unselected.SetActive(false); } else { SelectedObj.SetActive(false); Unselected.SetActive(true); } DayText.text = InDayStr(Index); Btn.SetListener(()=> { if (Index != InDay) { InDay = Index; model.SelectedNow = InDay;//选中天 OnCreateGridLineCell2(m_ScrollerController2); m_ScrollerController1.m_Scorller.RefreshActiveCellViews();//刷新可见 } }); } private string InDayStr(int Day) { string DaySte = string.Empty; DaySte = Language.Get("SignIn_4",Day); //switch (Day) //{ // case 1: // return DaySte; // case 2: // return DaySte; // case 3: // return DaySte; // case 4: // return DaySte; // case 5: // return DaySte; //} return DaySte; } //------------------------------- void OnCreateGridLineCell2(ScrollerController gridCtrl) { ToAddSorting();//排序 gridCtrl.Refresh(); for (int i = 0; i < 8; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } private void OnRefreshGridCell_2(ScrollerDataType type, CellView cell) { } private void ToAddSorting() { SortList.Clear(); foreach (var key in model.WeekPartyDayDic.Keys) { if (key == model.SelectedNow) { for (int i = 0; i < model.WeekPartyDayDic[key].TemplateList.Length; i++) { SortList.Add(model.WeekPartyDayDic[key].TemplateList[i]); } } } SortList.Sort(Compare); } int Compare(int x, int y)//数组排列 { bool havex1 = IsReceive(x); bool havey1 = IsReceive(y); if (havex1.CompareTo(havey1) != 0) { return -havex1.CompareTo(havey1); } bool havex2 = Undone(x); bool havey2 = Undone(y); if (havex2.CompareTo(havey2) != 0) { return -havex2.CompareTo(havey2); } bool havex3 = Completed(x); bool havey3 = Completed(y); if (havex3.CompareTo(havey3) != 0) { return -havex3.CompareTo(havey3); } int havex4 = SizeId(x); int havey4 = SizeId(y); if (havex4.CompareTo(havey4) != 0) { return havex4.CompareTo(havey4); } return 1; } private bool IsReceive(int ID)//可领取 { bool Bool = false; if (model.WeekPartyActionDic.ContainsKey(ID)) { var WeekPartyAction = model.WeekPartyActionDic[ID]; int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes; int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数 int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数 if (carryOutNum >= WeekPartyAction.SingleTimes && number > rewardNum) { Bool = true; } } return Bool; } private bool Undone(int ID)//未完成 { bool Bool = false; if (model.WeekPartyActionDic.ContainsKey(ID)) { var WeekPartyAction = model.WeekPartyActionDic[ID]; int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes; int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数 int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数 if (WeekPartyAction.SingleTimes > carryOutNum) { Bool = true; } } return Bool; } private bool Completed(int ID)//已领取 { bool Bool = false; if (model.WeekPartyActionDic.ContainsKey(ID)) { var WeekPartyAction = model.WeekPartyActionDic[ID]; int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes; int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数 int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数 if (rewardNum> number) { Bool = true; } } return Bool; } private int SizeId(int ID) { int index = 1; var config = Config.Instance.Get(ID); if (config != null) { index = config.order; } return index; } } }