コード例 #1
0
ファイル: DBActor.cs プロジェクト: wuhuolong/MaxBooks
        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;
        }