//等级提升时 private void OnLevelUpEvent(IEvent ievent) { var e = ievent as Event_LevelUp; var MyLevel = PlayerDataManager.Instance.GetLevel(); List <AchievementRecord> list = null; if (!mLevelDic.TryGetValue(MyLevel, out list)) { return; } { var __list6 = list; var __listCount6 = __list6.Count; for (var __i6 = 0; __i6 < __listCount6; ++__i6) { var table = __list6[__i6]; { if (table.Type != mCurrentPage) { continue; } var achievement = new AchievementItemDataModel(); DataModel.CurrentAchievementItemList.Add(achievement); AssignAchievement(table, achievement); } } } }
//等级提升时 private void OnUpLVEvent(IEvent ievent) { var _e = ievent as Event_LevelUp; var _MyLevel = PlayerDataManager.Instance.GetLevel(); List <AchievementRecord> _list = null; if (!m_dicLevelDic.TryGetValue(_MyLevel, out _list)) { return; } { var _list6 = _list; var _listCount6 = _list6.Count; for (var _i6 = 0; _i6 < _listCount6; ++_i6) { var _table = _list6[_i6]; { if (_table.Type != mCurrentPage) { continue; } var _achievement = new AchievementItemDataModel(); m_DataModel.CurrentAchievementItemList.Add(_achievement); FillAccomplishment(_table, _achievement); } } } }
//刷新当前页 private void RefreshAccomplishment() { var _MyLevel = PlayerDataManager.Instance.GetLevel(); m_DataModel.CurrentAchievementItemList.Clear(); var _tempList = new List <AchievementItemDataModel>(); List <AchievementRecord> _list = null; if (!m_dicAnalyzeTable.TryGetValue(mCurrentPage, out _list)) { return; } { var _list8 = _list; var _listCount8 = _list8.Count; for (var _i8 = 0; _i8 < _listCount8; ++_i8) { var _table = _list8[_i8]; { //并且也没完成 if (!IsAchieveAccomplishment(_table.Id)) { //没达到可视等级隐藏 if (_table.ViewLevel > 0 && _MyLevel < _table.ViewLevel || _table.Type == 9) { continue; } //扩展数据可见性判断 if (-1 != _table.ClientDisplay) { if (0 == FlagData.GetFlag(_table.ClientDisplay)) { continue; } } } var _achievement = new AchievementItemDataModel(); FillAccomplishment(_table, _achievement); var _state = (eRewardState)_achievement.State; if (eRewardState.CanGet == _state) { _tempList.Insert(0, _achievement); } else { _tempList.Add(_achievement); } } } SortByState(_tempList); } m_DataModel.CurrentAchievementItemList = new ObservableCollection <AchievementItemDataModel>(allLst); }
//刷新当前页 private void UpdateAchievement() { var MyLevel = PlayerDataManager.Instance.GetLevel(); DataModel.CurrentAchievementItemList.Clear(); var tempList = new List <AchievementItemDataModel>(); List <AchievementRecord> list = null; if (!mAnalyzeTable.TryGetValue(mCurrentPage, out list)) { return; } { var __list8 = list; var __listCount8 = __list8.Count; for (var __i8 = 0; __i8 < __listCount8; ++__i8) { var table = __list8[__i8]; { //并且也没完成 if (!IsAchievementAccomplished(table.Id)) { //没达到可视等级隐藏 if (table.ViewLevel > 0 && MyLevel < table.ViewLevel) { continue; } //扩展数据可见性判断 if (-1 != table.ClientDisplay) { if (0 == FlagData.GetFlag(table.ClientDisplay)) { continue; } } } var achievement = new AchievementItemDataModel(); AssignAchievement(table, achievement); var state = (eRewardState)achievement.State; if (eRewardState.CanGet == state) { tempList.Insert(0, achievement); } else { tempList.Add(achievement); } } } } DataModel.CurrentAchievementItemList = new ObservableCollection <AchievementItemDataModel>(tempList); }
//填充一个成就数据到数据源 private void FillAccomplishment(AchievementRecord table, AchievementItemDataModel achievement) { achievement.Id = table.Id; achievement.Title = table.Name; if (-1 != table.Exdata) { var _progress = Mathf.Min(PlayerDataManager.Instance.GetAccomplishmentProgress(achievement.Id), table.ExdataCount); achievement.Progress = _progress * 1.0f / table.ExdataCount; achievement.ProgressLabel = string.Format("{0}/{1}", GameUtils.GetBigValueStr(_progress), GameUtils.GetBigValueStr(table.ExdataCount)); if (GameUtils.GetBigValueStr(table.ExdataCount) == "1") { achievement.ShowPorgress = false; } else { achievement.ShowPorgress = true; } } else { achievement.ShowPorgress = false; } var _state = PlayerDataManager.Instance.GetAccomplishmentStatus(achievement.Id); achievement.State = (int)_state; /* * if (eRewardState.HasGot == state) * { * achievement.State = GameUtils.GetDictionaryText(1035); * achievement.CanGetReward = false; * } * else if (eRewardState.CanGet == state) * { * achievement.State = GameUtils.GetDictionaryText(1036); * achievement.CanGetReward = true; * } * else if (eRewardState.CannotGet == state) * { * achievement.State = GameUtils.GetDictionaryText(1037); * achievement.CanGetReward = false; * } */ var _tableItemIdLength0 = table.ItemId.Length; for (var i = 0; i < _tableItemIdLength0; i++) { var _itemId = table.ItemId[i]; achievement.Rewards[i].ItemId = _itemId; achievement.Rewards[i].Count = table.ItemCount[i]; } }
//填充一个成就数据到数据源 public void AssignAchievement(AchievementRecord table, AchievementItemDataModel achievement) { achievement.Id = table.Id; achievement.Title = table.Name; if (-1 != table.Exdata) { var progress = Mathf.Min(GetAchievementProgress(achievement.Id), table.ExdataCount); achievement.Progress = progress * 1.0f / table.ExdataCount; achievement.ProgressLabel = string.Format("{0}/{1}", GameUtils.GetBigValueStr(progress), GameUtils.GetBigValueStr(table.ExdataCount)); achievement.ShowPorgress = true; } else { achievement.ShowPorgress = false; } var state = GetAchievementState(achievement.Id); achievement.State = (int)state; /* * if (eRewardState.HasGot == state) * { * achievement.State = GameUtils.GetDictionaryText(1035); * achievement.CanGetReward = false; * } * else if (eRewardState.CanGet == state) * { * achievement.State = GameUtils.GetDictionaryText(1036); * achievement.CanGetReward = true; * } * else if (eRewardState.CannotGet == state) * { * achievement.State = GameUtils.GetDictionaryText(1037); * achievement.CanGetReward = false; * } */ var tableItemIdLength0 = table.ItemId.Length; for (var i = 0; i < tableItemIdLength0; i++) { var itemId = table.ItemId[i]; achievement.Rewards[i].ItemId = itemId; achievement.Rewards[i].Count = table.ItemCount[i]; } }
//当标记位改变时 public void OnFlagUpdate(int idx) { List <AchievementRecord> list = null; if (!mFlagDataDic.TryGetValue(idx, out list)) { return; } //我的等级 var MyLevel = PlayerDataManager.Instance.GetLevel(); var updateTypeList = new List <int>(); { var __list3 = list; var __listCount3 = __list3.Count; for (var __i3 = 0; __i3 < __listCount3; ++__i3) { var table = __list3[__i3]; { if (table.Type < 0 || table.Type >= DataModel.Summary.Count) { continue; } var state = GetAchievementState(table.Id); //这个成就的可见标记位改变了,并且当前显示的就这个成就列表 if (-1 != table.ClientDisplay && table.ClientDisplay == idx && mCurrentPage == table.Type) { var needAdd = false; if (eRewardState.CannotGet != state) { //完成就直接显示 needAdd = true; } else if (0 != FlagData.GetFlag(table.ClientDisplay)) { if (MyLevel >= table.ViewLevel) { //达到了显示条件才显示 needAdd = true; } } //这个成就变可见了 if (needAdd) { var find = false; { // foreach(var data in DataModel.CurrentAchievementItemList) var __enumerator12 = (DataModel.CurrentAchievementItemList).GetEnumerator(); while (__enumerator12.MoveNext()) { var data = __enumerator12.Current; { if (data.Id == table.Id) { find = true; break; } } } } if (!find) { //没找到就要加入到当前列表 var achievement = new AchievementItemDataModel(); DataModel.CurrentAchievementItemList.Add(achievement); AssignAchievement(table, achievement); } } } if (state == eRewardState.CannotGet) { continue; } //这个类型需要重新计算 if (!updateTypeList.Contains(table.Type)) { updateTypeList.Add(table.Type); } { // foreach(var achievement in DataModel.CurrentAchievementItemList) var __enumerator13 = (DataModel.CurrentAchievementItemList).GetEnumerator(); while (__enumerator13.MoveNext()) { var achievement = __enumerator13.Current; { if (achievement.Id == table.Id) { achievement.State = (int)state; break; } } } } } } } //刷新改变的类型 if (updateTypeList.Count > 0) { var tempList = DataModel.CurrentAchievementItemList; var changed = false; for (var i = 1; i < tempList.Count; i++) { var temp = tempList[i]; if (eRewardState.CanGet == (eRewardState)temp.State) { tempList.RemoveAt(i); tempList.Insert(0, temp); changed = true; } } if (changed) { DataModel.CurrentAchievementItemList = tempList; } { var __list4 = updateTypeList; var __listCount4 = __list4.Count; for (var __i4 = 0; __i4 < __listCount4; ++__i4) { var type = __list4[__i4]; { RefreshByType(type); } } } RefreshNotice(); } RefeshTotal(); }
//当标记位改变时 private void OnFlagChange(int idx) { List <AchievementRecord> _list = null; if (!m_dicFlagDataDic.TryGetValue(idx, out _list)) { return; } //我的等级 var _MyLevel = PlayerDataManager.Instance.GetLevel(); var _updateTypeList = new List <int>(); { var _list3 = _list; var _listCount3 = _list3.Count; for (var _i3 = 0; _i3 < _listCount3; ++_i3) { var _table = _list3[_i3]; { if (_table.Type < 0 || _table.Type >= m_DataModel.Summary.Count) { continue; } var _state = PlayerDataManager.Instance.GetAccomplishmentStatus(_table.Id); //这个成就的可见标记位改变了,并且当前显示的就这个成就列表 if (-1 != _table.ClientDisplay && _table.ClientDisplay == idx && mCurrentPage == _table.Type) { var _needAdd = false; if (eRewardState.CannotGet != _state) { //完成就直接显示 _needAdd = true; } else if (0 != FlagData.GetFlag(_table.ClientDisplay)) { if (_MyLevel >= _table.ViewLevel) { //达到了显示条件才显示 _needAdd = true; } } //这个成就变可见了 if (_needAdd) { var _find = false; { // foreach(var data in DataModel.CurrentAchievementItemList) var _enumerator12 = (m_DataModel.CurrentAchievementItemList).GetEnumerator(); while (_enumerator12.MoveNext()) { var _data = _enumerator12.Current; { if (_data.Id == _table.Id) { _find = true; break; } } } } if (!_find) { //没找到就要加入到当前列表 var _achievement = new AchievementItemDataModel(); m_DataModel.CurrentAchievementItemList.Add(_achievement); FillAccomplishment(_table, _achievement); } } } if (_state == eRewardState.CannotGet) { continue; } //这个类型需要重新计算 if (!_updateTypeList.Contains(_table.Type)) { _updateTypeList.Add(_table.Type); } { // foreach(var achievement in DataModel.CurrentAchievementItemList) var _enumerator13 = (m_DataModel.CurrentAchievementItemList).GetEnumerator(); while (_enumerator13.MoveNext()) { var _achievement = _enumerator13.Current; { if (_achievement.Id == _table.Id) { _achievement.State = (int)_state; break; } } } } } } } //刷新改变的类型 if (_updateTypeList.Count > 0) { var _tempList = m_DataModel.CurrentAchievementItemList; var _changed = false; for (var i = 1; i < _tempList.Count; i++) { var _temp = _tempList[i]; if (eRewardState.CanGet == (eRewardState)_temp.State) { _tempList.RemoveAt(i); _tempList.Insert(0, _temp); _changed = true; } } if (_changed) { SortByState(_tempList.ToList()); m_DataModel.CurrentAchievementItemList = new ObservableCollection <AchievementItemDataModel>(allLst); } { var _list4 = _updateTypeList; var _listCount4 = _list4.Count; for (var _i4 = 0; _i4 < _listCount4; ++_i4) { var _type = _list4[_i4]; { RenewalType(_type); } } } RenewalNotice(); } RefeshIntergral(); }