Exemplo n.º 1
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mGemInfos.Clear();
            GemInfo gemInfo = null;

            if (reader != null)
            {
                if (reader.HasRows == true)
                {
                    while (reader.Read())
                    {
                        gemInfo           = new GemInfo();
                        gemInfo.Id        = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        gemInfo.Type      = DBTextResource.ParseBT_s(GetReaderString(reader, "type"), 0);
                        gemInfo.Lv        = DBTextResource.ParseUS_s(GetReaderString(reader, "lv"), 0);
                        gemInfo.NextGemId = DBTextResource.ParseUI_s(GetReaderString(reader, "next_gem_id"), 0);
                        gemInfo.Attrs     = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "attr"));
                        gemInfo.TypeName  = GetReaderString(reader, "type_name");

#if UNITY_EDITOR
                        if (mGemInfos.ContainsKey(gemInfo.Id))
                        {
                            GameDebug.LogError(string.Format("[{0}]表重复添加的域id[{1}]", mTableName, gemInfo.Id));
                            continue;
                        }
#endif
                        mGemInfos.Add(gemInfo.Id, gemInfo);
                    }
                }
            }
        }
Exemplo n.º 2
0
 protected override void ParseData(SqliteDataReader reader)
 {
     mTasksData.Clear();
     mTasksDataByType.Clear();
     // 任务不做预加载了
     if (reader != null)
     {
         if (reader.HasRows == true)
         {
             while (reader.Read())
             {
                 ushort taskType = DBTextResource.ParseUS_s(GetReaderString(reader, "type"), 0);
                 if (taskType == GameConst.QUEST_MAIN || taskType == GameConst.QUEST_ESCORT)
                 {
                     try
                     {
                         ReadReader(reader);
                     }
                     catch (System.Exception ex)
                     {
                         GameDebug.LogError("Read task db error, msg:" + ex.Message);
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 3
0
        protected override void ParseData(SqliteDataReader reader)
        {
            base.ParseData(reader);

            mSkillInfos.Clear();

            int fieldCount = reader.FieldCount;

            while (reader.Read())
            {
                SkillBasicInfo info = new SkillBasicInfo();

                for (int i = 0; i < fieldCount; i++)
                {
                    string rawName = reader.GetName(i);

                    if (rawName == "id")
                    {
                        info.Id = DBTextResource.ParseUI(reader.GetString(i));
                    }
                    else if (rawName == "show_in_ui")
                    {
                        info.ShowInUI = DBTextResource.ParseUI(reader.GetString(i));
                    }
                    else if (rawName == "name")
                    {
                        info.Name = reader.GetString(i);
                    }
                    else if (rawName == "type")
                    {
                        info.Type = DBTextResource.ParseUS_s(reader.GetString(i), 1);
                    }
                    else if (rawName == "sub_type")
                    {
                        info.SubType = DBTextResource.ParseUS_s(reader.GetString(i), 1);
                    }
                    else if (rawName == "icon")
                    {
                        info.Icon = reader.GetString(i);
                    }
                    else if (rawName == "skill_type_descript")
                    {
                        info.SkillTypeDescript = reader.GetString(i);
                    }
                }

                mSkillInfos.Add(info.Id, info);
            }
        }
Exemplo n.º 4
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mEngravenfos.Clear();
            EngraveInfo gemInfo = null;

            if (reader != null)
            {
                if (reader.HasRows == true)
                {
                    while (reader.Read())
                    {
                        gemInfo               = new EngraveInfo();
                        gemInfo.Id            = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        gemInfo.Type          = DBTextResource.ParseBT_s(GetReaderString(reader, "type"), 0);
                        gemInfo.Lv            = DBTextResource.ParseUS_s(GetReaderString(reader, "lv"), 0);
                        gemInfo.NextEngraveId = DBTextResource.ParseUI_s(GetReaderString(reader, "next_engrave_id"), 0);
                        gemInfo.Attrs         = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "attr"));

                        mEngravenfos.Add(gemInfo.Id, gemInfo);
                    }
                }
            }
        }
Exemplo n.º 5
0
        ActorData GetActorInfo(uint id)
        {
            string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "id" , id.ToString());

            var table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str);
            if (table_reader == null)
            {
                return null;
            }

            if (!table_reader.HasRows)
            {
                table_reader.Close();
                table_reader.Dispose();
                return null;
            }

            if (!table_reader.Read())
            {
                table_reader.Close();
                table_reader.Dispose();
                return null;
            }

            ActorData ad = new ActorData();
            ad.name = GetReaderString(table_reader, "name");
            ad.vocation = DBTextResource.ParseBT(GetReaderString(table_reader, "vocation"));
            ad.level = DBTextResource.ParseUI(GetReaderString(table_reader, "level"));
            ad.color = (Monster.QualityColor)DBTextResource.ParseBT_s(GetReaderString(table_reader, "color"), 0); ;
            ad.type = DBTextResource.ParseBT(GetReaderString(table_reader, "type"));
            ad.war_tag = DBTextResource.ParseBT(GetReaderString(table_reader, "war_tag"));
            ad.race_id = DBTextResource.ParseUI(GetReaderString(table_reader, "race_id"));
            ad.skill_count = DBTextResource.ParseBT(GetReaderString(table_reader, "skill_count"));
            if (ad.skill_count > 0)
            {
                ad.skill_idx = new uint[ad.skill_count];
                ad.cast_rate = new byte[ad.skill_count];
                for (int k = 0; k < ad.skill_count; ++k)
                {
                    ad.skill_idx[k] = DBTextResource.ParseUI_s(GetReaderString(table_reader, string.Format("skill_idx_{0}", k)), 0);
                    ad.cast_rate[k] = DBTextResource.ParseBT(GetReaderString(table_reader, string.Format("cast_rate_{0}", k)));
                }
            }

            ad.model_id = DBTextResource.ParseUI(GetReaderString(table_reader, "model_id"));
            ad.runspeed = (ushort)GetReaderFloat(table_reader, "runspeed");
            ad.motion_radius = DBTextResource.ParseBT(GetReaderString(table_reader, "motion_radius"));
            ad.behaviour_tree = GetReaderString(table_reader, "behaviour_tree");
            ad.summon_behaviour_tree = GetReaderString(table_reader, "summon_behaviour_tree");
            ad.attack_rotaion = DBTextResource.ParseBT(GetReaderString(table_reader, "attack_rotaion"));
            ad.hp_bar_count = DBTextResource.ParseBT(GetReaderString(table_reader, "hp_bar_count"));
            ad.gravity = DBTextResource.ParseUS_s(GetReaderString(table_reader, "gravity"), DBActor.Gravity);
            ad.dead_notify = DBTextResource.ParseByteArray(GetReaderString(table_reader, "dead_notify"));
            ad.spawn_timeline = DBTextResource.ParseUI(GetReaderString(table_reader, "spawn_timeline"));
            ad.dead_timeline = DBTextResource.ParseUI(GetReaderString(table_reader, "dead_timeline"));
            string isHideShadow = GetReaderString(table_reader, "is_hide_shadow");
            if (isHideShadow == string.Empty || isHideShadow == "0")
            {
                ad.is_hide_shadow = false;
            }
            else
            {
                ad.is_hide_shadow = true;
            }
            string isHideSelectEffect = GetReaderString(table_reader, "is_hide_select_effect");
            if (isHideSelectEffect == string.Empty || isHideSelectEffect == "0")
            {
                ad.is_hide_select_effect = false;
            }
            else
            {
                ad.is_hide_select_effect = true;
            }
            ad.attr_param = DBTextResource.ParseUI_s(GetReaderString(table_reader, "attr_param"), 0);
            ad.default_actor_id = DBTextResource.ParseUI_s(GetReaderString(table_reader, "default_actor_id"), 0);
            data[id] = ad;

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

            return ad;
        }
Exemplo n.º 6
0
        TaskDefine ReadReader(SqliteDataReader reader)
        {
            ushort     taskType = DBTextResource.ParseUS_s(GetReaderString(reader, "type"), 0);
            TaskDefine define   = new TaskDefine();

            define.Id = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
            define.DescriptionBytes = GetReaderBytes(reader, "description");
            define.NameBytes        = GetReaderBytes(reader, "name");
            define.Type             = taskType;
            define.SubType          = DBTextResource.ParseUI_s(GetReaderString(reader, "sub_type"), 0);
            define.RequestLevelMin  = DBTextResource.ParseI_s(GetReaderString(reader, "lv_min"), 0);
            define.PreviousId       = DBTextResource.ParseUI_s(GetReaderString(reader, "pre_id"), 0);
            define.NextId           = DBTextResource.ParseUI_s(GetReaderString(reader, "next_id"), 0);
            define.NextId           = DBTextResource.ParseUI_s(GetReaderString(reader, "next_id"), 0);

            string serverStepRawsString       = GetReaderString(reader, "goals");
            string clientStepRawsString       = GetReaderString(reader, "steps");
            string navigationPointsRawsString = GetReaderString(reader, "navigation_points");

            define.Steps = TaskDefine.TaskStep.CreateStepsByRawString(serverStepRawsString, clientStepRawsString, navigationPointsRawsString);
            if (define.Steps == null || define.Steps.Count == 0)
            {
                GameDebug.LogError("Parse task " + define.Id + " error, step is empty!!!");
            }

            define.RewardIds = DBTextResource.ParseArrayUint(GetReaderString(reader, "reward_ids"), ",");
            define.GetSkills = DBTextResource.ParseArrayUint(GetReaderString(reader, "get_skills"), ",");
            define.IsShowGetSkillProgress = DBTextResource.ParseI_s(GetReaderString(reader, "is_show_get_skill_progress"), 0) == 0 ? false : true;
            define.ReceiveDialogId        = DBTextResource.ParseUI_s(GetReaderString(reader, "receive_dialog_id"), 0);
            define.SubmitDialogId         = DBTextResource.ParseUI_s(GetReaderString(reader, "submit_dialog_id"), 0);
            define.ReceiveNpc             = NpcScenePosition.Make(GetReaderString(reader, "receive_npc"));
            define.SubmitNpc     = NpcScenePosition.Make(GetReaderString(reader, "submit_npc"));
            define.AutoRunType   = (TaskDefine.EAutoRunType)DBTextResource.ParseBT_s(GetReaderString(reader, "auto_run"), 0);
            define.ShowPriority  = DBManager.Instance.GetDB <DBTaskPriority>().GetTaskPriority((int)taskType);
            define.ShowPriority2 = DBManager.Instance.GetDB <DBTaskPriority>().GetTaskPriority2((int)taskType);

            string raw = GetReaderString(reader, "is_temporary_on_top");

            if (string.IsNullOrEmpty(raw) == true || raw == "0")
            {
                define.IsTemporaryOnTop = false;
            }
            else
            {
                define.IsTemporaryOnTop = true;
            }

            string npcsRawString = GetReaderString(reader, "create_npcs_when_received");

            define.CreateNpcsWhenReceived = TaskDefine.MakeNpcScenePositions(npcsRawString);
            npcsRawString = GetReaderString(reader, "delete_npcs_when_received");
            define.DeleteNpcsWhenReceived = TaskDefine.MakeNpcScenePositions(npcsRawString);
            npcsRawString             = GetReaderString(reader, "create_npcs_when_done");
            define.CreateNpcsWhenDone = TaskDefine.MakeNpcScenePositions(npcsRawString);
            npcsRawString             = GetReaderString(reader, "delete_npcs_when_done");
            define.DeleteNpcsWhenDone = TaskDefine.MakeNpcScenePositions(npcsRawString);

            define.FollowNpcs         = TaskDefine.MakeNpcScenePositions(GetReaderString(reader, "follow_npcs"));
            define.CanUseBoots        = (DBTextResource.ParseI_s(GetReaderString(reader, "can_use_boots"), 0) > 0);
            define.ReceivedTimelineId = DBTextResource.ParseUI_s(GetReaderString(reader, "received_timeline_id"), 0);
            define.SubmitedTimelineId = DBTextResource.ParseUI_s(GetReaderString(reader, "submited_timeline_id"), 0);

            raw = GetReaderString(reader, "cost");
            if (string.IsNullOrEmpty(raw) == false)
            {
                define.Costs = DBTextResource.ParseArrayStringString(raw);
            }

            raw = GetReaderString(reader, "show_reward_goods_id");
            List <List <uint> > showRewardGoodsIdConfigs = DBTextResource.ParseArrayUintUint(raw);

            define.ShowRewardGoodsIds = new Dictionary <uint, uint>();
            define.ShowRewardGoodsIds.Clear();
            define.ShowRewardGoodsNums = new Dictionary <uint, uint>();
            define.ShowRewardGoodsNums.Clear();
            define.ShowRewardGoodsIsBinds = new Dictionary <uint, byte>();
            define.ShowRewardGoodsIsBinds.Clear();
            uint index = 1;

            foreach (List <uint> showRewardGoodsIdConfig in showRewardGoodsIdConfigs)
            {
                define.ShowRewardGoodsIds[index]     = showRewardGoodsIdConfig[0];
                define.ShowRewardGoodsNums[index]    = showRewardGoodsIdConfig[1];
                define.ShowRewardGoodsIsBinds[index] = (byte)showRewardGoodsIdConfig[2];
                ++index;
            }

            mTasksData.Add(define.Id, define);
            if (mTasksDataByType.ContainsKey(define.Type) == true)
            {
                mTasksDataByType[define.Type].Add(define.Id, define);
            }
            else
            {
                Dictionary <uint, TaskDefine> taskDefines = new Dictionary <uint, TaskDefine>();
                taskDefines.Clear();
                taskDefines.Add(define.Id, define);

                mTasksDataByType.Add(define.Type, taskDefines);
            }

            return(define);
        }
Exemplo n.º 7
0
        protected override void ParseData(SqliteDataReader reader)
        {
            if (reader == null || !reader.HasRows)
            {
                return;
            }

            SysConfig config = null;

            while (reader.Read())
            {
                var id = DBTextResource.ParseUI(GetReaderString(reader, "sys_id"));
                config = new SysConfig(id);
                var sys_title = GetReaderString(reader, "sys_title");

                var    level       = DBTextResource.ParseUS_s(GetReaderString(reader, "lv_open"), 0);
                string taskTypeStr = GetReaderString(reader, "task_limit");
                if (string.IsNullOrEmpty(taskTypeStr))
                {
                    taskTypeStr = "0";
                }
                var    task_type   = (ESysTaskType)Enum.Parse(typeof(ESysTaskType), taskTypeStr);
                var    task_id     = DBTextResource.ParseUI_s(GetReaderString(reader, "task_args"), 0);
                string positionStr = GetReaderString(reader, "position");
                if (string.IsNullOrEmpty(positionStr))
                {
                    positionStr = "0";
                }
                var    pos         = (ESysBtnPos)Enum.Parse(typeof(ESysBtnPos), positionStr);
                uint   sub_pos     = DBTextResource.ParseUI_s(GetReaderString(reader, "sub_pos"), 0);
                string fixedPosStr = GetReaderString(reader, "fixed_pos");
                if (string.IsNullOrEmpty(fixedPosStr))
                {
                    fixedPosStr = "0";
                }
                var  is_fixed       = (ESysBtnFixType)DBTextResource.ParseUI_s(fixedPosStr, 1);
                bool show_bg        = DBTextResource.ParseUI_s(GetReaderString(reader, "show_bg"), 0) == 1;
                uint is_activity    = DBTextResource.ParseUI_s(GetReaderString(reader, "is_activity"), 0);
                var  desc           = GetReaderString(reader, "desc");
                var  btn_sprite     = GetReaderString(reader, "btn_spr");
                var  btn_text       = GetReaderString(reader, "btn_text");
                var  sort_order     = DBTextResource.ParseBT_s(GetReaderString(reader, "sort_order"), 0);
                var  transfer_limit = DBTextResource.ParseUI_s(GetReaderString(reader, "transfer_limit"), 0);
                var  not_open_tips  = GetReaderString(reader, "not_open_tips");
                var  main_ui_btn_id = DBTextResource.ParseUI_s(GetReaderString(reader, "main_ui_btn_id"), 0);

                config.Init(level, task_type, task_id, pos, sub_pos, is_fixed, show_bg, is_activity == 1, desc, btn_sprite, btn_text, sort_order, transfer_limit, not_open_tips, sys_title, main_ui_btn_id);
                config.NeedAnim = DBTextResource.ParseUI_s(GetReaderString(reader, "is_need_anim"), 0) == 0 ? false : true;

                if (pos == ESysBtnPos.NONE) // 当在主ui上没有按钮图标的时候,也一定不需要播放开启的动画
                {
                    if (config.NeedAnim)
                    {
                        config.NeedAnim = false;
                        GameDebug.LogError(string.Format("sys:{0} 在主ui上没有图标, 却配置了开启动画", id));
                    }
                }

                config.InitNeedShow          = DBTextResource.ParseUI_s(GetReaderString(reader, "is_need_show"), 0) == 0 ? false : true;
                config.PatchId               = DBTextResource.ParseI_s(GetReaderString(reader, "patch_id"), 0);
                config.HideBtnWhenActNotOpen = DBTextResource.ParseUI_s(GetReaderString(reader, "hide_btn_when_act_not_open"), 0) == 0 ? false : true;
                config.SysIdClosePresent     = DBTextResource.ParseUI_s(GetReaderString(reader, "sys_id_close_present"), 0);

                // 如果有系统开放关联配置,需要将数据存在另外的字典中
                if (config.SysIdClosePresent != 0)
                {
                    List <uint> notifySysIdList = null;
                    if (!mConfigRelation.TryGetValue(config.SysIdClosePresent, out notifySysIdList))
                    {
                        notifySysIdList = new List <uint>();
                        mConfigRelation[config.SysIdClosePresent] = notifySysIdList;
                    }

                    if (!notifySysIdList.Contains(config.Id))
                    {
                        notifySysIdList.Add(config.Id);
                    }
                }
                config.TabOrder        = DBTextResource.ParseUI_s(GetReaderString(reader, "tab_order"), 0);
                config.DropDown        = DBTextResource.ParseArrayUint(GetReaderString(reader, "drop_down"), ",");
                config.DropDownType    = DBTextResource.ParseUI(GetReaderString(reader, "drop_down_type"));
                config.UIBehavior      = DBTextResource.ParseArrayString(GetReaderString(reader, "ui_behavior"));
                config.TimeLimitStr    = GetReaderString(reader, "time_limit");
                config.CustomCondition = DBTextResource.ParseUI_s(GetReaderString(reader, "custom_condition"), 0) == 0 ? false : true;

                mConfigList.Add(config);
                mConfigMap[config.Id] = config;
            }

            mConfigList.Sort();
        }
Exemplo n.º 8
0
        /// <summary>
        /// 获取某个副本的信息
        /// </summary>
        /// <returns>The instance info.</returns>
        /// <param name="id">Identifier.</param>
        public InstanceInfo GetInstanceInfo(uint id)
        {
            InstanceInfo info = null;

            if (mInstanceInfos.TryGetValue(id, out info))
            {
                return(info);
            }

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

            if (table_reader == null)
            {
                mInstanceInfos.Add(id, null);
                return(null);
            }

            if (!table_reader.HasRows)
            {
                mInstanceInfos.Add(id, null);
                table_reader.Close();
                table_reader.Dispose();
                return(null);
            }

            if (!table_reader.Read())
            {
                mInstanceInfos.Add(id, null);
                table_reader.Close();
                table_reader.Dispose();
                return(null);
            }

            info = new InstanceInfo();
            Type gameConstType = typeof(GameConst);

            info.mId             = DBTextResource.ParseUI_s(GetReaderString(table_reader, "id"), 0);
            info.mMaxTime        = DBTextResource.ParseI(GetReaderString(table_reader, "max_time"));
            info.mNeedGoods      = DBTextResource.ParseDictionaryUintUint(GetReaderString(table_reader, "need_goods"));
            info.mDyNeedGoods    = DBTextResource.ParseArrayUintUint(GetReaderString(table_reader, "dy_need_goods"));
            info.mNeedLv         = DBTextResource.ParseUS_s(GetReaderString(table_reader, "need_lv"), 0);
            info.mLvUpLimit      = DBTextResource.ParseUS_s(GetReaderString(table_reader, "lv_up_limit"), 0);
            info.mRecommendAttrs = ParseRecommendAttrs(GetReaderString(table_reader, "recommend_attrs"));
            info.mSingleEnter    = DBTextResource.ParseI(GetReaderString(table_reader, "single_enter")) == 1 ? true : false;
            string mbCountStr = GetReaderString(table_reader, "mb_count");
            ushort mbCount    = 0;

            /* 进入人数四种要求:
             * 0:可单人,也可以任意组队(不用配)
             * 1:必须单人(可以没有队伍,也可以在只有他一个人的队伍中)
             * N(N>=2):必须N人以上组队
             * {M,N}:大于等于M且小于等于N */
            if (string.IsNullOrEmpty(mbCountStr) == true)
            {
                info.mMinMemberCount = 0;
                info.mMaxMemberCount = GameConstHelper.GetShort("GAME_TEAM_MEMBER_LIMIT");
            }
            else if (ushort.TryParse(mbCountStr, out mbCount) == true)
            {
                info.mMinMemberCount = mbCount;
                if (info.mMinMemberCount == 0)
                {
                    info.mMaxMemberCount = GameConstHelper.GetShort("GAME_TEAM_MEMBER_LIMIT");
                }
                else if (info.mMinMemberCount == 1)
                {
                    info.mMinMemberCount = 0;
                    info.mMaxMemberCount = 1;
                }
                else
                {
                    info.mMaxMemberCount = GameConstHelper.GetShort("GAME_TEAM_MEMBER_LIMIT");
                }
            }
            else
            {
                List <uint> mbCountList = DBTextResource.ParseArrayUint(mbCountStr, ",");
                if (mbCountList.Count >= 2)
                {
                    info.mMinMemberCount = (ushort)mbCountList[0];
                    info.mMaxMemberCount = (ushort)mbCountList[1];
                }
            }
            info.mSweepCosts = DBTextResource.ParseDictionaryUintUint(GetReaderString(table_reader, "sweep_costs"));
            info.mSweepLimit = DBTextResource.ParseVector2(GetReaderString(table_reader, "sweep_limit"));

            info.mName = GetReaderString(table_reader, "name");

            //System.Reflection.FieldInfo fieldInfo = null;
            //string warTypeStr = GetReaderString(table_reader, "war_type");
            //if (mGameConstUintValueCache.ContainsKey(warTypeStr) == true)
            //{
            //    info.mWarType = mGameConstUintValueCache[warTypeStr];
            //}
            //else
            //{
            //    fieldInfo = gameConstType.GetField(warTypeStr);
            //    if (fieldInfo != null)
            //    {
            //        info.mWarType = Convert.ToUInt32(fieldInfo.GetValue(null));
            //        mGameConstUintValueCache[warTypeStr] = info.mWarType;
            //    }
            //    else
            //    {
            //        GameDebug.LogError("Can not find war type " + warTypeStr + " in db instance!!!");
            //    }
            //}

            //string warsubTypeStr = GetReaderString(table_reader, "war_subtype");
            //if (string.IsNullOrEmpty(warsubTypeStr) == false)
            //{
            //    if (mGameConstUintValueCache.ContainsKey(warsubTypeStr) == true)
            //    {
            //        info.mWarSubType = mGameConstUintValueCache[warsubTypeStr];
            //    }
            //    else
            //    {
            //        fieldInfo = gameConstType.GetField(warsubTypeStr);
            //        if (fieldInfo != null)
            //        {
            //            info.mWarSubType = Convert.ToUInt32(fieldInfo.GetValue(null));
            //            mGameConstUintValueCache[warsubTypeStr] = info.mWarSubType;
            //        }
            //        else
            //        {
            //            GameDebug.LogError("Can not find sub war type " + warsubTypeStr + " in db instance!!!");
            //        }
            //    }
            //}

            uint   warType       = 0;
            uint   warSubType    = 0;
            string warTypeStr    = GetReaderString(table_reader, "war_type");
            string warSubTypeStr = GetReaderString(table_reader, "war_subtype");

            ConvertWarType(warTypeStr, warSubTypeStr, out warType, out warSubType);
            info.mWarType    = warType;
            info.mWarSubType = warSubType;

            info.mDesc = GetReaderString(table_reader, "desc");

            info.mStages.Clear();
            string        stagesStr = GetReaderString(table_reader, "stages");
            List <string> stages    = DBTextResource.ParseArrayString(stagesStr);

            for (int j = 0; j < stages.Count; j++)
            {
                if (!String.IsNullOrEmpty(stages[j]))
                {
                    info.mStages.Add(DBTextResource.ParseUI(stages[j]));
                }
            }

            info.mPKType                   = DBTextResource.ParseI(GetReaderString(table_reader, "pk_type"));
            info.mReviveTimes              = DBTextResource.ParseUS(GetReaderString(table_reader, "revive_times"));
            info.mReadyCountDown           = DBTextResource.ParseUS(GetReaderString(table_reader, "ready_count_down"));
            info.mResultCountDown          = DBTextResource.ParseUI(GetReaderString(table_reader, "result_count_down"));
            info.mIsReloadSceneWhenTheSame = DBTextResource.ParseI(GetReaderString(table_reader, "is_reload_scene_when_the_same")) == 0 ? false : true;

            info.mMinPos           = DBTextResource.ParseVector2(GetReaderString(table_reader, "mini_map_pos_x"));
            info.mMaxPos           = DBTextResource.ParseVector2(GetReaderString(table_reader, "mini_map_pos_y"));
            info.mMiniMapWidth     = info.mMaxPos.x - info.mMinPos.x;
            info.mMiniMapHeight    = info.mMaxPos.y - info.mMinPos.y;
            info.mMiniMapName      = GetReaderString(table_reader, "mini_map");
            info.mIsCanOpenMiniMap = DBTextResource.ParseI(GetReaderString(table_reader, "is_open_mini_map")) == 0 ? false : true;
            string isShowMarkStr = GetReaderString(table_reader, "is_show_mark");

            if (isShowMarkStr == string.Empty || isShowMarkStr == "0")
            {
                info.mIsShowMark = false;
            }
            else
            {
                info.mIsShowMark = true;
            }

            string isAutoFightStr = GetReaderString(table_reader, "is_auto_fight");

            if (isAutoFightStr == string.Empty || isAutoFightStr == "0")
            {
                info.mIsAutoFight = false;
            }
            else
            {
                info.mIsAutoFight = true;
            }

            string canNotRideStr = GetReaderString(table_reader, "can_not_ride");

            if (canNotRideStr == string.Empty || canNotRideStr == "0")
            {
                info.mCanNotRide = false;
            }
            else
            {
                info.mCanNotRide = true;
            }

            info.mRewardIds     = DBTextResource.ParseArrayUint(GetReaderString(table_reader, "reward_1"), ",");
            info.mShowRewardIds = DBTextResource.ParseArrayUint(GetReaderString(table_reader, "show_rewards"), ",");
            info.mNeedTaskId    = DBTextResource.ParseUI_s(GetReaderString(table_reader, "need_task_id"), 0);

            info.mPlanesInstanceId = DBTextResource.ParseUI_s(GetReaderString(table_reader, "planes_dg_id"), 0);
            info.mStartTimeline    = DBTextResource.ParseUI_s(GetReaderString(table_reader, "start_timeline"), 0);
            info.mGuardedNpcId     = DBTextResource.ParseUI_s(GetReaderString(table_reader, "npc_id"), 0);

            string showBossAssStr = GetReaderString(table_reader, "show_boss_assistant");

            if (showBossAssStr == string.Empty || showBossAssStr == "0")
            {
                info.mShowBossAssistant = false;
            }
            else
            {
                info.mShowBossAssistant = true;
            }

            info.mForbidJumpOutAnimationOut = DBTextResource.ParseUI_s(GetReaderString(table_reader, "forbid_jump_out_animation_out"), 0) == 1;
            info.mForbidWaterWaveEffect     = DBTextResource.ParseUI_s(GetReaderString(table_reader, "forbid_water_wave_effect"), 0) == 1;
            info.mIsCanSendPosition         = DBTextResource.ParseUI_s(GetReaderString(table_reader, "is_can_send_position"), 0) == 1;
            info.mMergeLevel   = DBTextResource.ParseUI_s(GetReaderString(table_reader, "merge_level"), 0);
            info.mMergeConsume = DBTextResource.ParseDictionaryUintUint(GetReaderString(table_reader, "merge_consume"));

#if UNITY_EDITOR
            if (mInstanceInfos.ContainsKey(info.mId))
            {
                GameDebug.LogError(string.Format("[{0}]表重复添加的域id[{1}]", mTableName, info.mId));

                table_reader.Close();
                table_reader.Dispose();
                return(info);
            }
#endif
            mInstanceInfos.Add(info.mId, info);

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

            return(info);
        }
Exemplo n.º 9
0
        protected override void ParseData(SqliteDataReader reader)
        {
            mMinLevelSkillDict.Clear();
            mInfos.Clear();
            mInfosByType.Clear();
            mInfosByActiveSkillId.Clear();
            //             mInfosCanSetKey.Clear();
            //             mInfosNoCanSetKey.Clear();
            mInfosBySetSlotType.Clear();
            DBSkillSlot  db_slot = DBManager.Instance.GetDB <DBSkillSlot>();
            AllSkillInfo info;

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

                        info.Id                  = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0);
                        info.SkillType           = (SKILL_TYPE)System.Enum.Parse(typeof(SKILL_TYPE), GetReaderString(reader, "type"));
                        info.Sub_id              = DBTextResource.ParseUI_s(GetReaderString(reader, "sub_id"), 0); //主动技能ID或者被动技能ID
                        info.SortId              = DBTextResource.ParseUS_s(GetReaderString(reader, "sort_id"), 0);
                        info.Name                = GetReaderString(reader, "name");                                //技能名字
                        info.Source              = GetReaderString(reader, "source");                              //技能获取途径说明
                        info.Desc                = GetReaderString(reader, "desc");                                //
                        info.Icon                = GetReaderString(reader, "icon");
                        info.ModelId             = DBTextResource.ParseUI_s(GetReaderString(reader, "model_id"), 0);
                        info.ModelAction         = GetReaderString(reader, "model_action");
                        info.Require_race        = DBTextResource.ParseUI_s(GetReaderString(reader, "require_race"), 0); //职业限制( 取值参见 EVocationType)
                        info.Skill_type_descript = GetReaderString(reader, "skill_type_descript");                       //技能标签

                        info.zhuhun_txt = GetReaderString(reader, "zhuhun_txt");                                         //铸魂额外配置文本

                        info.SetSlotType = (SET_SLOT_TYPE)DBTextResource.ParseUI_s(GetReaderString(reader, "set_slot_type"), 0);
                        if (info.SetSlotType == SET_SLOT_TYPE.None || info.SetSlotType == SET_SLOT_TYPE.MateSKill)
                        {
                            info.Can_set_key = false;            //能否装备到技能槽
                        }
                        else
                        {
                            info.Can_set_key = true;
                        }
                        info.ReplaceIds = DBTextResource.ParseArrayUint(GetReaderString(reader, "replace_ids"), ",");

                        info.Level       = DBTextResource.ParseUI_s(GetReaderString(reader, "level"), 0);
                        info.ShowInPanel = DBTextResource.ParseUI_s(GetReaderString(reader, "show_in_panel"), 1) == 1;
                        info.LevelNotice = GetReaderString(reader, "level_notice");
                        info.FixedKeyPos = DBTextResource.ParseUI_s(GetReaderString(reader, "fixed_key_pos"), 0);
                        info.OpenHole    = DBTextResource.ParseUI_s(GetReaderString(reader, "open_hole"), 0);

                        string raw = GetReaderString(reader, "stop_hook_when_gain");
                        if (string.IsNullOrEmpty(raw) == true || raw.Equals("0") == true)
                        {
                            info.StopHookWhenGain = false;
                        }
                        else
                        {
                            info.StopHookWhenGain = true;
                        }

                        info.Attrs = DBTextResource.ParseArrayUintUint(GetReaderString(reader, "attrs"));

                        mInfos.Add(info.Id, info);

                        if (mInfosByType.ContainsKey(info.SkillType) == false)
                        {
                            mInfosByType.Add(info.SkillType, new Dictionary <uint, List <AllSkillInfo> >());
                        }
                        if (mInfosByType[info.SkillType].ContainsKey(info.Require_race) == false)
                        {
                            mInfosByType[info.SkillType].Add(info.Require_race, new List <AllSkillInfo>());
                        }
                        mInfosByType[info.SkillType][info.Require_race].Add(info);

                        if (info.SkillType == SKILL_TYPE.Active)
                        {
                            mInfosByActiveSkillId[info.Sub_id] = info;
                            if (mInfosBySetSlotType.ContainsKey(info.Require_race) == false)
                            {
                                mInfosBySetSlotType.Add(info.Require_race, new OneVocationActiveSkillInfos(info.Require_race));
                            }
                            mInfosBySetSlotType[info.Require_race].AddSkillInfo(info);
                            db_slot.AddSlotDefaultSkillId(info.Require_race, info.OpenHole, info.Id);
                        }

                        if (info.Level == 1)
                        {//首先只记录等级为1
                            mMinLevelSkillDict.Add(info.Id, new List <DBDataAllSkill.AllSkillInfo>());
                            mMinLevelSkillDict[info.Id].Add(info);
                        }
                    }
                }
            }

            foreach (var item in mInfos)
            {
                if (item.Value.Level > 1 && item.Value.ReplaceIds != null &&
                    item.Value.ReplaceIds.Count > 0)
                {//检测所有大于等级1的技能
                    for (int index = 0; index < item.Value.ReplaceIds.Count; ++index)
                    {
                        uint skill_id = item.Value.ReplaceIds[index];
                        List <DBDataAllSkill.AllSkillInfo> find_info_array = null;
                        if (mMinLevelSkillDict.TryGetValue(skill_id, out find_info_array))
                        {                                               //插入等级为1的技能列表中去
                            item.Value.MinLevelTotalSkillId = skill_id; //设定等级为1的技能ID
                            find_info_array.Add(item.Value);
                        }
                    }
                }
            }

            //等级排序
            foreach (var item in mMinLevelSkillDict)
            {
                item.Value.Sort((a, b) =>
                {
                    if (a.Level < b.Level)
                    {
                        return(-1);
                    }
                    else if (a.Level > b.Level)
                    {
                        return(1);
                    }
                    return(0);
                });
                for (int index = 0; index < item.Value.Count; ++index)
                {
                    if (index == item.Value.Count - 1)
                    {
                        item.Value[index].NextLevelSkillTmpl = null;
                    }
                    else
                    {
                        item.Value[index].NextLevelSkillTmpl = item.Value[index + 1];
                    }
                }
            }

            foreach (var item in mInfosByType)
            {
                if (item.Value.ContainsKey(CommonVocationType))
                {
                    foreach (var item2 in item.Value)
                    {
                        if (item2.Key != CommonVocationType && item2.Key != PetVocationType)
                        {
                            item2.Value.AddRange(item.Value[CommonVocationType]);
                        }
                    }
                }
            }

            if (mInfosBySetSlotType.ContainsKey(CommonVocationType))
            {
                foreach (var item in mInfosBySetSlotType)
                {
                    if (item.Key == PetVocationType)
                    {
                        continue;
                    }
                    if (item.Key == CommonVocationType)
                    {
                        continue;
                    }
                    foreach (var copy_item in mInfosBySetSlotType[CommonVocationType].mSkills)
                    {
                        if (item.Value.mSkills.ContainsKey(copy_item.Key) == false)
                        {
                            item.Value.mSkills.Add(copy_item.Key, new List <AllSkillInfo>());
                        }
                        item.Value.mSkills[copy_item.Key].AddRange(copy_item.Value);
                    }
                }
            }
        }
