コード例 #1
0
ファイル: DBMagic.cs プロジェクト: wuhuolong/MaxBooks
        protected override void ParseData(SqliteDataReader reader)
        {
            if (reader == null || !reader.HasRows)
            {
                return;
            }

            while (reader.Read())
            {
                DBMagicItem ad = new DBMagicItem();
                ad.Id          = DBTextResource.ParseUI(GetReaderString(reader, "id"));
                ad.SortId      = DBTextResource.ParseI(GetReaderString(reader, "sort"));
                ad.Name        = GetReaderString(reader, "name");
                ad.IconName    = GetReaderString(reader, "icon_name");
                ad.Color       = DBTextResource.ParseUI(GetReaderString(reader, "color"));
                ad.AssistAttrs = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attrs"));
                ad.SkillList   = DBTextResource.ParseArrayUint(GetReaderString(reader, "skills"), ",");

                data.Add(ad.Id, ad);
                SortData.Add(ad);
            }

            SortData.Sort((a, b) =>
            {
                if (a.SortId < b.SortId)
                {
                    return(-1);
                }
                else if (a.SortId > b.SortId)
                {
                    return(1);
                }
                return(0);
            });
        }
コード例 #2
0
        protected override void ParseData(SqliteDataReader reader)
        {
            if (reader == null || !reader.HasRows)
            {
                return;
            }

            while (reader.Read())
            {
                DBTitleItem ad = new DBTitleItem();
                ad.Id             = DBTextResource.ParseUI(GetReaderString(reader, "id"));
                ad.Name           = GetReaderString(reader, "name");
                ad.Icon           = GetReaderString(reader, "icon_name");
                ad.EffectId       = DBTextResource.ParseUI(GetReaderString(reader, "effect_id"));
                ad.GetCondition   = GetReaderString(reader, "get_condition");
                ad.TimeDesc       = GetReaderString(reader, "time_desc");
                ad.SortId         = DBTextResource.ParseUI(GetReaderString(reader, "sort_id"));
                ad.PageType       = DBTextResource.ParseUI(GetReaderString(reader, "page"));
                ad.Type           = DBTextResource.ParseUI(GetReaderString(reader, "type"));
                ad.IgnoreNewTitle = DBTextResource.ParseUI_s(GetReaderString(reader, "ignore_new_title"), 0) == 1;
                ad.Time           = DBTextResource.ParseUI(GetReaderString(reader, "time"));
                ad.CollectAttr    = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "collect_attr"));
                ad.WearAttr       = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "wear_attr"));
                ad.Quality        = DBTextResource.ParseUI_s(GetReaderString(reader, "quality"), 0);
                Data.Add(ad.Id, ad);
            }
        }
コード例 #3
0
ファイル: DBGrowLv.cs プロジェクト: wuhuolong/MaxBooks
        DBGrowLvItem ReadData(uint grow_type, uint level)
        {
            uint   uid    = grow_type + level * 100;
            string query  = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\"", mTableName, "type", grow_type, "lv", level);
            var    reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query);

            if (reader == null)
            {
                mInfos[uid] = null;
                return(null);
            }

            if (!reader.HasRows || !reader.Read())
            {
                mInfos[uid] = null;
                reader.Close();
                reader.Dispose();
                return(null);
            }

            DBGrowLvItem info = new DBGrowLvItem();

            info.GrowType  = DBTextResource.ParseUI_s(GetReaderString(reader, "type"), 0);
            info.Lv        = DBTextResource.ParseUI_s(GetReaderString(reader, "lv"), 0);
            info.Exp       = DBTextResource.ParseUI_s(GetReaderString(reader, "exp"), 0);
            info.Cost      = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "cost"));
            info.GetExp    = DBTextResource.ParseUI_s(GetReaderString(reader, "get_exp"), 0);
            info.AttrArray = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); //属性加成
            mInfos[uid]    = info;

            reader.Close();
            reader.Dispose();

            return(info);
        }
