public override void Execute()
        {
            TalkPanelView talkPanel = MYXZUIManager.Instance.GetPanel(UIPanelType.TalkPanel) as TalkPanelView;

            List <string> taskIds;

            TaskInfoService.CheckTaskFinsh(ID);

            if (TaskInfoService.IsInTaskOfNpc(ID, out taskIds))                     //如果Player正在执行此NPC的任务
            {
                talkPanel.CurrentTalks = MYXZGameDataManager.Instance.GetTaskById(taskIds[0]).InTaskTalk;
                talkPanel.IsTaskTalk   = false;
            }
            else if ((taskIds = TaskInfoService.GetAcceptableTasksInNpc(ID)).Count >= 1) //如果此NPC当前有可以接取的任务
            {
                talkPanel.CurrentTalks =
                    MYXZGameDataManager.Instance.GetTaskById(taskIds[0]).TakeTaskTalk; //给出此NPC可以被接受的第一个任务TakeTaskTalk
                talkPanel.CurrentTask = taskIds[0];
                talkPanel.IsTaskTalk  = true;                                          //这是一个接取任务的对话
            }
            else                                                                       //如果没有可接的任务和正在进行的任务,说明是一个平常对话
            {
                talkPanel.CurrentTalks = MYXZGameDataManager.Instance.GetNpcInfoById(ID).Talks;
                talkPanel.IsTaskTalk   = false;
            }
            PushPanelSignal.Dispatch(UIPanelType.TalkPanel);                        //弹出对话面板
        }
Esempio n. 2
0
 /// <summary>
 /// 接受任务
 /// </summary>
 private void GetTask()
 {
     TaskInfoService.PlayerGetNewTask(CurrentTaskId); //向玩家的InfoModel中添加此任务
     MYXZUIManager.Instance.PopPanel();               //关闭MessageBoxPanel
     MYXZUIManager.Instance.PopPanel();               //关闭TalkPanel
     FinishTalkSignal.Dispatch();                     //通知玩家对话已经结束
 }
Esempio n. 3
0
        public CrmPluginViewModel(ICrm crmClient, IPasswordService passwordService, IPortableNavigationService navigationService)
        {
            this.crmClient         = crmClient;
            this.passwordService   = passwordService;
            this.navigationService = navigationService;
            taskInfoService        = new TaskInfoService(crmClient);

            Name = crmClient.GetName();

            LoginCommand = new RelayCommand(LoginCommand_Executed, () => !isBusy);
        }
