예제 #1
0
        public DBMagicEquipItem GetData(uint gid)
        {
            DBMagicEquipItem ad = null;

            if (!data.TryGetValue(gid, out ad))
            {
                ad = GetItemInfo(gid);
            }

            return(ad);
        }
예제 #2
0
        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);
        }