コード例 #4
0
        public DBPetStepItem GetOneInfo(uint pet_id, uint step)
        {
            OneDBPetStep one_pet_step;

            if (!mInfos.TryGetValue(pet_id, out one_pet_step))
            {
                one_pet_step    = new OneDBPetStep();
                one_pet_step.Id = pet_id;
                one_pet_step.OneDBPetStepArray = new Dictionary <uint, DBPetStepItem>();
                mInfos.Add(one_pet_step.Id, one_pet_step);
            }


            Dictionary <uint, DBPetStepItem> dic = one_pet_step.OneDBPetStepArray;
            DBPetStepItem info = null;

            if (!dic.TryGetValue(step, out info))
            {
                string query_str    = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\"  ", mTableName, "id", pet_id.ToString(), "step", step.ToString());
                var    table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(mFileName, mTableName, query_str);
                if (table_reader == null)
                {
                    dic[step] = null;
                    return(null);
                }

                if (!table_reader.HasRows)
                {
                    dic[step] = null;
                    table_reader.Close();
                    table_reader.Dispose();
                    return(null);
                }

                if (!table_reader.Read())
                {
                    dic[step] = null;
                    table_reader.Close();
                    table_reader.Dispose();
                    return(null);
                }

                info = new DBPetStepItem();

                info.Id        = DBTextResource.ParseUI_s(GetReaderString(table_reader, "id"), 0);
                info.Step      = DBTextResource.ParseUI_s(GetReaderString(table_reader, "step"), 0);
                info.SelfAttr  = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "self_attr"));
                info.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "owner_attr"));
                info.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(table_reader, "cost"));

                dic.Add(step, info);

                table_reader.Close();
                table_reader.Dispose();

                Debug.Log("load pet step " + pet_id + "  " + step);
            }
            return(info);
        }
コード例 #5
0
        public DBWeddingRingGoodsItem GetData(uint id_info)
        {
            DBWeddingRingGoodsItem ad = null;

            if (data.TryGetValue(id_info, out ad))
            {
                return(ad);
            }



            string query_str    = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", "data_ring", "id", id_info.ToString());
            var    table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, "data_ring", query_str);

            if (table_reader == null)
            {
                data[id_info] = null;
                return(null);
            }

            if (!table_reader.HasRows)
            {
                data[id_info] = null;
                table_reader.Close();
                table_reader.Dispose();
                return(null);
            }

            if (!table_reader.Read())
            {
                data[id_info] = null;
                table_reader.Close();
                table_reader.Dispose();
                return(null);
            }

            ad          = new DBWeddingRingGoodsItem();
            ad.id_info  = DBTextResource.ParseUI(GetReaderString(table_reader, "id"));
            ad.step     = DBTextResource.ParseUI(GetReaderString(table_reader, "step"));
            ad.lv       = DBTextResource.ParseUI(GetReaderString(table_reader, "lv"));
            ad.need_exp = DBTextResource.ParseUI(GetReaderString(table_reader, "need_exp"));

            ad.normal_attrs = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "normal_attrs"));
            ad.couple_attrs = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "couple_attrs"));

            ad.skill = DBTextResource.ParseUI(GetReaderString(table_reader, "skill"));
            ad.gid   = DBTextResource.ParseUI(GetReaderString(table_reader, "gid"));

            data.Add(ad.id_info, ad);

            table_reader.Close();
            table_reader.Dispose();

            return(ad);
        }
コード例 #6
0
        //protected override void ParseData(SqliteDataReader reader)
        //{
        //    mInfos.Clear();


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

        //                info.Id = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
        //                info.Qual = DBTextResource.ParseUI_s(GetReaderString(reader, "qual"), 0);
        //                info.Exp = DBTextResource.ParseUI_s(GetReaderString(reader, "exp"), 0);
        //                info.GetExp = DBTextResource.ParseUI_s(GetReaderString(reader, "get_exp"), 0);
        //                info.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr"));
        //                info.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "cost"));
        //                if (mInfos.ContainsKey(info.Id) == false)
        //                {
        //                    OneDBPetQual one_pet_qual = new OneDBPetQual();
        //                    one_pet_qual.Id = info.Id;
        //                    one_pet_qual.MaxQual = 0;
        //                    one_pet_qual.OneDBPetQualArray = new Dictionary<uint, DBPetQualItem>();
        //                    mInfos.Add(one_pet_qual.Id, one_pet_qual);
        //                }
        //                if (mInfos[info.Id].MaxQual < info.Qual)
        //                    mInfos[info.Id].MaxQual = info.Qual;

        //                mInfos[info.Id].OneDBPetQualArray[info.Qual] = info;
        //            }
        //        }
        //    }
        //}

        public DBPetQualItem GetOneInfo(uint pet_id, uint qual)
        {
            Dictionary <uint, DBPetQualItem> dic;

            if (!mInfosDic.TryGetValue(pet_id, out dic))
            {
                dic = new Dictionary <uint, DBPetQualItem>();
                mInfosDic.Add(pet_id, dic);
            }

            DBPetQualItem item;

            if (!dic.TryGetValue(qual, out item))
            {
                string query_str    = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\"  ", PetQualTableName, "id", pet_id.ToString(), "qual", qual.ToString());
                var    table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, PetQualTableName, query_str);
                if (table_reader == null)
                {
                    dic[qual] = null;
                    return(null);
                }

                if (!table_reader.HasRows)
                {
                    dic[qual] = null;
                    table_reader.Close();
                    table_reader.Dispose();
                    return(null);
                }

                if (!table_reader.Read())
                {
                    dic[qual] = null;
                    table_reader.Close();
                    table_reader.Dispose();
                    return(null);
                }

                item = new DBPetQualItem();

                item.Id        = DBTextResource.ParseUI_s(GetReaderString(table_reader, "id"), 0);
                item.Qual      = DBTextResource.ParseUI_s(GetReaderString(table_reader, "qual"), 0);
                item.Exp       = DBTextResource.ParseUI_s(GetReaderString(table_reader, "exp"), 0);
                item.GetExp    = DBTextResource.ParseUI_s(GetReaderString(table_reader, "get_exp"), 0);
                item.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(table_reader, "attr"));
                item.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(table_reader, "cost"));

                dic.Add(qual, item);

                table_reader.Close();
                table_reader.Dispose();
            }
            return(item);
        }
