Esempio n. 1
0
        /// <summary>
        /// 创建任务
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="taskId">任务配置ID</param>
        /// <param name="triggerModeList">任务触发条件参数</param>
        /// <param name="completedModeList">任务完成条件参数</param>
        /// <param name="rewardModeList">任务奖励条件参数</param>
        /// <param name="taskType"></param>
        /// <returns></returns>
        public T CreateTask <T>(long taskId, List <TaskCreaterParams> triggerModeList, List <TaskCreaterParams> completedModeList, List <TaskCreaterParams> rewardModeList, int taskType = 1) where T : TaskBase
        {
            Type taskImplType;

            if (this.m_taskImplDict.TryGetValue(taskType, out taskImplType))
            {
                T taskImpl = Activator.CreateInstance(taskImplType, taskId) as T;

                for (int i = 0; i < triggerModeList.Count; ++i)
                {
                    TaskTriggerMode triggerMode = (TaskTriggerMode)triggerModeList[i].Condition;

                    Type triggerImplType;
                    if (this.m_taskTriggerConditionDict.TryGetValue(triggerMode, out triggerImplType))
                    {
                        TaskTriggerCondition triggerImpl = Activator.CreateInstance(triggerImplType, triggerModeList[i].Data) as TaskTriggerCondition;

                        taskImpl.AddTaskTriggerCondition(triggerImpl);
                    }
                    else
                    {
                        throw new Exception("trigger mode :" + triggerMode + " not implement");
                    }
                }

                for (int i = 0; i < completedModeList.Count; ++i)
                {
                    TaskCompleteMode completeMode = (TaskCompleteMode)completedModeList[i].Condition;

                    Type triggerCompleteImplType;
                    if (this.m_taskCompleteDict.TryGetValue(completeMode, out triggerCompleteImplType))
                    {
                        TaskCompleteCondition completeTaskConditionImpl = Activator.CreateInstance(triggerCompleteImplType, completedModeList[i].Data) as TaskCompleteCondition;

                        taskImpl.AddTaskCompleteCondition(completeTaskConditionImpl);
                    }
                    else
                    {
                        throw new Exception("completed mode :" + completeMode + " not implement");
                    }
                }

                for (int i = 0; i < rewardModeList.Count; ++i)
                {
                    TaskRewardMode rewardMode = (TaskRewardMode)rewardModeList[i].Condition;

                    Type rewardImpl;
                    if (this.m_taskRewardDict.TryGetValue(rewardMode, out rewardImpl))
                    {
                        TaskRewardBase taskRewardImpl = Activator.CreateInstance(rewardImpl, rewardModeList[i].Data) as TaskRewardBase;

                        taskImpl.AddTaskRewardInfo(taskRewardImpl);
                    }
                    else
                    {
                        throw new Exception("reward mode :" + rewardMode + " not implement");
                    }
                }

                return(taskImpl);
            }

            return(null);
        }
 public TaskTriggerAttribute(TaskTriggerMode triggerMode)
 {
     this.m_taskTriggerMode = triggerMode;
 }