using UnityEngine; using System.Collections; using GCGame.Table; using System.Collections.Generic; using System; using UnityEngine.UI; public class ActvitiesInTimeController : MonoBehaviour { void Awake() { ReLoadAllListCompnent(); } void OnEnable() { SortActivities(); } public void ReLoadAllListCompnent() { parentList = new List(); for (int index = 0; index < weekItemList.Count; index++) { parentList.Add(weekItemList[index].parentTrans); } } public List weekItemList; private List parentList; //父节点(周一到周日) public GameObject itemPrefab; private List itemPrefabList = new List(); private Dictionary> limitActivityDic = new Dictionary>(); public void SortActivities() { List m_LimitActivities = new List(); //限时活动 foreach(var m_Pair in TableManager.GetActivityBase().Values) { if((m_Pair.ActivityType & 1) != 0 && m_Pair.ShowWeekDesc == 1) { m_LimitActivities.Add(m_Pair.Id); } } ClearAllItemPrefab(); for (int m_index = 0; m_index < m_LimitActivities.Count; m_index++) { int m_ActivityId = m_LimitActivities[m_index]; Tab_ActivityBase activityBase = TableManager.GetActivityBaseByID(m_ActivityId, 0); if (activityBase == null) { continue; } string[] m_LimitWeeks = activityBase.Recurrent.Split('|'); for (int index = 0; index < m_LimitWeeks.Length; index++) { if(limitActivityDic.ContainsKey(int.Parse(m_LimitWeeks[index]))) { limitActivityDic[int.Parse(m_LimitWeeks[index])].Add(m_ActivityId); } else { List idList = new List(); idList.Add(m_ActivityId); limitActivityDic.Add(int.Parse(m_LimitWeeks[index]), idList); } } } foreach (var actDic in limitActivityDic) { actDic.Value.Sort(SortListByTime); for(int index = 0; index < actDic.Value.Count; index++) { CreateItemPrefab(parentList[actDic.Key ], actDic.Value[index]); } } InitItem(); } public int SortListByTime(int idA, int idB) { Tab_ActivityBase tabA = TableManager.GetActivityBaseByID(idA, 0); Tab_ActivityBase tabB = TableManager.GetActivityBaseByID(idB, 0); if(tabA != null && tabB != null) { int timeA = int.Parse(tabA.GetTimebyIndex(0).Split('|')[0]); int timeB = int.Parse(tabB.GetTimebyIndex(0).Split('|')[0]); return timeA < timeB ? -1 : 1; } return 0; } public void ClearAllItemPrefab() { for(int index = 0; index < itemPrefabList.Count; index++) { GameObject.Destroy(itemPrefabList[index]); } itemPrefabList.Clear(); limitActivityDic.Clear(); } public void CreateItemPrefab(Transform parent, int id) { GameObject item = GameObject.Instantiate(itemPrefab); item.transform.SetParent(parent); item.transform.localPosition = Vector3.zero; item.transform.localRotation = Quaternion.Euler(Vector3.zero); item.transform.localScale = Vector3.one; itemPrefabList.Add(item); item.GetComponent().InitMyWeekButton(id); } public void InitItem() { DateTime dt = GCGame.Utils.GetServerDateTime(); int m_OnTime = (int)dt.DayOfWeek; for(int index = 0; index < weekItemList.Count; index++) { var isOnTime = m_OnTime == weekItemList[index].week; weekItemList[index].ShowBG(isOnTime); var weekBtns = weekItemList[index].GetComponentsInChildren(); for (int btnIndex = 0; btnIndex < weekBtns.Length; btnIndex++) { weekBtns[btnIndex].InitOnOpenTime(isOnTime); } } } public void myCloseButtonClick() { this.gameObject.SetActive(false); } }