private static bool ConvertToSTReward(mw.RewardConfig config, out List <STRewardInfo> rewards)
        {
            rewards = new List <STRewardInfo>();

            if (config.reward_type_1 != 0)
            {
                STRewardInfo rd = new STRewardInfo();
                rd.type     = (int)config.reward_idx_1;
                rd.typename = GetRewardTypeName(rd.type);
                rd.item     = config.reward_type_1;
                rd.itemname = GetItemName(rd.type, rd.item);
                rd.count    = config.reward_count_1;
                rewards.Add(rd);
            }

            if (config.reward_type_2 != 0)
            {
                STRewardInfo rd = new STRewardInfo();
                rd.type     = (int)config.reward_idx_2;
                rd.typename = GetRewardTypeName(rd.type);
                rd.item     = config.reward_type_2;
                rd.itemname = GetItemName(rd.type, rd.item);
                rd.count    = config.reward_count_2;
                rewards.Add(rd);
            }

            if (config.reward_type_3 != 0)
            {
                STRewardInfo rd = new STRewardInfo();
                rd.type     = (int)config.reward_idx_3;
                rd.typename = GetRewardTypeName(rd.type);
                rd.item     = config.reward_type_3;
                rd.itemname = GetItemName(rd.type, rd.item);
                rd.count    = config.reward_count_3;
                rewards.Add(rd);
            }

            if (config.reward_type_4 != 0)
            {
                STRewardInfo rd = new STRewardInfo();
                rd.type     = (int)config.reward_idx_4;
                rd.typename = GetRewardTypeName(rd.type);
                rd.item     = config.reward_type_4;
                rd.itemname = GetItemName(rd.type, rd.item);
                rd.count    = config.reward_count_4;
                rewards.Add(rd);
            }

            return(true);
        }
        public static mw.RewardConfig GetNewConfigReward()
        {
            if (spareRewardIds.Count == 0)
            {
                CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_REWARD_ID_MAX);
                return(null);
            }

            mw.RewardConfig config = new mw.RewardConfig();
            config.id = spareRewardIds.First();

            AddRewardNode(config);

            return(config);
        }
        public static bool RemoveRewardNode(int id)
        {
            mw.RewardConfig config = null;
            tableReward.TryGetValue(id, out config);
            if (null == config)
            {
                return(false);
            }

            tableReward.Remove(id);
            spareRewardIds.Add(id);
            config    = null;
            m_isDirty = true;
            return(true);
        }
        public static void AddRewardNode(mw.RewardConfig val)
        {
            if (tableReward.ContainsKey(val.id))
            {
                tableReward[val.id] = val;
            }
            else
            {
                tableReward.Add(val.id, val);
            }

            if (val.id >= MinRewardID && val.id <= MaxRewardID)
            {
                spareRewardIds.Remove(val.id);
            }
            m_isDirty = true;
        }
        private static STQuestInfo ConvertToSTQuest(mw.AchieveConfig config)
        {
            STQuestInfo quest = new STQuestInfo();

            quest.type        = (int)config.type;
            quest.typename    = GetQuestTypeName(quest.type);
            quest.desc        = TextManager.GetText(config.desc);
            quest.overlap     = (config.taskFlag == 1);
            quest.request     = config.opt_type_1;
            quest.requestname = GetRequestName(quest.request);
            quest.count_a     = config.opt_val_1_a;
            quest.count_b     = config.opt_val_1_b;
            quest.count_c     = config.opt_val_1_c;

            mw.RewardConfig configReward = GMTActivityMananger.GetRewardConfigsById(config.reward);
            if (null != configReward)
            {
                ConvertToSTReward(configReward, out quest.rewards);
            }

            return(quest);
        }
        private static bool MakeRewardConfigWithRewardInfos(List <STRewardInfo> listRewards, out mw.RewardConfig configReward)
        {
            configReward = GMTActivityMananger.GetNewConfigReward();
            if (null == configReward)
            {
                CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_REWARD_ID_MAX);
                return(false);
            }

            // 最大4个 不然客户端排版会出问题
            for (int i = 0; i < listRewards.Count; i++)
            {
                if (listRewards[i].count > 9999)
                {
                    CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_REWARD_ITEM_COUNT);
                    return(false);
                }

                if (i == 0)
                {
                    configReward.reward_idx_1   = (mw.Enums.RewardType)listRewards[0].type;
                    configReward.reward_type_1  = listRewards[0].item;
                    configReward.reward_count_1 = listRewards[0].count;
                    configReward.max_rand_1     = 10000;
                    configReward.min_rand_1     = 1;
                }
                else if (i == 1)
                {
                    configReward.reward_idx_2   = (mw.Enums.RewardType)listRewards[1].type;
                    configReward.reward_type_2  = listRewards[1].item;
                    configReward.reward_count_2 = listRewards[1].count;
                    configReward.max_rand_2     = 10000;
                    configReward.min_rand_2     = 1;
                }
                else if (i == 2)
                {
                    configReward.reward_idx_3   = (mw.Enums.RewardType)listRewards[2].type;
                    configReward.reward_type_3  = listRewards[2].item;
                    configReward.reward_count_3 = listRewards[2].count;
                    configReward.max_rand_3     = 10000;
                    configReward.min_rand_3     = 1;
                }
                else if (i == 3)
                {
                    configReward.reward_idx_4   = (mw.Enums.RewardType)listRewards[3].type;
                    configReward.reward_type_4  = listRewards[3].item;
                    configReward.reward_count_4 = listRewards[3].count;
                    configReward.max_rand_4     = 10000;
                    configReward.min_rand_4     = 1;
                }
            }

            return(true);
        }
        private static bool DoAddQuest(int activiytId, List <STQuestInfo> quests, ref List <mw.AchieveConfig> listAchieve, ref List <mw.RewardConfig> listReward)
        {
            for (int i = 0; i < quests.Count; ++i)
            {
                mw.Enums.TaskType taskType      = (mw.Enums.TaskType)quests[i].type;
                mw.AchieveConfig  configAchieve = GMTActivityMananger.GetNewConfigAchieve(taskType);
                if (null == configAchieve)
                {
                    return(false);
                }

                configAchieve.activity    = activiytId;
                configAchieve.taskFlag    = (quests[i].overlap) ? 1 : 0;
                configAchieve.opt_type_1  = quests[i].type;
                configAchieve.opt_val_1_a = quests[i].count_a;
                configAchieve.opt_val_1_b = quests[i].count_b;
                configAchieve.opt_val_1_c = quests[i].count_c;

                if (quests[i].count_a < 1 || quests[i].count_a > 9999 ||
                    quests[i].count_b < 0 || quests[i].count_b > 9999 ||
                    quests[i].count_c < 0 || quests[i].count_c > 9999
                    )
                {
                    CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_ACHIEVE_REQUEST_COUNT);
                    return(false);
                }

                if (quests[i].rewards.Count == 0 ||
                    quests[i].rewards.Count > 4)
                {
                    CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_REWARD_COUNT);
                    return(false);
                }

                mw.RewardConfig configReward = null;
                bool            ret          = MakeRewardConfigWithRewardInfos(quests[i].rewards, out configReward);
                if (null != configReward)
                {
                    listReward.Add(configReward);
                }

                if (!ret)
                {
                    return(false);
                }

                configAchieve.reward = configReward.id;

                int taskDescTextId = 0;
                if (!string.IsNullOrEmpty(quests[i].desc))
                {
                    taskDescTextId = TextManager.CreateText();
                    TextManager.SetText(taskDescTextId, quests[i].desc);
                }

                // 这里贼乱, name 是活动标题, txt是活动内容, desc 是活动任务描述
                configAchieve.desc = taskDescTextId;

                listAchieve.Add(configAchieve);
            }

            return(true);
        }
 public static mw.RewardConfig GetRewardConfigsById(int id)
 {
     mw.RewardConfig config = null;
     tableReward.TryGetValue(id, out config);
     return(config);
 }