예제 #1
0
        public void RefreshSkillLevel()
        {
            mHasReplaceIds.Clear();
            if (m_skills_info_array == null)
            {
                return;
            }
            DBDataAllSkill db_all_skill = DBManager.Instance.GetDB <DBDataAllSkill>();

            for (int index = 0; index < m_skills_info_array.Count; ++index)
            {
                uint all_skill_id = m_skills_info_array[index].id;
                DBDataAllSkill.AllSkillInfo info = db_all_skill.GetOneAllSkillInfo(all_skill_id);
                if (info != null && info.ReplaceIds != null)
                {
                    foreach (var item in info.ReplaceIds)
                    {
                        if (mHasReplaceIds.ContainsKey(item) == false)
                        {
                            mHasReplaceIds.Add(item, all_skill_id);
                        }
                        else
                        {
                            GameDebug.LogRed(string.Format("old_skill_id = {0} new_skill_id",
                                                           mHasReplaceIds[item], all_skill_id));
                        }
                    }
                }
            }
        }
예제 #2
0
        void TryAddSkillIds(List <uint> skillIds, DBDataAllSkill.AllSkillInfo allSkillInfo, DBSkillSev.SkillInfoSev skillInfo)
        {
            if (mkSelfActor == null || mkSelfActor.CDCtrl == null || mkSelfActor.AttackCtrl == null)
            {
                return;
            }
            if (allSkillInfo == null || skillInfo == null)
            {
                return;
            }

            if (mkSelfActor.CDCtrl.IsInCD(skillInfo.Id) == false && mkSelfActor.AttackCtrl.IsMpEnough(skillInfo.Id) == true)
            {
                // 怒气技能需要判断怒气是否足够
                if (allSkillInfo.SetSlotType == DBDataAllSkill.SET_SLOT_TYPE.FurySkill)
                {
                    if (LocalPlayerManager.Instance.Fury >= skillInfo.CostFury)
                    {
                        skillIds.Add(skillInfo.Id);
                    }
                }
                else if (allSkillInfo.SetSlotType == DBDataAllSkill.SET_SLOT_TYPE.MateSKill)
                {
                    //不加入到自动
                    //nothing
                }
                else
                {
                    skillIds.Add(skillInfo.Id);
                }
            }
        }
