コード例 #1
0
        /// <summary>
        /// 获取奖励item列表
        /// </summary>
        /// <returns>The reward item list.</returns>
        /// <param name="rewardId">Reward identifier.</param>
        public List <RewardInfo> GetRewardItemList(uint rewardId)
        {
            List <RewardInfo> rewardList = new List <RewardInfo>();

            rewardList.Clear();
            if (mRewardInfosList == null)
            {
                mRewardInfosList = new Dictionary <uint, List <RewardInfo> >();
                mRewardInfosList.Clear();
            }
            if (mRewardInfosList.ContainsKey(rewardId) == true)
            {
                foreach (RewardInfo rewardInfo in mRewardInfosList[rewardId])
                {
                    rewardList.Add(rewardInfo);
                }
            }
            else
            {
                List <RewardInfo> rewardInfos = new List <RewardInfo>();
                rewardInfos.Clear();

                //string queryStr = string.Format("SELECT * FROM {0} WHERE {0}.{1} LIKE \"{2}__\"", "reward", "item_id", rewardId);
                //List<Dictionary<string, string>> rows = DBManager.Instance.QuerySqliteRow<string>(GlobalConfig.DBFile, queryStr, true);
                List <Dictionary <string, string> > rows = DBManager.Instance.QuerySqliteRow <string>(GlobalConfig.DBFile, "reward", "cid", rewardId.ToString());
                if (rows.Count > 0)
                {
                    foreach (Dictionary <string, string> row in rows)
                    {
                        RewardInfo rewardInfo = new RewardInfo();

                        string raw = string.Empty;
                        row.TryGetValue("item_id", out raw);
                        uint itemId = DBTextResource.ParseUI_s(raw, 0);
                        rewardInfo.mItemID = itemId;

                        row.TryGetValue("gid", out raw);
                        uint gid = DBTextResource.ParseUI_s(raw, 0);
                        rewardInfo.mGID = gid;

                        row.TryGetValue("num", out raw);
                        long num = 0;
                        if (long.TryParse(raw, out num) == false)
                        {
                            List <long> nums = DBTextResource.ParseArrayLong(raw, ",");
                            if (nums.Count > 0)
                            {
                                rewardInfo.mFixedNum = nums[0];
                                rewardInfo.mNum      = nums[0];
                            }
                            else
                            {
                                rewardInfo.mFixedNum = num;
                                rewardInfo.mNum      = num;
                            }
                        }
                        else
                        {
                            rewardInfo.mFixedNum = num;
                            rewardInfo.mNum      = num;
                        }

                        row.TryGetValue("race", out raw);
                        byte race = DBTextResource.ParseBT_s(raw, 0);
                        rewardInfo.mVocation = race;

                        row.TryGetValue("is_lv_eff", out raw);
                        byte isLvEff = DBTextResource.ParseBT_s(raw, 0);
                        rewardInfo.mEffectByLevel = isLvEff;

                        row.TryGetValue("lv_limit", out raw);
                        rewardInfo.mLvLimit = DBTextResource.ParseArrayUint(raw, ",");

                        row.TryGetValue("is_bind", out raw);
                        rewardInfo.mIsBind = DBTextResource.ParseUI_s(raw, 0);

                        row.TryGetValue("sys_open", out raw);
                        rewardInfo.mOpenSysId = DBTextResource.ParseUI_s(raw, 0);

                        row.TryGetValue("show_color_effect2", out raw);
                        if (string.IsNullOrEmpty(raw) == true || raw.Equals("0") == true)
                        {
                            rewardInfo.mShowColorEffect2 = false;
                        }
                        else
                        {
                            rewardInfo.mShowColorEffect2 = true;
                        }

                        rewardInfos.Add(rewardInfo);
                    }
                }

                foreach (RewardInfo rewardInfo in rewardInfos)
                {
                    rewardList.Add(rewardInfo);
                }
                mRewardInfosList.Add(rewardId, rewardInfos);
            }

            // 删除不是本职业的奖励
            for (int i = rewardList.Count - 1; i >= 0; i--)
            {
                if (rewardList[i].mVocation != 0 && (uint)rewardList[i].mVocation != LocalPlayerManager.Instance.LocalActorAttribute.Vocation)
                {
                    rewardList.Remove(rewardList[i]);
                }
            }

            if (rewardList == null)
            {
                rewardList = new List <RewardInfo>();
                rewardList.Clear();
            }
            return(rewardList);
        }