Exemplo n.º 10
0
        public GoodsInfo GetGoodsInfo(uint gid)
        {
            GoodsInfo goods_info = null;

            if (mGoodsInfos.TryGetValue(gid, out goods_info))
            {
                return(goods_info);
            }

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

            if (reader == null)
            {
                GameDebug.LogError("Can not find goods info by gid " + gid + ", reader is null!!!");

                mGoodsInfos[gid] = null;
                return(null);
            }

            if (!reader.HasRows || !reader.Read())
            {
                GameDebug.LogError("Can not find goods info by gid " + gid);

                mGoodsInfos[gid] = null;

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

            goods_info            = new GoodsInfo();
            goods_info.name       = GetReaderString(reader, "name");
            goods_info.sort_id    = DBTextResource.ParseUI_s(GetReaderString(reader, "sort_id"), 0);
            goods_info.sort_top   = DBTextResource.ParseUI_s(GetReaderString(reader, "sort_top"), 0);
            goods_info.type       = DBTextResource.ParseBT_s(GetReaderString(reader, "type"), 0);
            goods_info.sub_type   = DBTextResource.ParseUS_s(GetReaderString(reader, "sub_type"), 0);
            goods_info.color_type = DBTextResource.ParseBT_s(GetReaderString(reader, "color_type"), 0);
            goods_info.max_stack  = DBTextResource.ParseUS_s(GetReaderString(reader, "max_stack"), 1);
            goods_info.effect     = GetReaderString(reader, "effect");
            var arg = GetReaderString(reader, "arg");

            if (!string.IsNullOrEmpty(arg))
            {
                goods_info.arg = arg.Replace(" ", "");
            }
            else
            {
                goods_info.arg = "";
            }
            goods_info.client_use          = DBTextResource.ParseBT_s(GetReaderString(reader, "client_use"), 0);
            goods_info.cd_id               = DBTextResource.ParseUI_s(GetReaderString(reader, "cd_id"), 0);
            goods_info.use_cd              = DBTextResource.ParseUS_s(GetReaderString(reader, "use_cd"), 0);
            goods_info.use_lv              = DBTextResource.ParseUI_s(GetReaderString(reader, "use_lv"), 0);
            goods_info.use_job             = DBTextResource.ParseBT_s(GetReaderString(reader, "use_job"), 0);
            goods_info.use_transfer        = DBTextResource.ParseBT_s(GetReaderString(reader, "use_transfer"), 0);
            goods_info.need_count          = DBTextResource.ParseBT_s(GetReaderString(reader, "need_count"), 0);
            goods_info.guild_wpoint        = DBTextResource.ParseUI_s(GetReaderString(reader, "guild_wpoint"), 0);
            goods_info.sell_price          = DBTextResource.ParseUI_s(GetReaderString(reader, "sell_price"), 0);
            goods_info.expire_time         = DBTextResource.ParseUI_s(GetReaderString(reader, "expire_time"), 0);
            goods_info.mktype_1            = DBTextResource.ParseBT_s(GetReaderString(reader, "mktype_1"), 0);
            goods_info.mktype_2            = DBTextResource.ParseBT_s(GetReaderString(reader, "mktype_2"), 0);
            goods_info.bind                = DBTextResource.ParseBT_s(GetReaderString(reader, "bind"), 1);
            goods_info.price_recommend     = (uint)(GetReaderFloat(reader, "price_recommend"));
            goods_info.price_lower_limit   = GetReaderFloat(reader, "price_lower_limit");
            goods_info.price_upper_limit   = GetReaderFloat(reader, "price_upper_limit");
            goods_info.desc                = GetReaderString(reader, "desc");
            goods_info.gain_text           = GetReaderString(reader, "gain_text");
            goods_info.gain_from           = GetReaderString(reader, "gain_from");
            goods_info.icon_id             = DBTextResource.ParseUI_s(GetReaderString(reader, "icon_id"), 0);
            goods_info.is_show             = DBTextResource.ParseBT_s(GetReaderString(reader, "is_show"), 0);
            goods_info.is_quick            = DBTextResource.ParseBT_s(GetReaderString(reader, "is_quick"), 0);
            goods_info.is_confirmation     = DBTextResource.ParseBT_s(GetReaderString(reader, "is_confirmation"), 0);
            goods_info.sys_id              = DBTextResource.ParseUI_s(GetReaderString(reader, "sys_id"), 0);
            goods_info.is_mutil_use        = DBTextResource.ParseBT_s(GetReaderString(reader, "is_mutil_use"), 0);
            goods_info.daily_use_limit     = DBTextResource.ParseUS_s(GetReaderString(reader, "daily_use_limit"), 0);
            goods_info.is_display_goods    = DBTextResource.ParseBT_s(GetReaderString(reader, "is_display_goods"), 0);
            goods_info.wing_exp            = DBTextResource.ParseUI_s(GetReaderString(reader, "wing_exp"), 0);
            goods_info.show_step           = DBTextResource.ParseUI_s(GetReaderString(reader, "show_step"), 0);
            goods_info.is_precious         = DBTextResource.ParseUI_s(GetReaderString(reader, "is_precious"), 0);
            goods_info.discount            = DBTextResource.ParseUI_s(GetReaderString(reader, "discount"), 0);
            goods_info.overdue_notice_time = DBTextResource.ParseUI_s(GetReaderString(reader, "overdue_notice_time"), 0);

            mGoodsInfos[gid] = goods_info;

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

            return(goods_info);
        }
Exemplo n.º 11
0
        /// <summary>
        /// 获取表格中的技能数据
        /// </summary>
        public SkillInfoSev GetSkillInfo(uint skill_id)
        {
            SkillInfoSev skill_info = null;

            if (!mSkillInfoMap.TryGetValue(skill_id, out skill_info))
            {
                string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", "data_skill", "id", skill_id);

                var table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, "data_skill", query_str);
                if (table_reader == null)
                {
                    mSkillInfoMap[skill_id] = null;
                    return(null);
                }

                if (!table_reader.HasRows || !table_reader.Read())
                {
                    mSkillInfoMap[skill_id] = null;
                    table_reader.Close();
                    table_reader.Dispose();
                    return(null);
                }

                skill_info = new SkillInfoSev();

                skill_info.Id             = DBTextResource.ParseUI(GetReaderString(table_reader, "id"));
                skill_info.IsPg           = DBTextResource.ParseUS_s(GetReaderString(table_reader, "is_pg"), 0) == 1;
                skill_info.FindTargetType = DBTextResource.ParseUS_s(GetReaderString(table_reader, "find_target"), 1);
                skill_info.FindTarget     = skill_info.FindTargetType != 0;
                skill_info.TargetLimit    = GetReaderString(table_reader, "target_limit");
                skill_info.IsTrigger      = GetReaderString(table_reader, "action_type") != "active";
                skill_info.CDTime         = DBTextResource.ParseUI_s(GetReaderString(table_reader, "cd"), 0);
                skill_info.Range          = DBTextResource.ParseUI_s(GetReaderString(table_reader, "range"), 0) * 0.01f - 0.5f; // 因为服务端减少了容错,攻击范围变得更小了,所以这里减0.5
                skill_info.Range          = Mathf.Max(0f, skill_info.Range);
                skill_info.MpCost         = DBTextResource.ParseI_s(GetReaderString(table_reader, "cost"), 0);
                skill_info.Target         = GetReaderString(table_reader, "target");

                skill_info.ForwardSpeed = (float)DBTextResource.ParseI_s(GetReaderString(table_reader, "forward_move_speed"), 0) * 0.01f;
                skill_info.ForwardTime  = (float)DBTextResource.ParseI_s(GetReaderString(table_reader, "forward_move_time"), 0) * GlobalConst.MilliToSecond;
                skill_info.MaxSingTime  = (float)DBTextResource.ParseI_s(GetReaderString(table_reader, "max_sing_time"), 0) * GlobalConst.MilliToSecond;
                skill_info.CastingSpeed = (float)DBTextResource.ParseI_s(GetReaderString(table_reader, "casting_move_speed"), 0) * 0.01f;
                skill_info.CastingTime  = (float)DBTextResource.ParseI_s(GetReaderString(table_reader, "casting_move_time"), 0) * GlobalConst.MilliToSecond;
                skill_info.BulletId     = DBTextResource.ParseUI_s(GetReaderString(table_reader, "bullet_id"), 0);

                skill_info.ParentSkillId           = DBTextResource.ParseUI_s(GetReaderString(table_reader, "parent_skill"), 0);
                skill_info.ChildSkillId            = DBTextResource.ParseUI_s(GetReaderString(table_reader, "child_skill"), 0);
                skill_info.AnimationName           = GetReaderString(table_reader, "skill_ani");
                skill_info.Sound                   = GetReaderString(table_reader, "skill_sound");
                skill_info.CastingReadyName        = GetReaderString(table_reader, "skill_sing_ani");
                skill_info.CastingAnimationName    = GetReaderString(table_reader, "skill_casting_ani");
                skill_info.CastingEndAnimationName = GetReaderString(table_reader, "skill_casting_end_ani");
                skill_info.RigidityTime            = DBTextResource.ParseUS_s(GetReaderString(table_reader, "rigidity_time"), 0) * GlobalConst.MilliToSecond;
                skill_info.CacheTime               = DBTextResource.ParseUS_s(GetReaderString(table_reader, "cache_time"), 0) * GlobalConst.MilliToSecond;
                skill_info.SkillAnnounce           = GetReaderString(table_reader, "skill_announce");

                skill_info.CostFury       = DBTextResource.ParseUI_s(GetReaderString(table_reader, "cost_fury"), 0);
                skill_info.GenFury        = DBTextResource.ParseUI_s(GetReaderString(table_reader, "gen_fury"), 0);
                skill_info.IsFalseHitBack = DBTextResource.ParseUS_s(GetReaderString(table_reader, "isFalseHitBack"), 0) == 1;

                skill_info.UiEffectIconList  = DBTextResource.ParseArrayString(GetReaderString(table_reader, "ui_effect_icon_list"), ",", true);
                skill_info.UiEffectSoundName = GetReaderString(table_reader, "ui_effect_sound");

                string[] ratios = TextHelper.GetTupleFromString(GetReaderString(table_reader, "multi_hit_ratio"));
                if (ratios != null)
                {
                    skill_info.MultiHitRatios = new List <float>();
                    for (int j = 0; j < ratios.Length; ++j)
                    {
                        float ratio = DBTextResource.ParseF(ratios[j]);
                        skill_info.MultiHitRatios.Add(ratio);
                    }
                }

                string[] delays = TextHelper.GetTupleFromString(GetReaderString(table_reader, "multi_hit_delay"));
                if (delays != null)
                {
                    skill_info.MultiHitDelayTimes = new List <float>();
                    for (int j = 0; j < delays.Length; ++j)
                    {
                        float delay = DBTextResource.ParseF(delays[j]);
                        skill_info.MultiHitDelayTimes.Add(delay);
                    }
                }

                if (skill_info.MultiHitDelayTimes != null && skill_info.MultiHitDelayTimes.Count != skill_info.MultiHitRatios.Count)
                {
                    string log = string.Format("SkillId: {0} 多段伤害系数与延迟时间不匹配", skill_info.Id);
                    Debug.LogError(log);
                }

                string[] effects = TextHelper.GetTupleFromString(GetReaderString(table_reader, "effects"));

                // 先把table_reader关闭,因为在GetBattleFxInfo和GetSkillEffectInfo中需要获取新的Reader
                table_reader.Close();
                table_reader.Dispose();

                // 获取技能特效参数
                DBBattleFx.BattleFxInfo battleInfo = DBBattleFx.Instance.GetBattleFxInfo(skill_info.Id);
                if (battleInfo != null)
                {
                    skill_info.BattleFxInfo = battleInfo;
                }
                else
                {
                    if (skill_info.IsTrigger == false)// 非触发类型的技能才需要战斗效果信息
                    {
                        GameDebug.LogError(string.Format("Skill: {0}没有对应的战斗效果信息", skill_info.Id));
                    }
                }

                // 追踪目标类型的子弹(依赖于battleInfo,所以要放在battleInfo数据读取之后)
                if (skill_info.BulletId != 0 && skill_info.IsTrigger == false)
                {
                    DBBulletTrace.BulletInfo bulletInfo = DBBulletTrace.GetInstance().GetBulletInfo(skill_info.BulletId);
                    if (bulletInfo != null)
                    {
                        skill_info.BulletTrace = new BulletTrackInstance(bulletInfo, skill_info);
                    }
                }

                // 获取技能效果参数
                if (effects != null)
                {
                    for (int j = 0; j < effects.Length; ++j)
                    {
                        uint effectId    = DBTextResource.ParseUI(effects[j]);
                        var  effect_info = DBSkillEffect.GetInstance().GetSkillEffectInfo(effectId);
                        if (effect_info == null)
                        {
                            string log = string.Format("SkillId: {0} 对应的技能效果Id: {1} 错误", skill_info.Id, effectId);
                            Debug.LogError(log);
                        }
                        else
                        {
                            if (effect_info.type == "charge" || effect_info.type == "teleport")// 冲锋、瞬移技能的移动速度参数放在效果表中配置
                            {
                                skill_info.CastingSpeed = effect_info.p1 * GlobalConst.UnitScale;
                                if (effect_info.type == "teleport")
                                {
                                    skill_info.Invisible = true;
                                }
                            }
                        }
                    }
                }

                mSkillInfoMap[skill_info.Id] = skill_info;
            }

            return(skill_info);
        }