예제 #3
0
        /// <summary>
        /// 根据服务端的数据来设置所有已开放的主动和被动技能
        /// </summary>
        /// <param name="add_skills"></param>
        public void AddSkillList(List <Net.PkgSkillsOne> add_skills)
        {
            DBDataAllSkill db_all_skill = DBManager.Instance.GetDB <DBDataAllSkill>();

            // 获取新的技能的id,需要在返回野外的时候表现获取的动画,同时获得多个时,只表现最后一个技能的动画
            uint new_active_skill_id = 0;

            if (m_skills_info_array == null)
            {
                m_skills_info_array = new List <Net.PkgSkillsOne>();
                if (m_new_skills_array == null)
                {
                    m_new_skills_array = new List <uint>();
                    // m_new_skills_array的数据 用于在技能系统面板中显示'新'的标识
                    string   newSkillSaveNameStr = string.Format("{0}NewSkillList", Game.GetInstance().LocalPlayerID.obj_idx);
                    string   newSkillListStr     = UserPlayerPrefs.GetInstance().GetString(newSkillSaveNameStr, "");
                    string[] substr   = newSkillListStr.Split(',');
                    uint     skill_id = 0;
                    for (int index = 0; index < substr.Length; ++index)
                    {
                        string cur = substr[index];

                        if (uint.TryParse(cur, out skill_id))
                        {
                            if (skill_id != 0)
                            {
                                m_new_skills_array.Add(skill_id);
                            }
                        }
                    }
                }
            }
            else // m_skills_info_array不为空时
            {
                bool add_newLearnSkill = false;
                foreach (var item in add_skills)
                {
                    if (m_new_skills_array.Contains(item.id) == false)
                    {
                        m_new_skills_array.Add(item.id);
                        add_newLearnSkill = true;
                    }

                    // 判断是否有新获取的主动技能
                    var skil_info = db_all_skill.GetOneAllSkillInfo(item.id);
                    if (skil_info != null && skil_info.SkillType == DBDataAllSkill.SKILL_TYPE.Active)
                    {
                        if (m_ActiveSkillIdList != null && !m_ActiveSkillIdList.Contains(item.id))
                        {
                            new_active_skill_id = item.id;
                        }
                    }
                }

                if (add_newLearnSkill)
                {
                    SaveNewSkillList();
                }
            }

            m_skills_info_array.AddRange(add_skills);
            if (m_ActiveSkillIdList == null)
            {
                m_ActiveSkillIdList = new List <uint>();
            }

            // 获取已经开放的技能列表,来设置固定装配位置的技能
            foreach (var info in m_skills_info_array)
            {
                // 不处理被动技能
                var skil_info = db_all_skill.GetOneAllSkillInfo(info.id);
                if (skil_info == null || skil_info.SkillType != DBDataAllSkill.SKILL_TYPE.Active)
                {
                    continue;
                }

                if (m_ActiveSkillIdList.Contains(info.id) == false)
                {
                    //GameDebug.LogError("m_ActiveSkillIdList " + info.id);
                    m_ActiveSkillIdList.Add(info.id);// 将技能id添加到列表中
                }
                // 固定技能槽的位置
                if (skil_info.Can_set_key == false)
                {
                    SkillManager.Instance.SetOpeningSkill((DBCommandList.OPFlag)skil_info.FixedKeyPos, skil_info.Sub_id);
                }
                else
                {
                    uint skill_pos = SkillHoleManager.Instance.GetOpenSkillHole(skil_info.Id);
                    if (skill_pos != 0)
                    {
                        // 对应位置没有装配的时候自动设置
                        uint has_exist_skill_id_in_slot = SkillManager.Instance.GetNormalFitSkillId(skill_pos);
                        bool needSetOpeningSkill        = false;
                        if (has_exist_skill_id_in_slot == 0)
                        {
                            needSetOpeningSkill = true;
                        }
                        else if (skil_info.ReplaceIds != null)
                        {
                            DBDataAllSkill.AllSkillInfo all_info = db_all_skill.GetOneAllSkillInfo_byActiveSkillId(has_exist_skill_id_in_slot);
                            if (all_info != null && skil_info.ReplaceIds.Contains(all_info.Id))
                            {//技能升级,直接替换
                                needSetOpeningSkill = true;
                            }
                        }
                        if (needSetOpeningSkill)
                        {
                            SkillManager.Instance.SetOpeningSkill((DBCommandList.OPFlag)skill_pos, skil_info.Sub_id);
                        }
                    }
                }

                if (info.id == new_active_skill_id)// 是新获取的技能,需要进行动画表现
                {
                    //GameDebug.LogError("[OpenNewSkill] info.id = " + info.id);
                    SkillHoleManager.Instance.OpenNewSkill(info.id);
                }
                else // 直接开启对应的技能孔
                {
                    //GameDebug.LogError("[OpenSkill] info.id = " + info.id);
                    SkillHoleManager.Instance.OpenSkill(info.id);
                }
            }
            RefreshSkillLevel();
        }
