void SecondTypeClick(uint childID) { AchievementDataBase typeData = achievementManager.GetParentAchievementData((int)m_uint_activeFType); if (typeData == null) { return; } List <AchievementDataBase> list = achievementManager.GetSubAchievementDataList(typeData.type); dailyAchieveDataList.Clear(); for (int i = 0; i < list.Count; i++) { if (list[i].childType == childID) { uint id = list[i].id; AchieveData achieveData = achievementManager.GetAchieveData(id); if (achieveData != null) { if (m_toggle_HideAchievement.value && achieveData.status == (uint)AchieveStatus.AchieveStatus_HaveReceive) { continue; } } else { achieveData = new AchieveData(); achieveData.id = list[i].id; } dailyAchieveDataList.Add(achieveData); } } dailyAchieveDataList.Sort(SortAchieveData); m_ctor_AchievementScrollView.CreateGrids(dailyAchieveDataList.Count); }
public bool HaveCanRecieveByChildType(int tabId, uint childType) { bool value = false; List <uint> list = new List <uint>(); Dictionary <uint, AchieveData> .Enumerator iter = achievementServerData.GetEnumerator(); while (iter.MoveNext()) { AchievementDataBase achievementData = GetAchievementTableData(iter.Current.Key); if (achievementData != null && achievementData.type == tabId && achievementData.childType == childType) { if (iter.Current.Value.status == (uint)AchieveStatus.AchieveStatus_CanReceive) { list.Add(iter.Current.Key); } } } if (list.Count == 0) { return(false); } else { return(true); } }
void ExecuteGoto() { if (null == achieveData) { return; } AchievementDataBase achieveDataBase = DataManager.Manager <AchievementManager>().GetAchievementTableData(achieveData.id); if (null == achieveDataBase) { return; } if (achieveDataBase.jumpID > 0) { ItemManager.DoJump(achieveDataBase.jumpID); } else if (achieveDataBase.taskID > 0) { Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DONING, new Client.stDoingTask() { taskid = achieveDataBase.taskID }); } }
public PushItem GetAchieveStatus() { uint achieve_id = 0; PushItem pushItem = null; string strName = ""; Dictionary <uint, AchieveData> .Enumerator iter = achievementServerData.GetEnumerator(); while (iter.MoveNext()) { AchievementDataBase achievementData = GetAchievementTableData(iter.Current.Key); if (achievementData != null && iter.Current.Value.status == (uint)AchieveStatus.AchieveStatus_CanReceive) { achieve_id = iter.Current.Key; strName = achievementData.name; } } if (achieve_id != 0) { pushItem = new PushItem() { pushType = PushType.Achievement, strName = strName, thisID = achieve_id, }; } return(pushItem); }
private void OnUpdateGridData(UIGridBase grid, int index) { if (grid is UICtrTypeGrid) { UICtrTypeGrid tabGrid = grid as UICtrTypeGrid; if (tabGrid != null) { if (index == 0) { int haveNum = 0; int totalNum = 0; achievementManager.GetGainAchieveNum(out haveNum, out totalNum); string titleTips = "综合"; tabGrid.SetRedPointStatus(achievementManager.HaveCanReceiveAchieveByType((uint)index)); if (index < mlstFirstTabIds.Count) { tabGrid.SetData(mlstFirstTabIds[index], titleTips, 0); } } else { AchievementDataBase achievementData = achievementManager.GetParentAchievementData(index); if (achievementData != null) { int haveNum = 0; int totalNum = 0; int count = 0; if (achieveDic.ContainsKey((uint)index)) { count = achieveDic[(uint)(index)].Count; } achievementManager.GetGainAchieveByType(achievementData.type, out haveNum, out totalNum); string titleTips = string.Format("{0}({1}/{2})", achievementData.typeName, haveNum, totalNum); tabGrid.SetRedPointStatus(achievementManager.HaveCanReceiveAchieveByType((uint)index)); if (index < mlstFirstTabIds.Count) { tabGrid.SetData(mlstFirstTabIds[index], titleTips, count); } } } } } else if (grid is UIAchievemenGrid) { UIAchievemenGrid achieveGrid = grid as UIAchievemenGrid; if (null != achieveGrid) { AchieveData achieveData = dailyAchieveDataList.Count > index ? dailyAchieveDataList[index] : null; achieveGrid.UpdateItemInfo(achieveData); achieveGrid.SetGridData(index); achieveGrid.SetSelect(false); } } }
/// <summary> /// 通过[ID]二分快速查表 /// </summary> /// <param name="id">ID</param> /// <returns></returns> public static AchievementDataBase Query(this List <AchievementDataBase> sorted, uint id) { var key = new AchievementDataBase() { id = id }; var comparer = new Comparer1(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(AchievementDataBase)); }
public bool HaveCanReceiveAchieveByType(uint type) { Dictionary <uint, AchieveData> .Enumerator iter = achievementServerData.GetEnumerator(); while (iter.MoveNext()) { AchievementDataBase achievementData = GetAchievementTableData(iter.Current.Key); if (achievementData != null && achievementData.type == type) { if (iter.Current.Value.status == (uint)AchieveStatus.AchieveStatus_CanReceive) { return(true); } } } return(false); }
void FocusAchievementData(uint id) { AchievementDataBase tab = GameTableManager.Instance.GetTableItem <AchievementDataBase>(id); if (tab != null) { SetSelectFirstType(tab.type, true); SetSelectSecondType(tab.childType, true); int index = 0; for (int i = 0; i < dailyAchieveDataList.Count; i++) { if (dailyAchieveDataList[i].id == id) { index = i; } } SetSelectAchievementGrid(index, true); } }
public void InitTableData() { List <AchievementDataBase> dataList = GameTableManager.Instance.GetTableList <AchievementDataBase>(); if (null == dataList) { Engine.Utility.Log.Error("AchievementDataBase is null"); return; } for (int i = 0; i < dataList.Count; i++) { AchievementDataBase item = dataList[i]; if (item != null) { uint type = item.type; if (!subAchievementData.ContainsKey(type)) { if (item.whetherShow == 1) { parAchievementData.Add(item); } } List <AchievementDataBase> list = null; if (subAchievementData.TryGetValue(type, out list)) { if (list != null) { list.Add(item); } } else { list = new List <AchievementDataBase> { item }; subAchievementData.Add(type, list); } } } parAchievementData.Sort(CompareAchievementData); }
public void UpdateItemInfo(AchieveData achieveData) { this.achieveData = achieveData; if (achieveData == null) { return; } AchievementDataBase achieveDataBase = DataManager.Manager <AchievementManager>().GetAchievementTableData(achieveData.id); if (achieveDataBase != null) { name.text = achieveDataBase.name; description.text = achieveDataBase.condition; process.value = 0; processNum.text = string.Format("{0}/{1}", achieveData.progress, achieveDataBase.aggregate); process.value = (achieveDataBase.aggregate <= 0) ? 0 : (achieveData.progress * 1.0f / achieveDataBase.aggregate); point.text = achieveDataBase.get_point.ToString(); switch (achieveData.status) { case (uint)AchieveStatus.AchieveStatus_CanReceive: ControlStatus(false, true, false); break; case (uint)AchieveStatus.AchieveStatus_HaveReceive: ControlStatus(false, false, true); break; default: ControlStatus(true, false, false); break; } if (rewardRoot != null) { ParseReward(achieveDataBase.items); } } }
/// <summary> /// 收到服务器下发的成就数据 /// </summary> /// <param name="cmd"></param> public void OnResponAchieveData(stAchieveDataDataUserCmd_S cmd) { achievementServerData.Clear(); if (cmd != null) { for (int i = 0; i < cmd.data.Count; i++) { achievementServerData.Add(cmd.data[i].id, cmd.data[i]); if (cmd.data[i].status == (uint)AchieveStatus.AchieveStatus_HaveReceive) { AchievementDataBase table = GameTableManager.Instance.GetTableItem <AchievementDataBase>(cmd.data[i].id); if (table != null) { haveAchievePoint += table.get_point; } } } } // if (HaveCanReceiveAchieve()) // { // Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.REFRESHACHIEVEMENTPUSH, null); // } DispatchValueUpdateEvent(new ValueUpdateEventArgs(AchieveDispatchEvents.RefreshAchieveInfo.ToString(), null, null)); }
private void OnEnable() { database = target as AchievementDataBase; }
/// <summary> /// 更新成就内容 /// </summary> private void UpdateAchieveContent() { if (null != m_ctor_AchievementScrollView) { if (m_uint_activeFType == 0) { List <AchievementDataBase> list = GameTableManager.Instance.GetTableList <AchievementDataBase>(); dailyAchieveDataList.Clear(); for (int i = 1; i < list.Count; i++) { uint id = list[i].id; AchieveData achieveData = achievementManager.GetAchieveData(id); if (achieveData != null) { if (m_toggle_HideAchievement.value && achieveData.status == (uint)AchieveStatus.AchieveStatus_HaveReceive) { continue; } } else { achieveData = new AchieveData(); achieveData.id = list[i].id; } dailyAchieveDataList.Add(achieveData); } } else { AchievementDataBase typeData = achievementManager.GetParentAchievementData((int)m_uint_activeFType); if (typeData == null) { return; } List <AchievementDataBase> list = achievementManager.GetSubAchievementDataList(typeData.type); dailyAchieveDataList.Clear(); for (int i = 0; i < list.Count; i++) { if (list[i].type == m_uint_activeFType && list[i].childType == m_uint_activeStype) { uint id = list[i].id; AchieveData achieveData = achievementManager.GetAchieveData(id); if (achieveData != null) { if (m_toggle_HideAchievement.value && achieveData.status == (uint)AchieveStatus.AchieveStatus_HaveReceive) { continue; } } else { achieveData = new AchieveData(); achieveData.id = list[i].id; } dailyAchieveDataList.Add(achieveData); } } } dailyAchieveDataList.Sort(SortAchieveData); m_ctor_AchievementScrollView.CreateGrids(dailyAchieveDataList.Count); } }
int CompareAchievementData(AchievementDataBase a, AchievementDataBase b) { return((int)a.type - (int)b.type); }