Exemplo n.º 12
0
        /// <summary>
        /// 读取指定窗口的配置
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private UIInfo GetUIInfo(string name)
        {
            string queryStr = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "name", name);

            var reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, queryStr);

            if (reader == null)
            {
                return(null);
            }

            if (!reader.HasRows || !reader.Read())
            {
                reader.Close();
                reader.Dispose();
                return(null);
            }

            UIInfo info = new UIInfo();

            info.name              = name;
            info.support_back      = DBTextResource.ParseBT_s(GetReaderString(reader, "support_back"), 0) == 1;
            info.is_modal          = DBTextResource.ParseBT_s(GetReaderString(reader, "is_modal"), 0) == 1;
            info.ui_type           = DBTextResource.ParseBT_s(GetReaderString(reader, "ui_type"), 0);
            info.is_global         = DBTextResource.ParseBT_s(GetReaderString(reader, "is_global"), 0) == 1;
            info.sub_panels        = GetReaderString(reader, "sub_panels");
            info.init_open_panels  = GetReaderString(reader, "init_open_panels");
            info.sub_canvas_lenght = DBTextResource.ParseBT_s(GetReaderString(reader, "sub_canvas_lenght"), 0);
            info.lua_path          = GetReaderString(reader, "lua_path");

            var    delay_time_text = GetReaderString(reader, "destroy_delay_time");
            ushort delay_time      = 0;

            if (string.IsNullOrEmpty(delay_time_text))
            {
                if (SystemInfo.systemMemorySize <= 1024)
                {
                    delay_time = 10;
                }
                else
                {
                    delay_time = 20;
                }
            }
            else
            {
                delay_time = DBTextResource.ParseUS_s(delay_time_text, 10);
            }
            info.destroy_delay_time = delay_time;

            info.static_layer_index = DBTextResource.ParseS_s(GetReaderString(reader, "static_layer_index"), -1);
            info.reconnect_handle   = DBTextResource.ParseBT_s(GetReaderString(reader, "reconnect_handle"), 0);
            info.return_handle      = DBTextResource.ParseBT_s(GetReaderString(reader, "return_handle"), 0);
            info.stay_when_switch_plane_instance = DBTextResource.ParseBT_s(GetReaderString(reader, "stay_when_switch_plane_instance"), 0) == 1;
            info.close_wins_type_when_show       = DBTextResource.ParseBT_s(GetReaderString(reader, "close_wins_type_when_show"), 0);
            info.ban_back_last_panel             = DBTextResource.ParseBT_s(GetReaderString(reader, "ban_back_last_panel"), 0) == 1;
            info.ban_sub_window_when_back        = DBTextResource.ParseBT_s(GetReaderString(reader, "ban_sub_window_when_back"), 0) == 1;
            info.reopen   = DBTextResource.ParseBT_s(GetReaderString(reader, "reopen"), 0) == 1;
            info.patch_id = DBTextResource.ParseBT_s(GetReaderString(reader, "patch_id"), 0);

            mData[info.name] = info;

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

            return(info);
        }