コード例 #7
0
ファイル: DBMagicEquip.cs プロジェクト: wuhuolong/MaxBooks
        private DBMagicEquipItem GetItemInfo(uint gid)
        {
            string query  = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "gid", gid);
            var    reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query);

            if (reader == null)
            {
                data[gid] = null;
                return(null);
            }

            if (!reader.HasRows || !reader.Read())
            {
                data[gid] = null;
                reader.Close();
                reader.Dispose();
                return(null);
            }

            DBMagicEquipItem ad = new DBMagicEquipItem();

            ad.Gid               = gid;
            ad.PosId             = DBTextResource.ParseUI(GetReaderString(reader, "pos_id"));
            ad.StrengthMax       = DBTextResource.ParseUI(GetReaderString(reader, "max_lv"));
            ad.Star              = DBTextResource.ParseUI(GetReaderString(reader, "star"));
            ad.SwallowExpValue   = DBTextResource.ParseUI(GetReaderString(reader, "exp"));
            ad.DefaultAppendDesc = GetReaderString(reader, "default_append_desc");

            ad.BaseAttrs = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "base_attrs"));

            uint num = 0;

            string appendAttrStr = GetReaderString(reader, "spec_attrs");

            appendAttrStr = appendAttrStr.Replace(" ", "");
            var matchs = Regex.Matches(appendAttrStr, @"\{(\d+),(\d+)\}");

            foreach (Match _match in matchs)
            {
                if (_match.Success)
                {
                    num = num + DBTextResource.ParseUI(_match.Groups[2].Value);
                }
            }

            ad.AppendAttrNum = num;

            data.Add(ad.Gid, ad);

            reader.Close();
            reader.Dispose();
            return(ad);
        }
コード例 #8
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mInfos.Clear();
            mCostInfos.Clear();

            DBPetStepItem info;

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

                        info.Id        = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        info.Step      = DBTextResource.ParseUI_s(GetReaderString(reader, "step"), 0);
                        info.SelfAttr  = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "self_attr"));
                        info.OwnerAttr = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "owner_attr"));
                        info.CostArray = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "cost"));
                        if (mInfos.ContainsKey(info.Id) == false)
                        {
                            OneDBPetStep one_pet_step = new OneDBPetStep();
                            one_pet_step.Id = info.Id;
                            //one_pet_step.MaxStep = 0;
                            one_pet_step.OneDBPetStepArray = new Dictionary <uint, DBPetStepItem>();
                            mInfos.Add(one_pet_step.Id, one_pet_step);
                        }
                        //if (mInfos[info.Id].MaxStep < info.Step)
                        //    mInfos[info.Id].MaxStep = info.Step;

                        mInfos[info.Id].OneDBPetStepArray[info.Step] = info;

                        if (info.CostArray != null && info.CostArray.Count > 0)
                        {
                            if (mCostInfos.ContainsKey(info.CostArray[0].goods_id) == false)
                            {
                                mCostInfos[info.CostArray[0].goods_id] = info.Id;
                            }
                        }
                    }
                }
            }
        }
