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;
         }
     }
 }