예제 #4
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mInfos.Clear();
            mOpenSkillInfos.Clear();
            DBDataAllSkill  db_all_skill = DBManager.Instance.GetDB <DBDataAllSkill>();
            DBPetFetterItem info;

            if (reader != null)
            {
                if (reader.HasRows == true)
                {
                    while (reader.Read())
                    {
                        info           = new DBPetFetterItem();
                        info.PetId     = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        info.Index     = DBTextResource.ParseUI_s(GetReaderString(reader, "index"), 0);
                        info.Condition = new List <DBPet.UnLockPrePetCondition>();
                        List <List <uint> > str_array = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "condition"));
                        if (str_array != null)
                        {
                            for (int index = 0; index < str_array.Count; ++index)
                            {
                                if (str_array[index] != null && str_array[index].Count >= 2)
                                {
                                    DBPet.UnLockPrePetCondition condition = new DBPet.UnLockPrePetCondition();
                                    condition.pet_id     = str_array[index][0];
                                    condition.step_level = str_array[index][1];
                                    info.Condition.Add(condition);
                                }
                            }
                        }
                        info.Attr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr"));
                        List <uint> skill_array = DBTextResource.ParseArrayUint(GetReaderString(reader, "skills"), ",");
                        info.Skills = new Dictionary <uint, List <FetterSkillItem> >();
                        if (skill_array != null)
                        {
                            for (int index = 0; index < skill_array.Count; ++index)
                            {
                                FetterSkillItem item = new FetterSkillItem();
                                item.skill_id = skill_array[index];
                                DBDataAllSkill.AllSkillInfo skill_info = db_all_skill.GetOneAllSkillInfo(item.skill_id);
                                uint vocation = 0;
                                if (skill_info != null)
                                {
                                    vocation = skill_info.Require_race;
                                }
                                item.vocation = vocation;
                                if (info.Skills.ContainsKey(item.vocation) == false)
                                {
                                    info.Skills.Add(item.vocation, new List <FetterSkillItem>());
                                }
                                info.Skills[item.vocation].Add(item);

                                mOpenSkillInfos[item.skill_id] = info;
                            }
                        }
                        if (info.Skills.ContainsKey(DBDataAllSkill.CommonVocationType))
                        {
                            foreach (var item in info.Skills)
                            {
                                if (item.Key == DBDataAllSkill.CommonVocationType)
                                {
                                    continue;
                                }
                                item.Value.AddRange(info.Skills[DBDataAllSkill.CommonVocationType]);
                            }
                        }
                        if (mInfos.ContainsKey(info.PetId) == false)
                        {
                            mInfos.Add(info.PetId, new List <DBPetFetterItem>());
                        }
                        mInfos[info.PetId].Add(info);
                    }
                }
            }

            foreach (var item in mInfos)
            {
                item.Value.Sort((a, b) =>
                {
                    if (a.Index < b.Index)
                    {
                        return(-1);
                    }
                    else if (a.Index > b.Index)
                    {
                        return(1);
                    }
                    return(0);
                });
            }
        }