コード例 #9
0
ファイル: DBHonor.cs プロジェクト: wuhuolong/MaxBooks
        public DBHonorItem GetData(uint id)
        {
            DBHonorItem ad = null;

            if (data.TryGetValue(id, out ad))
            {
                return(ad);
            }

            string query  = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "id", id);
            var    reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query);

            if (reader == null)
            {
                data[id] = null;
                return(null);
            }

            if (!reader.HasRows || !reader.Read())
            {
                data[id] = null;

                reader.Close();
                reader.Dispose();
                return(null);
            }

            var ret = new DBHonorItem();

            ret.Id        = DBTextResource.ParseUI(GetReaderString(reader, "id"));
            ret.Name      = GetReaderString(reader, "name");
            ret.Icon      = GetReaderString(reader, "icon");
            ret.NeedPower = DBTextResource.ParseL(GetReaderString(reader, "need_pw"));
            ret.NeedGoods = DBTextResource.ParseDBGoodsItem(GetReaderString(reader, "need_goods"));
            ret.AddAttr   = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr"));
            ret.Quality   = DBTextResource.ParseUI_s(GetReaderString(reader, "qual"), 0);
            data.Add(ret.Id, ret);

            reader.Close();
            reader.Dispose();

            return(ret);
        }
コード例 #10
0
ファイル: DBStigmaLv.cs プロジェクト: wuhuolong/MaxBooks
        /// <summary>
        /// 根据id和level获取圣痕属性
        /// </summary>
        /// <param name="id"></param>
        /// <param name="level"></param>
        /// <returns></returns>
        public DBStigmaLvItem GetOneInfo(uint id, uint level)
        {
            uint           uid = id * 1000 + level;
            DBStigmaLvItem info;

            if (mInfos.TryGetValue(uid, out info))
            {
                return(info);
            }

            string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\" AND {0}.{3}=\"{4}\"", mTableName, "id", id, "lv", level);
            var    reader    = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str);

            if (reader == null)
            {
                mInfos[uid] = null;
                return(null);
            }

            if (!reader.HasRows || !reader.Read())
            {
                mInfos[uid] = null;
                reader.Close();
                reader.Dispose();
                return(null);
            }

            info              = new DBStigmaLvItem();
            info.Id           = id;
            info.Lv           = level;
            info.Exp          = GetReaderUint(reader, "exp");
            info.Attr         = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr"));
            info.attr_percent = DBTextResource.ParseUI_s(GetReaderString(reader, "attr_percent"), 0);
            mInfos[uid]       = info;

            reader.Close();
            reader.Dispose();

            return(info);
        }
コード例 #11
0
        protected override void ParseData(SqliteDataReader reader)
        {
            if (reader == null || !reader.HasRows)
            {
                return;
            }

            while (reader.Read())
            {
                DBMountEquipGoodsItem ad = new DBMountEquipGoodsItem();
                ad.gid        = DBTextResource.ParseUI(GetReaderString(reader, "gid"));
                ad.ride_limit = DBTextResource.ParseUI(GetReaderString(reader, "ride_limit"));
                ad.pos_id     = DBTextResource.ParseUI(GetReaderString(reader, "pos_id"));
                ad.lv_step    = DBTextResource.ParseUI(GetReaderString(reader, "lv_step"));
                ad.attrs      = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attrs"));

                data.Add(ad.gid, ad);

                if (pos_list.Contains(ad.pos_id) == false)
                {
                    pos_list.Add(ad.pos_id);
                }
            }
        }