Esempio n. 4
0
        /// <summary>
        ///  任务管理
        /// </summary>
        /// <param name="scheduler"></param>
        public static void TaskManager(IScheduler scheduler)
        {
            var taskList = new TaskInfoService().GetModelList("WHERE IsDelete=0", null);

            if (taskList != null)
            {
                foreach (var taskInfo in taskList)
                {
                    JobKey jobKey = new JobKey("TaskName." + taskInfo.TaskId, "TaskGroup." + taskInfo.TaskId);
                    if (scheduler.CheckExists(jobKey))//任务存在
                    {
                        //立刻运行
                        if (taskInfo.ImmedRun == 1)
                        {
                            var _JobDataMap = new JobDataMap();
                            _JobDataMap.Add("TaskInfo", JsonConvert.SerializeObject(taskInfo));
                            scheduler.TriggerJob(jobKey, _JobDataMap);
                        }
                        //即将停止,删除任务并变成停止状态
                        if (taskInfo.State == (int)TaskState.Stopping || taskInfo.State == (int)TaskState.Stopped)
                        {
                            bool deleteFlag = scheduler.DeleteJob(jobKey);
                            if (deleteFlag)
                            {
                                WriteTaskLog(taskInfo, "该任务已经停止运行并删除", TaskState.Stopped);
                            }
                        }
                        //即将启动,变成开启状态
                        else if (taskInfo.State == (int)TaskState.Starting)
                        {
                            WriteTaskLog(taskInfo, "该任务已经从Starting-->Running", TaskState.Running);
                        }
                    }
                    else
                    {
                        if (taskInfo.State == (int)TaskState.Starting || taskInfo.State == (int)TaskState.Running)
                        {
                            //添加job
                            if (AddScheduleJob(scheduler, taskInfo))
                            {
                                WriteTaskLog(taskInfo, "该任务已经添加计划并启动运行", TaskState.Running);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        public void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException)
        {
            try
            {
                //DateTime? NextFireTimeUtc = TimeZoneInfo.ConvertTimeFromUtc(context.NextFireTimeUtc.Value.DateTime, TimeZoneInfo.Local);
                //DateTime? FireTimeUtc = TimeZoneInfo.ConvertTimeFromUtc(context.FireTimeUtc.Value.DateTime, TimeZoneInfo.Local);
                DateTime?NextFireTimeUtc = null;
                if (context.NextFireTimeUtc.HasValue)
                {
                    NextFireTimeUtc = context.NextFireTimeUtc.Value.DateTime;
                }
                DateTime?FireTimeUtc = null;
                if (context.NextFireTimeUtc.HasValue)
                {
                    FireTimeUtc = context.FireTimeUtc.Value.DateTime;
                }

                double TotalSeconds = context.JobRunTime.TotalSeconds;

                TB_TM_TaskInfo taskInfo   = null;
                string         LogContent = string.Empty;
                if (context.MergedJobDataMap != null)
                {
                    if (context.MergedJobDataMap.ContainsKey("TaskInfo"))
                    {
                        taskInfo = JsonConvert.DeserializeObject <TB_TM_TaskInfo>(context.MergedJobDataMap.GetString("TaskInfo"));
                    }

                    if (taskInfo != null)
                    {
                        System.Text.StringBuilder log = new System.Text.StringBuilder();
                        int i = 0;
                        foreach (var item in context.MergedJobDataMap)
                        {
                            string key = item.Key;
                            if (key.StartsWith("Extend_"))
                            {
                                if (i > 0)
                                {
                                    log.Append(",");
                                }
                                log.AppendFormat("{0}:{1}", item.Key, item.Value);
                                i++;
                            }
                        }
                        if (i > 0)
                        {
                            LogContent = string.Concat("[", log.ToString(), "]");
                        }
                        TaskInfoService _TaskInfoService = new TaskInfoService();
                        TaskLogService  _TaskLogService  = new TaskLogService();
                        taskInfo             = _TaskInfoService.GetModel(taskInfo.TaskId);
                        taskInfo.LastRunTime = FireTimeUtc;
                        taskInfo.NextRunTime = NextFireTimeUtc;
                        taskInfo.RunCount    = taskInfo.RunCount + 1;
                        if (taskInfo.ImmedRun == 1)//立刻运行
                        {
                            LogContent        = "(本次是立刻运行)" + LogContent;
                            taskInfo.ImmedRun = 0;
                        }

                        _TaskInfoService.Update(taskInfo);
                        _TaskLogService.Add(new TaskManager.Core.Model.TB_TM_TaskLog()
                        {
                            TaskId            = taskInfo.TaskId,
                            TaskName          = taskInfo.TaskName,
                            CreatedDateTime   = DateTime.Now,
                            ExecutionTime     = FireTimeUtc,
                            ExecutionDuration = TotalSeconds,
                            RunLog            = LogContent
                        });
                    }
                }
                //if (jobException != null)
                //{
                //    LogContent = LogContent + " EX:" + jobException.ToString();
                //    new TaskLogService().Add(new TaskManager.Core.Model.TB_TM_TaskLog()
                //    {
                //        TaskId = Convert.ToInt32(TaskId),
                //        TaskName = TaskName,
                //        CreatedDateTime = DateTime.Now,
                //        ExecutionTime = FireTimeUtc,
                //        ExecutionDuration = TotalSeconds,
                //        RunLog = LogContent
                //    });
                //}
            }
            catch (Exception ex)
            {
                //错误日志
            }
        }
Esempio n. 6
0
 public TaskInfoController()
 {
     _TaskInfoService = new TaskInfoService();
 }