예제 #5
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mInfos.Clear();
            mSortInfos.Clear();
            DBDataAllSkill db_all_skill = DBManager.Instance.GetDB <DBDataAllSkill>();
            DBStigmaInfo   info;

            if (reader != null)
            {
                if (reader.HasRows == true)
                {
                    while (reader.Read())
                    {
                        info = new DBStigmaInfo();

                        info.Id          = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        info.Name        = GetReaderString(reader, "name");
                        info.Quality     = DBTextResource.ParseUI_s(GetReaderString(reader, "quality"), 0); // 品质
                        info.CostGoodsId = DBTextResource.ParseUI_s(GetReaderString(reader, "cost"), 0);    //消耗的物品ID
                        info.Exp         = DBTextResource.ParseUI_s(GetReaderString(reader, "exp"), 0);     //每次获得经验

                        info.Rank     = DBTextResource.ParseUI_s(GetReaderString(reader, "rank"), 0);       //排序规则
                        info.Actor_id = DBTextResource.ParseUI_s(GetReaderString(reader, "actor_id"), 0);   //角色ID

                        info.ModelLocalPos            = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_pos"));
                        info.ModelLocalScale          = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_scale"));
                        info.ModelLocalAngles         = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_angles"));
                        info.ModelParentDefaultAngles = DBTextResource.ParseVector3(GetReaderString(reader, "model_parent_default_angles"));
                        info.ModelParentLocalPos      = DBTextResource.ParseVector3(GetReaderString(reader, "model_parent_local_pos"));

                        info.Icon = GetReaderString(reader, "icon");     //图标

                        List <List <uint> > skills_str_array = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "skills"));
                        //玩家技能列表(主键是玩家职业)
                        info.PlayerSkills = new Dictionary <uint, List <DBStigmaSkillItemSkillItem> >();
                        skills_str_array  = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "skills"));
                        for (int index = 0; index < skills_str_array.Count; ++index)
                        {
                            if (skills_str_array[index].Count >= 2)
                            {
                                uint skill_id = skills_str_array[index][0];
                                DBDataAllSkill.AllSkillInfo skill_info = db_all_skill.GetOneAllSkillInfo(skill_id);
                                if (skill_info != null)
                                {
                                    uint vocation = skill_info.Require_race;
                                    DBStigmaSkillItemSkillItem tmp_DBStigmaSkillItemSkillItem = new DBStigmaSkillItemSkillItem();
                                    tmp_DBStigmaSkillItemSkillItem.skill_id   = skill_id;
                                    tmp_DBStigmaSkillItemSkillItem.open_level = skills_str_array[index][1];
                                    if (info.PlayerSkills.ContainsKey(vocation) == false)
                                    {
                                        info.PlayerSkills.Add(vocation, new List <DBStigmaSkillItemSkillItem>());
                                    }
                                    info.PlayerSkills[vocation].Add(tmp_DBStigmaSkillItemSkillItem);
                                }
                                else
                                {
                                    GameDebug.LogError(string.Format("Can't find the DBAllSkill = {0}", skill_id));
                                }
                            }
                            else
                            {
                                GameDebug.LogError(string.Format("There is error player_skills (id = {0}) in DBStigma", info.Id));
                            }
                        }
                        if (info.PlayerSkills.ContainsKey(DBDataAllSkill.CommonVocationType))
                        {
                            foreach (var item in info.PlayerSkills)
                            {
                                if (item.Key == DBDataAllSkill.CommonVocationType)
                                {
                                    continue;
                                }
                                item.Value.AddRange(info.PlayerSkills[DBDataAllSkill.CommonVocationType]);
                            }
                        }

                        mInfos.Add(info.Id, info);
                        mSortInfos.Add(info);
                    }
                }
            }
            mSortInfos.Sort((a, b) =>
            {
                if (a.Rank < b.Rank)
                {
                    return(-1);
                }
                else if (a.Rank > b.Rank)
                {
                    return(1);
                }
                return(0);
            });
        }