コード例 #12
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mInfos.Clear();
            mSortInfos.Clear();
            mNormalDegreeSortInfos.Clear();
            DBGrowSkinItem info;

            if (reader != null)
            {
                if (reader.HasRows == true)
                {
                    while (reader.Read())
                    {
                        info            = new DBGrowSkinItem();
                        info.GrowType   = DBTextResource.ParseUI_s(GetReaderString(reader, "type"), 0);
                        info.Id         = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        info.Name       = GetReaderString(reader, "name");
                        info.Desc       = GetReaderString(reader, "desc");                                                     //描述
                        info.UnlockType = (SkinUnLockType)DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_type"), 0); //解锁方式
                        if (info.UnlockType == SkinUnLockType.WhenOpenFunc)
                        {
                            //info.UnlockPlayerLevel = DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_condition"), 0);          //解锁条件
                        }
                        else if (info.UnlockType == SkinUnLockType.CostGoods)
                        {
                            info.UnLockGoodsConditionArray = new List <DBPet.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)
                                {
                                    DBPet.UnLockGoodsCondition tmp_item = new DBPet.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_grow_skin", info.Id));
                                }
                            }
                        }
                        else if (info.UnlockType == SkinUnLockType.GrowLevel)
                        {
                            info.UnlockGrowLevel = DBTextResource.ParseUI_s(GetReaderString(reader, "unlock_condition"), 0);          //解锁条件
                        }
                        else
                        {
                        }

                        info.UnlockDesc               = GetReaderString(reader, "unlock_desc");                           //解锁说明
                        info.SortId                   = DBTextResource.ParseUI_s(GetReaderString(reader, "sort_id"), 0);  //排序ID
                        info.Quality                  = DBTextResource.ParseUI_s(GetReaderString(reader, "quality"), 0);  //品质
                        info.ActorId                  = 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.ModelLocalScaleGoods     = DBTextResource.ParseVector3(GetReaderString(reader, "model_local_scale_goods"));
                        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.ModelCameraOffset        = DBTextResource.ParseVector3(GetReaderString(reader, "model_camera_offset"));
                        info.ModelDefaultAngle        = DBTextResource.ParseVector3(GetReaderString(reader, "model_default_angle"));

                        info.ModelSceneOffset     = DBTextResource.ParseVector3(GetReaderString(reader, "model_scene_offset"));
                        info.SurfaceOffset        = DBTextResource.ParseVector3(GetReaderString(reader, "surfaceOffset"));
                        info.GetOffset            = DBTextResource.ParseVector3(GetReaderString(reader, "getOffset"));
                        info.AttrArray            = DBTextResource.ParseDBAttrItems(GetReaderString(reader, "attr")); //属性加成
                        info.IdleActionWhenRiding = GetReaderString(reader, "idleActionWhenRiding");
                        info.RunActionWhenRiding  = GetReaderString(reader, "runActionWhenRiding");
                        info.SceneModelOffset     = DBTextResource.ParseVector3(GetReaderString(reader, "sceneModelOffset"));
                        if (mInfos.ContainsKey(info.GrowType) == false)
                        {
                            mInfos.Add(info.GrowType, new Dictionary <uint, DBGrowSkinItem>());
                        }
                        mInfos[info.GrowType][info.Id] = info;

                        if (mSortInfos.ContainsKey(info.GrowType) == false)
                        {
                            mSortInfos.Add(info.GrowType, new List <DBGrowSkinItem>());
                        }
                        mSortInfos[info.GrowType].Add(info);

                        if (info.UnlockType == SkinUnLockType.WhenOpenFunc || info.UnlockType == SkinUnLockType.GrowLevel)
                        {
                            if (mNormalDegreeSortInfos.ContainsKey(info.GrowType) == false)
                            {
                                mNormalDegreeSortInfos.Add(info.GrowType, new List <DBGrowSkinItem>());
                            }
                            mNormalDegreeSortInfos[info.GrowType].Add(info);
                        }
                    }

                    foreach (var item in mSortInfos)
                    {
                        item.Value.Sort((a, b) =>
                        {
                            if (a.SortId < b.SortId)
                            {
                                return(-1);
                            }
                            else if (a.SortId > b.SortId)
                            {
                                return(1);
                            }

                            if (a.Id < b.Id)
                            {
                                return(-1);
                            }
                            else if (a.Id > b.Id)
                            {
                                return(1);
                            }
                            return(0);
                        });
                    }

                    foreach (var item in mNormalDegreeSortInfos)
                    {
                        item.Value.Sort((a, b) =>
                        {
                            if (a.UnlockType == SkinUnLockType.WhenOpenFunc)
                            {
                                if (b.UnlockType != SkinUnLockType.WhenOpenFunc)
                                {
                                    return(-1);
                                }
                            }
                            else
                            {
                                if (b.UnlockType == SkinUnLockType.WhenOpenFunc)
                                {
                                    return(1);
                                }
                                else
                                {
                                    if (a.UnlockGrowLevel < b.UnlockGrowLevel)
                                    {
                                        return(-1);
                                    }
                                    else if (a.UnlockGrowLevel > b.UnlockGrowLevel)
                                    {
                                        return(1);
                                    }
                                    return(0);
                                }
                            }
                            if (a.Id < b.Id)
                            {
                                return(-1);
                            }
                            else if (a.Id > b.Id)
                            {
                                return(1);
                            }
                            return(0);
                        });
                    }
                }
            }
        }
コード例 #13
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);
                });
            }
        }