/// <summary> /// 通过[副本ID]二分快速查表 /// </summary> /// <param name="copyId">副本ID</param> /// <returns></returns> public static IEnumerable <CopyTargetDataBase> Query(this List <CopyTargetDataBase> sorted, uint copyId) { var key = new CopyTargetDataBase() { copyId = copyId }; var comparer = new Comparer1(); var from = sorted.BinarySearch(key, comparer); if (from < 0) { yield break; } var to = from + 1; while (from > 0 && comparer.Compare(key, sorted[from - 1]) == 0) { from--; } while (to < sorted.Count && comparer.Compare(key, sorted[to]) == 0) { to++; } for (var i = from; i < to; i++) { yield return(sorted[i]); } }
/// <summary> /// title /// </summary> void InitCopyTargetTitle() { uint waveId = m_listCopyTarget.Count > 0 ? m_listCopyTarget[0].waveIdList[0] : 0; CopyTargetDataBase copyTargetDb = GameTableManager.Instance.GetTableItem <CopyTargetDataBase>(copyManager.EnterCopyID, (int)waveId); if (copyTargetDb != null) { m_label_copyTargetTitle.text = copyTargetDb.stepName; } }
/// <summary> /// 通过[副本ID + 波数]二分快速查表 /// </summary> /// <param name="copyId">副本ID</param> /// <param name="waveId">波数</param> /// <returns></returns> public static CopyTargetDataBase Query(this List <CopyTargetDataBase> sorted, uint copyId, uint waveId) { var key = new CopyTargetDataBase() { copyId = copyId, waveId = waveId }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(CopyTargetDataBase)); }
public string GetCopyTargetName(CopyTargetInfo copyTargetInfo) { uint copyId = DataManager.Manager <ComBatCopyDataManager>().EnterCopyID; string name = string.Empty; for (int j = 0; j < copyTargetInfo.waveIdList.Count; j++) { uint waveId = copyTargetInfo.waveIdList[j]; bool isCompleted = IsCopyTargetWaveCompleted(waveId); CopyTargetDataBase db = GameTableManager.Instance.GetTableItem <CopyTargetDataBase>(copyId, (int)waveId); if (db != null) { string tempName = string.Empty; if (isCompleted) { tempName = ColorManager.GetColorString(ColorType.Green, db.completeWaveName); } else { tempName = db.waveName; } if (copyTargetInfo.waveIdList.Count > 1 && j < copyTargetInfo.waveIdList.Count - 1) { tempName = string.Format("{0}\n", tempName); } name = name + tempName; //五行阵副本 if (IsWuXinZhenCopy()) { uint finishCount = GetWuXinZhenWaveFinishCount(db.waveListStr); name = string.Format(name, finishCount); } //特殊处理演武场 if (IsYanWuChangCopy(copyId)) { if (waveId == 37) { name = string.Format(db.waveName, this.LaskSkillWave); } if (waveId == 38) { string exp = ColorManager.GetColorString(ColorType.Yellow, this.m_copyRewardExp.ToString()); name = string.Format("{0}\n {1}", db.waveName, exp); } } //金银山副本 if (IsGoldCopy(copyId)) { if (waveId == 2) { name = string.Format(db.waveName, this.LaskSkillWave); } if (waveId == 3) { string gold = ColorManager.GetColorString(ColorType.Yellow, this.m_gainGoldInCopy.ToString()); name = string.Format("{0}\n {1}", db.waveName, gold); } } //世界聚宝 if (IsWorldJuBao(copyId)) { //排行 if (waveId == 1) { string rank = DataManager.Manager <JvBaoBossWorldManager>().MyBossDamRank.ToString(); name = string.Format(db.waveName, rank); } //鼓舞加成 if (waveId == 2) { string add = DataManager.Manager <JvBaoBossWorldManager>().CurInspirePileValue.ToString(); name = string.Format(db.waveName, add); } //累计伤害值 if (waveId == 3) { uint myBossDamage = DataManager.Manager <JvBaoBossWorldManager>().MyBossDam; string damage = ColorManager.GetColorString(ColorType.Yellow, myBossDamage.ToString()); name = string.Format("{0}\n {1}", db.waveName, damage); } } } } return(name); }