public int GetPlayerSoulLevelAtTime(uint playerID, int time) { CPlayerSoulLevelStat.SoulLevelDetail soulLevelDetail = null; for (int i = 0; i < this.playerSoulLevelDetail.get_Count(); i++) { if (this.playerSoulLevelDetail.get_Item(i).playerId == playerID) { soulLevelDetail = this.playerSoulLevelDetail.get_Item(i); } } int result = 0; if (soulLevelDetail != null) { for (int j = 0; j < soulLevelDetail.changeTime.Length; j++) { if ((ulong)soulLevelDetail.changeTime[j] > (ulong)((long)time)) { break; } result = j + 1; } } return(result); }
private void OnSoulLvlChange(PoolObjHandle <ActorRoot> act, int curSoulLevel) { if (curSoulLevel > ValueProperty.GetMaxSoulLvl() || curSoulLevel == 0) { return; } if (act) { CPlayerSoulLevelStat.SoulLevelDetail soulLevelDetail = null; uint playerId = act.handle.TheActorMeta.PlayerId; bool flag = false; for (int i = 0; i < this.playerSoulLevelDetail.get_Count(); i++) { if (this.playerSoulLevelDetail.get_Item(i).playerId == playerId) { flag = true; soulLevelDetail = this.playerSoulLevelDetail.get_Item(i); break; } } if (!flag) { soulLevelDetail = new CPlayerSoulLevelStat.SoulLevelDetail(playerId); this.playerSoulLevelDetail.Add(soulLevelDetail); } if (curSoulLevel <= ValueProperty.GetMaxSoulLvl() && curSoulLevel > 0) { soulLevelDetail.changeTime[curSoulLevel - 1] = (uint)Singleton <FrameSynchr> .instance.LogicFrameTick; } } }