//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 07, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; namespace vnxbqy.UI { //开服成就(8-14天) public class OpenServiceAchievementWin : Window { [SerializeField] ScrollerController m_ScrollerController1;//天 [SerializeField] ScrollerController m_ScrollerController2;//列表 [SerializeField] Button m_CloseBtn; [SerializeField] Text m_TextIntegral;//当前积分 [SerializeField] GameObject m_One; [SerializeField] GameObject m_Two; [SerializeField] OpenServiceItem m_OpenServiceItemA; [SerializeField] OpenServiceItem m_OpenServiceItemA1; [SerializeField] OpenServiceItem m_OpenServiceItemB1; #region Built-in OpenServiceAchievementModel model { get { return ModelCenter.Instance.GetModel(); } } DailyQuestModel dailymodel { get { return ModelCenter.Instance.GetModel(); } } List SortList = new List(); List ItemDayList = new List(); protected override void BindController() { m_ScrollerController1.OnRefreshCell += OnRefreshGridCell_1; m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_2; } protected override void AddListeners() { m_CloseBtn.AddListener(() => { Close(); }); } protected override void OnPreOpen() { ChooseDay(); SetTextIntegral(); OnCreateGridLineCell1(m_ScrollerController1); OnCreateGridLineCell2(m_ScrollerController2); if (model.SelectedNow >= 5) { m_ScrollerController1.JumpIndex(5); } } protected override void OnAfterOpen() { model.WeekPartyDayInfoUpdate += WeekPartyDayInfoUpdate; } protected override void OnPreClose() { model.JumpIndex = -1; model.WeekPartyDayInfoUpdate -= WeekPartyDayInfoUpdate; } protected override void OnAfterClose() { } private void WeekPartyDayInfoUpdate()//列表刷新 { GetPointRewardObj();//获取积分领奖信息 OnCreateGridLineCell2(m_ScrollerController2); m_ScrollerController1.m_Scorller.RefreshActiveCellViews();//刷新可见 m_ScrollerController2.m_Scorller.RefreshActiveCellViews();//刷新可见 SetTextIntegral(); } #endregion void OnCreateGridLineCell1(ScrollerController gridCtrl) { gridCtrl.Refresh(); foreach (var key in model.WeekPartyDayDic.Keys) { gridCtrl.AddCell(ScrollerDataType.Header, key); } 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 SelectedObj1 = cell.transform.Find("Image_XZ1").gameObject;//选中 ImageEx SelectedImageEx = SelectedObj.GetComponent(); GameObject Unselected = cell.transform.Find("Image_WXZ").gameObject;//未选中 ImageEx UnselectedIm = Unselected.GetComponent(); GameObject Lock = cell.transform.Find("Lock").gameObject;//锁 GameObject IsNotGary = cell.transform.Find("Obj1").gameObject; Text IsNotGary_text = IsNotGary.transform.Find("DayText").GetComponent(); GameObject Gary = cell.transform.Find("Obj2").gameObject; Text Gary_text = Gary.transform.Find("DayText").GetComponent(); RedpointBehaviour redPoint = cell.transform.Find("RedPoint").GetComponent();//红点 if (model.RedPointDic.ContainsKey(Index)) { redPoint.redpointId = model.RedPointDic[Index].id; } if (Index <= model.DayNow) { SelectedImageEx.gray = false; Unselected.SetActive(true); UnselectedIm.gray = false; SelectedObj.SetActive(false); SelectedObj1.SetActive(false); Lock.SetActive(false); IsNotGary.SetActive(true); Gary.SetActive(false); IsNotGary_text.text = (Index + 1).ToString(); } else { Unselected.SetActive(true); UnselectedIm.gray = true; SelectedObj.SetActive(false); SelectedObj1.SetActive(false); Lock.SetActive(true); IsNotGary.SetActive(false); Gary.SetActive(true); Gary_text.text = (Index + 1).ToString(); } if (Index == model.SelectedNow) { if (Index > model.DayNow) { SelectedImageEx.gray = true; IsNotGary.SetActive(false); Gary.SetActive(true); Lock.SetActive(true); } else { SelectedImageEx.gray = false; IsNotGary.SetActive(true); Gary.SetActive(false); Lock.SetActive(false); } SelectedObj.SetActive(true); SelectedObj1.SetActive(true); Unselected.SetActive(false); IsNotGary_text.text = (Index + 1).ToString(); } Btn.SetListener(() => { if (Index != model.SelectedNow) { model.SelectedNow = Index;//选中天 SetTextIntegral(); OnCreateGridLineCell2(m_ScrollerController2); m_ScrollerController1.m_Scorller.RefreshActiveCellViews();//刷新可见 } }); } private string InDayStr(int Day) { string DaySte = string.Empty; DaySte = Language.Get("SignIn_4", Day); return DaySte; } //------------------------------- void OnCreateGridLineCell2(ScrollerController gridCtrl) { ToAddSorting();//排序 GetPointRewardObj();//获取积分领奖信息 gridCtrl.Refresh(); for (int i = 0; i < SortList.Count; i++) { gridCtrl.AddCell(ScrollerDataType.Header, SortList[i]); } gridCtrl.Restart(); } private void OnRefreshGridCell_2(ScrollerDataType type, CellView cell) { } private void ToAddSorting() { SortList.Clear(); //int Weekday = model.GetWeekDay(model.SelectedNow); //var quests = dailymodel.GetQuestByWeekTime(Weekday); //List dailyIdlist = new List(); //foreach (var key in quests.Keys) //{ // var _list = quests[key]; // for (int i = 0; i < _list.Count; i++) // { // dailyIdlist.Add(_list[i]); // } //} foreach (var key in model.WeekPartyDayDic.Keys) { if (key == model.SelectedNow) { for (int i = 0; i < model.WeekPartyDayDic[key].TemplateList.Length; i++) { var TemplateId = model.WeekPartyDayDic[key].TemplateList[i]; var config = WeekPartyConfig.Get(TemplateId); if (config == null) { continue; } //if (config.DailyQusetId != 0) //{ // if (dailyIdlist.Contains(config.DailyQusetId)) // { // SortList.Add(TemplateId); // } // // var Dailyquse = DailyQuestConfig.Get(TemplateId); //} //else //{ // SortList.Add(TemplateId); //} SortList.Add(TemplateId); } } } 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);//已完成次数 int TaypeNumber = 0; if (carryOutNum - rewardNum > 0) { TaypeNumber = (carryOutNum - rewardNum) / WeekPartyAction.SingleTimes; } if (TaypeNumber > 0) { 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.TotalTimes> rewardNum) { Bool = true; } } return Bool; } private bool Completed(int ID)//已领取 { bool Bool = false; if (model.WeekPartyActionDic.ContainsKey(ID)) { var WeekPartyAction = model.WeekPartyActionDic[ID]; int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数 int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数 if (rewardNum >= WeekPartyAction.TotalTimes) { Bool = true; } } return Bool; } private int SizeId(int ID) { int index = 1; var config = WeekPartyConfig.Get(ID); if (config != null) { index = config.order; } return index; } private void SetTextIntegral()//获取当前积分 { int Point = model.GetPoint(model.SelectedNow); m_TextIntegral.text = Point.ToString(); } private void GetPointRewardObj() { ItemDayList.Clear(); foreach (var key in model.WeekPartyDayDic.Keys) { if (key == model.SelectedNow) { for (int i = 0; i < model.WeekPartyDayDic[key].WeekPartyItem.Length; i++) { ItemDayList.Add(model.WeekPartyDayDic[key].WeekPartyItem[i]); } } } if (ItemDayList.Count > 1) { m_One.SetActive(false); m_Two.SetActive(true); if (ItemDayList[0].NeedPoint > ItemDayList[1].NeedPoint) { m_OpenServiceItemA1.SetReward(model.SelectedNow, ItemDayList[1], 0, 2); m_OpenServiceItemB1.SetReward(model.SelectedNow, ItemDayList[0], 1, 2); } else { m_OpenServiceItemA1.SetReward(model.SelectedNow, ItemDayList[0], 0, 2); m_OpenServiceItemB1.SetReward(model.SelectedNow, ItemDayList[1], 1, 2); } } else { m_One.SetActive(true); m_Two.SetActive(false); m_OpenServiceItemA.SetReward(model.SelectedNow, ItemDayList[0], 0, 1); } } private void ChooseDay()//选择天 { if (model.JumpIndex != -1)//跳转选择的天 { model.SelectedNow = model.JumpIndex; return; } foreach (var key in model.RedPointDic.Keys)//红点选择可领取的天 { if (model.RedPointDic[key].state == RedPointState.GetReward) { model.SelectedNow = key; return; } } model.SelectedNow = model.DayNow; } } }