예제 #6
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mInfos.Clear();
            mSortInfos.Clear();
            mEvolutionIds.Clear();
            DBDataAllSkill db_all_skill = DBManager.Instance.GetDB <DBDataAllSkill>();
            PetInfo        info;

            if (reader != null)
            {
                if (reader.HasRows == true)
                {
                    while (reader.Read())
                    {
                        info = new PetInfo();

                        info.Id         = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        info.Desc       = GetReaderString(reader, "desc");                                                    //说明
                        info.UnlockType = (PetUnLockType)DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_type"), 0); //解锁方式
                        if (info.UnlockType == PetUnLockType.PlayerLevel)
                        {
                            info.UnlockPlayerLevel = DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_condition"), 0);          //解锁条件
                        }
                        else if (info.UnlockType == PetUnLockType.CostGoods)
                        {
                            info.UnLockGoodsConditionArray = new List <UnLockGoodsCondition>();
                            List <List <uint> > str_array = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "unlock_condition"));
                            for (int index = 0; index < str_array.Count; ++index)
                            {
                                if (str_array[index].Count >= 2)
                                {
                                    UnLockGoodsCondition tmp_item = new UnLockGoodsCondition();
                                    tmp_item.goods_id  = str_array[index][0];
                                    tmp_item.goods_num = str_array[index][1];
                                    info.UnLockGoodsConditionArray.Add(tmp_item);
                                }
                                else
                                {
                                    GameDebug.LogError(string.Format("There is error unlock_condition (id = {0}) in data_pet", info.Id));
                                }
                            }
                        }
                        else if (info.UnlockType == PetUnLockType.PrePetDegree)
                        {
                            List <uint> str_array = DBTextResource.ParseArrayUint(GetReaderString(reader, "unlock_condition"), ",");
                            if (str_array != null && str_array.Count >= 2)
                            {
                                info.UnLockPrePetConditionData            = new UnLockPrePetCondition();
                                info.UnLockPrePetConditionData.pet_id     = str_array[0];
                                info.UnLockPrePetConditionData.step_level = str_array[1];
                            }
                            else
                            {
                                GameDebug.LogError(string.Format("There is error unlock_condition (id = {0}) in data_pet", info.Id));
                            }
                        }
                        else if (info.UnlockType == PetUnLockType.EvolutionReplace)
                        {
                            info.PreIdInEvolution      = DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_condition"), 0);
                            info.HasCheckEvolution     = false;
                            info.FirstPetIdInEvolution = 0;
                        }
                        else
                        {
                        }

                        info.Unlock_desc = GetReaderString(reader, "unlock_desc");                           //解锁说明
                        info.Rank        = DBTextResource.ParseUI_s(GetReaderString(reader, "rank"), 0);     //排序规则
                        info.Actor_id    = DBTextResource.ParseUI_s(GetReaderString(reader, "actor_id"), 0); //角色ID
                        info.Quality     = DBTextResource.ParseUI_s(GetReaderString(reader, "quality"), 1);  //品质
                        info.MaxQual     = DBTextResource.ParseUI_s(GetReaderString(reader, "max_qual"), 1); //最高升品
                        info.MaxStep     = DBTextResource.ParseUI_s(GetReaderString(reader, "max_step"), 1); //最高升阶
                        info.Head_icon   = GetReaderString(reader, "head_icon");                             // 头像

                        info.ModelCameraOffset     = DBTextResource.ParseVector3(GetReaderString(reader, "model_camera_offset"));
                        info.ModelCameraOffsetInfo = DBTextResource.ParseVector3(GetReaderString(reader, "model_camera_offset_info"));
                        info.ModelCameraRotate     = DBTextResource.ParseVector3(GetReaderString(reader, "model_camera_rotate"));
                        info.ModelDefaultAngle     = DBTextResource.ParseVector3(GetReaderString(reader, "model_default_angle"));
                        info.ModelCameraOffset2    = DBTextResource.ParseVector3(GetReaderString(reader, "model_camera_offset_2"));
                        info.ModelCameraOffset3    = DBTextResource.ParseVector3(GetReaderString(reader, "model_camera_offset_3"));
                        info.ModelLocalPos         = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_pos"));
                        info.ModelLocalScale       = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_scale"));
                        info.ModelLocalAngles      = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_angles"));
                        info.ModelLocalPos2        = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_pos2"));
                        info.ModelLocalScale2      = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_scale2"));

                        info.ModelShowModelOffset    = DBTextResource.ParseVector3(GetReaderString(reader, "model_show_model_offset"));
                        info.ModelShowCameraRotation = DBTextResource.ParseVector3(GetReaderString(reader, "model_show_camera_rotation"));
                        info.ModelShowCameraOffset   = DBTextResource.ParseVector3(GetReaderString(reader, "model_show_camera_offset"));


                        info.ModelShowScale = DBTextResource.ParseVector3(GetReaderString(reader, "model_show_scale"));

                        //技能列表
                        info.AllSkills       = new List <PetSkillItem>();
                        info.Skills          = new List <PetSkillItem>();
                        info.PassivitySkills = new List <PetSkillItem>();
                        List <List <uint> > skills_str_array = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "skills"));
                        for (int index = 0; index < skills_str_array.Count; ++index)
                        {
                            if (skills_str_array[index].Count >= 2)
                            {
                                PetSkillItem tmp_PetSkillItem = new PetSkillItem();
                                tmp_PetSkillItem.skill_id    = skills_str_array[index][0];
                                tmp_PetSkillItem.open_degree = skills_str_array[index][1];
                                info.AllSkills.Add(tmp_PetSkillItem);
                                DBDataAllSkill.AllSkillInfo skill_info = db_all_skill.GetOneAllSkillInfo(tmp_PetSkillItem.skill_id);
                                if (skill_info != null)
                                {
                                    if (skill_info.SkillType == DBDataAllSkill.SKILL_TYPE.Active)
                                    {
                                        info.Skills.Add(tmp_PetSkillItem);
                                    }
                                    else if (skill_info.SkillType == DBDataAllSkill.SKILL_TYPE.Passive)
                                    {
                                        info.PassivitySkills.Add(tmp_PetSkillItem);
                                    }
                                }
                                else
                                {
                                    GameDebug.LogError(string.Format("[DBPet] can't find the skill! pet_id = {0} skill_id = {1}",
                                                                     info.Id, tmp_PetSkillItem.skill_id));
                                }
                            }
                            else
                            {
                                GameDebug.LogError(string.Format("There is error skills (id = {0}) in data_pet", info.Id));
                            }
                        }

                        //玩家技能
                        info.PlayerSkills = new Dictionary <uint, List <PetSkillItem> >();
                        skills_str_array  = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "player_skills"));
                        for (int index = 0; index < skills_str_array.Count; ++index)
                        {
                            if (skills_str_array[index].Count >= 2)
                            {
                                PetSkillItem tmp_PetSkillItem = new PetSkillItem();
                                tmp_PetSkillItem.skill_id    = skills_str_array[index][0];
                                tmp_PetSkillItem.open_degree = skills_str_array[index][1];

                                DBDataAllSkill.AllSkillInfo skill_info = db_all_skill.GetOneAllSkillInfo(tmp_PetSkillItem.skill_id);
                                uint vocation = 0;
                                if (skill_info != null)
                                {
                                    vocation = skill_info.Require_race;
                                }
                                if (info.PlayerSkills.ContainsKey(vocation) == false)
                                {
                                    info.PlayerSkills.Add(vocation, new List <PetSkillItem>());
                                }
                                info.PlayerSkills[vocation].Add(tmp_PetSkillItem);
                            }
                            else
                            {
                                GameDebug.LogError(string.Format("There is error player_skills (id = {0}) in data_pet", info.Id));
                            }
                        }
                        if (info.PlayerSkills.ContainsKey(DBDataAllSkill.CommonVocationType))
                        {
                            foreach (var item in info.PlayerSkills)
                            {
                                if (item.Key == DBDataAllSkill.CommonVocationType)
                                {
                                    continue;
                                }
                                item.Value.AddRange(info.PlayerSkills[DBDataAllSkill.CommonVocationType]);
                            }
                        }
                        //info.Icon = GetReaderString(reader, "icon");

                        mInfos.Add(info.Id, info);
                        mSortInfos.Add(info);
                    }
                }
            }

            int no_deal_evolution_count = 0;

            while (true)
            {
                no_deal_evolution_count = 0;
                foreach (var item in mInfos)
                {
                    if (item.Value.UnlockType != PetUnLockType.EvolutionReplace)
                    {
                        continue;
                    }
                    if (item.Value.HasCheckEvolution)
                    {
                        continue;//已经处理过
                    }
                    if (item.Value.PreIdInEvolution == 0)
                    {//第一个进化的ID
                        uint first_pet_id = item.Value.Id;
                        mEvolutionIds[first_pet_id] = new List <uint>();
                        mEvolutionIds[first_pet_id].Add(item.Value.Id);
                        item.Value.HasCheckEvolution     = true;
                        item.Value.FirstPetIdInEvolution = first_pet_id;
                    }
                    else if (mInfos.ContainsKey(item.Value.PreIdInEvolution) &&
                             mInfos[item.Value.PreIdInEvolution].HasCheckEvolution)
                    {//非第一个进化的ID且前置进化ID已经计算过
                        uint first_pet_id = mInfos[item.Value.PreIdInEvolution].FirstPetIdInEvolution;
                        mEvolutionIds[first_pet_id].Add(item.Value.Id);
                        item.Value.HasCheckEvolution     = true;
                        item.Value.FirstPetIdInEvolution = first_pet_id;
                    }
                    else//后续循环处理
                    {
                        no_deal_evolution_count++;
                    }
                }

                if (no_deal_evolution_count <= 0)
                {
                    break;
                }
            }


            mSortInfos.Sort((a, b) => {
                if (a.Rank < b.Rank)
                {
                    return(-1);
                }
                else if (a.Rank > b.Rank)
                {
                    return(1);
                }
                if (a.Id < b.Id)
                {
                    return(-1);
                }
                else if (a.Id > b.Id)
                {
                    return(1);
                }
                return(0);
            });
        }