public static void UpdateTaskOperate(TaskType type, TaskOperation operate, string sender) { if (type == TaskType.None || string.IsNullOrEmpty(sender) || (type == TaskType.TimeControl && !Context.IsMainPlayer)) { return; } Monitor.Log($"Task updating, type={type}, operate={operate}, sender={sender}", LogLevel); if (type == TaskType.TimeControl && operate == TaskOperation.Run) { SendMessage($"{sender} 进入事件,时间已停止。", Color.Yellow); } if (type == TaskType.TimeControl && operate == TaskOperation.Stop) { SendMessage($"{sender} 结束了事件{(TaskList[type].Sender.Count > 1 ? "。" : ",时间重新开始流动。")}", Color.Green); } //如果任务不存在就创建任务,但任务必须以Run开始(好像不一定必须,但这样子更不容易出现奇怪的bug,除非哪天有需求不然还是限制着吧) //如果任务存在就更新任务的状态,但如果要停止或移除就必须等待所有Sender都把Operate更新成Stop或者Remove if (TaskList.ContainsKey(type)) { Monitor.Log($"{type} try to {operate}", LogLevel); switch (operate) { case TaskOperation.Run: if (!TaskList[type].Sender.Any(x => x == sender)) //这里如果直接加入就是允许一个人同时触发多个事件 { TaskList[type].Sender.Add(sender); } TaskList[type].Operate = operate; break; case TaskOperation.Stop: //必须等到最后一个人看完事件才可以把operate更新成Stop或者Remove if (TaskList[type].Sender.Count > 1) { TaskList[type].Sender.Remove(sender); } else if (TaskList[type].Sender[0] == sender) { TaskList[type].Operate = operate; } break; case TaskOperation.Remove: TaskList[type].Operate = operate; break; default: throw new InvalidOperationException($"Unknow operate {operate}"); } Monitor.Log($"{type} is {TaskList[type].Operate} now", LogLevel); Monitor.Log($"{type} has {TaskList[type].Sender.Count} Sender", LogLevel); } else if (operate == TaskOperation.Run) { TaskList.Add(type, new TaskPayload(operate, sender, sender)); } }
public CreateOrModifyTaskUseCase(List <ZTask> tasks, ZTask parentZtask, ICreateOrModifyTaskPresenterCallback callBack, TaskOperation taskOperation) { this.tasks = tasks; this.parentZtask = parentZtask; this.callback = callBack; this.taskOperation = taskOperation; }
public void TaskItemClick(ZTask item) { taskOperation = TaskOperation.Modify; TaskObj = item; TaskId = TaskObj.TaskDetails.TaskId; ModifyPriority(item); if (TaskObj.TaskDetails.RemindOn == null) { Reminder.IsEnabled = false; checkBox.IsChecked = false; } else { Reminder.IsEnabled = true; checkBox.IsChecked = true; } subtasks.Clear(); foreach (ZTask subTask in item.SubTasks) { subtasks.Add(subTask); Debug.WriteLine(subTask.TaskDetails.TaskTitle); } //if (subtasks.Count == 0) //{ // ZTask zTask = new ZTask(); // TaskDetail subTaskDetail = zTask.TaskDetails; // subTaskDetail.TaskId = Guid.NewGuid().ToString(); // subTaskDetail.ParentTaskId = GetTaskId(); // newRowSubTask = zTask; // Assignment(zTask.Assignment, "user101010", "user101010", "Prithvi Venu", "Prithvi Venu", subTaskDetail.TaskId); // subtasks.Add(zTask); //} Debug.WriteLine(item.TaskDetails.TaskTitle); }
async public Task AddOrModifyTasks(List <ZTask> task, TaskOperation taskOperation) { foreach (ZTask zTask in task) { zTask.TaskDetails.ModifiedDate = DateTime.Now.Date; if (taskOperation == TaskOperation.Add) { await DatabaseAccessContext.Connection.InsertAsync(zTask.TaskDetails); await DatabaseAccessContext.Connection.InsertAsync(zTask.Assignment); } else if (taskOperation == TaskOperation.Modify) { int rowsAffectedTaskDetails = await DatabaseAccessContext.Connection.UpdateAsync(zTask.TaskDetails); int rowsAffectedAssignment = await DatabaseAccessContext.Connection.UpdateAsync(zTask.Assignment); Debug.WriteLine(rowsAffectedAssignment); Debug.WriteLine(rowsAffectedTaskDetails); if (rowsAffectedAssignment <= 0) { await DatabaseAccessContext.Connection.InsertAsync(zTask.Assignment); } if (rowsAffectedTaskDetails <= 0) { await DatabaseAccessContext.Connection.InsertAsync(zTask.TaskDetails); } } } }
public static TaskOperation Single() { if (single == null) { single = new TaskOperation(); } return(single); }
public TaskPayload(TaskOperation operate, string sponsor, string sender) { Operate = operate; Sponsor = sponsor ?? throw new ArgumentNullException(nameof(sponsor)); Sender = new List <string>() { sender ?? throw new ArgumentNullException(nameof(sender)) }; } }
void QianWang() { //如果当前玩家正在采集或者送信 读进度条就返回 TaskOperation.Single().clearEvent(); if (taskData.taskType == TaskClass.Reward) { if (Singleton <SceneManage> .Instance.Current == EnumSceneID.UI_MajorCity01 || Singleton <SceneManage> .Instance.Current == EnumSceneID.LGhuangyuan) { //UIActivities.Instance.ChangeIndex(1); //Control.ShowGUI(GameLibrary.UIActivities); EveryTaskData data = playerData.GetInstance() .taskDataList.itList.Find( x => x.state == (int)TaskProgress.Accept);//|| x.state == (int)TaskProgress.Complete if (data != null && data.state == (int)TaskProgress.Accept) { UIActivitiesManager.Instance.RewardTaskOperate(data); } } if (Singleton <SceneManage> .Instance.Current == EnumSceneID.UI_MajorCity01) { EveryTaskData data = playerData.GetInstance() .taskDataList.itList.Find( x => x.state == (int)TaskProgress.Complete);//|| x.state == (int)TaskProgress.Complete if (data != null && data.state == (int)TaskProgress.Complete) { Control.ShowGUI(UIPanleID.UIActivities, EnumOpenUIType.OpenNewCloseOld, false, 1); } } if (Singleton <SceneManage> .Instance.Current == EnumSceneID.LGhuangyuan) { EveryTaskData data = playerData.GetInstance() .taskDataList.itList.Find( x => x.state == (int)TaskProgress.Complete);//|| x.state == (int)TaskProgress.Complete if (data != null && data.state == (int)TaskProgress.Complete) { Control.ShowGUI(UIPanleID.UITooltips, EnumOpenUIType.DefaultUIOrSecond, false, "请返回主城,提交悬赏任务"); } } } else { if (taskData.taskItem.tasknode.Level <= playerData.GetInstance().selfData.level) { //追踪的时候需要掉接口 TaskOperation.Single().SetCurrentTaskItem(taskItem); } else { Control.ShowGUI(UIPanleID.UITooltips, EnumOpenUIType.DefaultUIOrSecond, false, "需战队等级达到" + taskData.taskItem.tasknode.Level + "级才可领取"); } } }
public void AddEvent() { High.Background = new SolidColorBrush(Colors.Transparent); Low.Background = new SolidColorBrush(Colors.Transparent); Medium.Background = new SolidColorBrush(Colors.Transparent); checkBox.IsChecked = false; Reminder.IsEnabled = false; TaskObj.TaskDetails.RemindOn = null; taskOperation = TaskOperation.Add; Debug.WriteLine("Add Event"); PageSetup(); // UserControlAddEventTriggered?.Invoke(); }
public ActionResult Edit(int id) { TaskOperation task = new TaskOperation(); foreach (var i in TaskService.tasks()) { if (i.id == id) { task.name = i.name; task.date = i.name; task.id = id; task.user = i.user.id; } } return(View(task)); }
public void ExecuteTask(TaskType type, TaskOperation operate, string sponsor, string sender) { if (operate == TaskOperation.Run) { //这些基本上都必须每tick运行,不然会变出来,虽然有时候又不会,总之竟然大部分情况会变那就只能每tick都去改了 switch (type) { case TaskType.TimeControl: Time.Stop(); break; //如果在这里发送行为控制任务的话可以做到全部由主机的配置文件来控制 case TaskType.BuffControl: BuffUpdatePatch.Disable = false; break; case TaskType.ActionControl: Game1.player.CanMove = false; break; case TaskType.SpeedControl: Game1.player.Speed = 0; break; case TaskType.WalkOnly: Game1.player.canOnlyWalk = true; break; case TaskType.None: return; default: throw new InvalidOperationException($"Unknow Type {type}"); } } else if (operate == TaskOperation.Stop) { switch (type) { case TaskType.TimeControl: Time.Run(); break; case TaskType.BuffControl: BuffUpdatePatch.Disable = true; break; case TaskType.ActionControl: Game1.player.CanMove = true; break; case TaskType.SpeedControl: Game1.player.Speed = Farmer.runningSpeed; break; case TaskType.WalkOnly: Game1.player.canOnlyWalk = false; break; case TaskType.None: return; default: throw new InvalidOperationException($"Unknow Type {type}"); } Monitor.Log($"Task {type} stop operate executed successfully", LogLevel); Utils.UpdateTaskOperate(type, TaskOperation.Remove, sender); //Helper.Multiplayer.SendMessage(new TaskPacket(type, TaskOperation.Remove), nameof(TaskPacket)); } }
public ActionResult Edit(TaskOperation t) { if (ModelState.IsValid) { Task task = new Task { id = t.id, name = t.name, date = t.date }; bool result = TaskService.edittask(task); if (result == true) { ViewBag.message = "Edited Successfully"; } else { ViewBag.message = "Edited not Possible"; } } return(RedirectToAction("Gettasks", new { id = t.user })); }
/// <summary> /// 用于任务追踪执行操作 /// </summary> /// <param name="vo"></param> public void RewardTaskOperate(EveryTaskData vo) { switch ((TaskType)vo.type) { case TaskType.Dialogue: break; case TaskType.PassCopy: break; case TaskType.Collect: TaskAutoTraceManager._instance.MoveToTargetPosition(vo.taskTarget, TaskMoveTarget.MoveToCollectPos, vo.mapId); break; case TaskType.UpgradeSkillLv: break; case TaskType.UpgradeHeroEquipLv: break; case TaskType.KillMonster: TaskAutoTraceManager._instance.MoveToTargetPosition(vo.taskTarget, TaskMoveTarget.MoveToMonsterPos, vo.mapId); break; case TaskType.KillDropSth: break; case TaskType.knapsackItem: break; case TaskType.NamedPComplete: //TaskAutoTraceManager._instance.MoveToTargetPosition(vo.taskTarget, TaskMoveTarget.MoveToNpc, vo.mapId); TaskOperation.Single().MoveToNpc((int)vo.taskTarget, TaskOperation.MoveToNpcType.RewardSendLetter); break; case TaskType.KillTempMonster: break; case TaskType.KillPerson: break; } }
public override object Create(object parent, object configContext, System.Xml.XmlNode section) { var config = new RunTaskScheduleConfig(); var nodes = section.SelectNodes("TaskSchedule"); if (nodes != null && nodes.Count > 0) { try { foreach (XmlNode item in nodes) { var taskOperation = new TaskOperation { Name = attributeValue <string>(item, "name"), Description = attributeValue <string>(item, "descripttion"), Type = attributeValue <string>(item, "type"), FixedTime = attributeValueArray <DateTime>(item, "fixedTime"), IsEnable = attributeValue <bool>(item, "isEnable"), StopOnError = attributeValue <bool>(item, "stopOnError"), Interval = attributeValue <int>(item, "interval"), PluginsName = attributeValue <string>(item, "pluginsName"), }; var handernode = item.SelectSingleNode("TaskScheduleHander"); if (handernode != null) { } config.TaskOperations.Add(taskOperation); } } catch (Exception ex) { throw new Exception("任务计划安排初始化异常~", ex); } } return(config); }
/// <summary> /// 打开对话框 /// </summary> /// <param name="packet"></param> /// <returns></returns> public bool OpenDialogUI(CReadPacket packet) { Debug.Log("OpenDialogUIResult"); Dictionary <string, object> data = packet.data; int resolt = int.Parse(data["ret"].ToString()); if (resolt == 0) { bool isoperation = false; DialogItem dialogitem = new DialogItem(); if (data.ContainsKey("title")) { if (data["title"] == null) { dialogitem.title = ""; } else { dialogitem.title = data["title"].ToString(); } } if (data.ContainsKey("disc")) { dialogitem.disc = data["disc"].ToString(); } if (data.ContainsKey("opt1")) { isoperation = true; dialogitem.opt[0] = data["opt1"].ToString(); dialogitem.opt[1] = data["opt2"].ToString(); dialogitem.opt[2] = data["opt3"].ToString(); dialogitem.opt[3] = data["opt4"].ToString(); if (string.IsNullOrEmpty(dialogitem.opt[0]) && string.IsNullOrEmpty(dialogitem.opt[1]) && string.IsNullOrEmpty(dialogitem.opt[2]) && string.IsNullOrEmpty(dialogitem.opt[3])) { isoperation = false; } } //if (TaskManager.Single().isAcceptTask) //{ // TaskEffectManager.instance.ShowTaskEffect(TaskEffectType.AcceptTask); //} dialogitem.msId = int.Parse(data["msId"].ToString()); dialogitem.scrId = int.Parse(data["scrId"].ToString()); dialogitem.user[0] = int.Parse(data["user1"].ToString());//如果是5010 5020的话 表示闲聊 dialogitem.user[1] = int.Parse(data["user2"].ToString()); dialogitem.user[2] = int.Parse(data["user3"].ToString()); TaskManager.Single().CurrentShowDialogItem = dialogitem; if (isoperation) { //当前npcID 和 移动到npc要触发哪个类型事件 //TaskOperation.Single().MoveToNpc(TaskOperation.Single().taskNpc.NPCID, TaskOperation.MoveToNpcType.OpenTaskList); TaskOperation.Single().MoveToNpc(TaskOperation.Single().currentTaskNpcID, TaskOperation.MoveToNpcType.OpenTaskList); } else { if (dialogitem.user[0] == 5010 || dialogitem.user[0] == 5020) { //TaskOperation.Single().MoveToNpc(TaskOperation.Single().taskNpc.NPCID, TaskOperation.MoveToNpcType.Smalltalk); TaskOperation.Single().MoveToNpc(TaskOperation.Single().currentTaskNpcID, TaskOperation.MoveToNpcType.Smalltalk); } else { //if (TaskOperation.Single() != null && TaskOperation.Single().taskNpc != null) //TaskOperation.Single().MoveToNpc(TaskOperation.Single().taskNpc.NPCID, TaskOperation.MoveToNpcType.OpenChatDialog); if (TaskOperation.Single() != null && TaskOperation.Single().currentTaskNpcID != 0) { TaskOperation.Single().MoveToNpc(TaskOperation.Single().currentTaskNpcID, TaskOperation.MoveToNpcType.OpenChatDialog); } } } } else { Debug.Log(data["desc"].ToString()); } return(true); }
async public Task AddOrModifyTask(List <ZTask> task, ZTask parentZtask, ICreateOrModifyTaskDMCallback callback, TaskOperation taskOperation) { await AddOrModifyTasks(task, taskOperation); parentZtask.TaskDetails.ModifiedDate = DateTime.Now.Date; if (taskOperation == TaskOperation.Add) { await DatabaseAccessContext.Connection.InsertAsync(parentZtask.TaskDetails); await DatabaseAccessContext.Connection.InsertAsync(parentZtask.Assignment); } else if (taskOperation == TaskOperation.Modify) { await DatabaseAccessContext.Connection.UpdateAsync(parentZtask.TaskDetails); await DatabaseAccessContext.Connection.UpdateAsync(parentZtask.Assignment); } Debug.WriteLine("hii"); callback.OnSuccess(parentZtask); }
private void EnterBtn() { if (enterBtn.text == "接取") { if (playerData.GetInstance().taskDataList.getCount > 0) { Dictionary <string, object> newpacket = new Dictionary <string, object>(); newpacket.Add("arg1", this.index); newpacket.Add("arg2", (int)TaskProgress.NoAccept);//1领取奖励 Singleton <Notification> .Instance.Send(MessageID.common_offer_reward_mission_operation_req, newpacket); } else { Control.ShowGUI(UIPanleID.UITooltips, EnumOpenUIType.DefaultUIOrSecond, false, "今日悬赏任务已全部完成"); } } else if (enterBtn.text == "前往") { switch ((TaskType)vo.type) { case TaskType.Dialogue: break; case TaskType.PassCopy: break; case TaskType.Collect: TaskAutoTraceManager._instance.MoveToTargetPosition(vo.taskTarget, TaskMoveTarget.MoveToCollectPos, vo.mapId); break; case TaskType.UpgradeSkillLv: break; case TaskType.UpgradeHeroEquipLv: break; case TaskType.KillMonster: TaskAutoTraceManager._instance.MoveToTargetPosition(vo.taskTarget, TaskMoveTarget.MoveToMonsterPos, vo.mapId); break; case TaskType.KillDropSth: break; case TaskType.knapsackItem: break; case TaskType.NamedPComplete: //TaskAutoTraceManager._instance.MoveToTargetPosition(vo.taskTarget, TaskMoveTarget.MoveToNpc, vo.mapId); TaskOperation.Single().MoveToNpc((int)vo.taskTarget, TaskOperation.MoveToNpcType.RewardSendLetter); break; case TaskType.KillTempMonster: break; case TaskType.KillPerson: break; } Control.HideGUI(); } }
public static void UpdateTaskOperate(TaskType type, TaskOperation operate, string sender) { Monitor.Log($"Task updating, type={type}, operate={operate}, sender={sender}", LogLevel); if (type == TaskType.None || string.IsNullOrEmpty(sender) || (type == TaskType.TimeControl && !Context.IsMainPlayer)) { return; } //在tick里面lock会不会导致游戏卡顿一下... lock (TaskList) { bool ShowEventMessageOnly = type == TaskType.TimeControl && TaskList.ContainsKey(type) && TaskList[type].Sender != null && TaskList[type].Sender.Count > 1; if (type == TaskType.TimeControl && operate == TaskOperation.Run) { SendMessage($"{Translation.Get("message.event.start", new { playerName = sender })}{(ShowEventMessageOnly ? "." : Translation.Get("message.time.stop"))}", Color.Yellow); } if (type == TaskType.TimeControl && operate == TaskOperation.Stop) { SendMessage($"{Translation.Get("message.event.stop", new { playerName = sender })}{(ShowEventMessageOnly ? "." : Translation.Get("message.time.start"))}", Color.Green); } //如果任务不存在就创建任务,但任务必须以Run开始(好像不一定必须,但这样子更不容易出现奇怪的bug,除非哪天有需求不然还是限制着吧) //如果任务存在就更新任务的状态,但如果要停止或移除就必须等待所有Sender都把Operate更新成Stop或者Remove if (TaskList.ContainsKey(type)) { Monitor.Log($"{type} try to {operate}", LogLevel); switch (operate) { case TaskOperation.Run: if (!TaskList[type].Sender.Any(x => x == sender)) //这里如果直接加入就是允许一个人同时触发多个事件 { TaskList[type].Sender.Add(sender); } TaskList[type].Operate = operate; break; case TaskOperation.Stop: //必须等到最后一个人看完事件才可以把operate更新成Stop或者Remove if (TaskList[type].Sender.Count > 1) { TaskList[type].Sender.Remove(sender); } else if (TaskList[type].Sender[0] == sender) { TaskList[type].Operate = operate; } break; case TaskOperation.Remove: TaskList[type].Operate = operate; break; default: throw new InvalidOperationException($"Unknow operate {operate}"); } Monitor.Log($"{type} is {TaskList[type].Operate} now", LogLevel); Monitor.Log($"{type} has {TaskList[type].Sender.Count} Sender", LogLevel); } else if (operate == TaskOperation.Run) { TaskList.Add(type, new TaskPayload(operate, sender, sender)); } } }
public bool Operate(TaskOperation opt, object param = null) { return(stateMachine.InvokeCurrentState(opt, param)); }
public TaskPacket(TaskType type, TaskOperation operate) { Type = type; Operate = operate; }
public void RefreshList(ZTask task) { RefreshData?.Invoke(task); taskOperation = TaskOperation.Modify; }
async Task ICreateOrModifyTaskDMContract.AddOrModifyTask(List <ZTask> task, ZTask parentZtask, ICreateOrModifyTaskCallback callback, TaskOperation taskOperation) { this.callback = callback; addTaskDbHandler = CreateOrModifyTaskDbHandler.GetInstance; if (taskOperation == TaskOperation.Add) { IAddTasksNetworkHandlerContract Handler = new CreateOrModifyTaskNetworkHandler(); await Handler.AddTasksAsync(this, task, parentZtask); } else { await addTaskDbHandler.AddOrModifyTask(task, parentZtask, this, taskOperation); } }
//public delegate void ReachplaceNpcEvent(int npcid); //private ReachplaceNpcEvent reachplaceNpcEvent; //点击NPC触发 void OnMouseDown() { if ((UICamera.selectedObject != null && UICamera.selectedObject.transform.name == "UI Root") || (UICamera.hoveredObject != null && UICamera.hoveredObject.transform.name == "UI Root") || (UICamera.selectedObject != null && UICamera.selectedObject.transform.name == "UI Root(Clone)") || (UICamera.hoveredObject != null && UICamera.hoveredObject.transform.name == "UI Root(Clone)")) { if (!UICamera.isOverUI) { //点击npc显示光圈 if (quanEffect != null) { quanEffect.gameObject.SetActive(true); Vector3 tempV = transform.position; quanEffect.position = tempV; } //如果当前npc上没有任务 就进行闲聊 不触发点击npc协议 if (!TaskManager.NpcTaskStateDic.ContainsKey(NPCID)) { TaskOperation.Single().MoveToNpc(NPCID, TaskOperation.MoveToNpcType.Smalltalk); return; } //设置当前操作npc TaskOperation.Single().taskNpc = this; TaskOperation.Single().currentTaskNpcID = NPCID; if (TaskManager.NpcTaskListDic.ContainsKey(NPCID)) { //暂时一个npc下有一个可接收的任务 或者 可完成的任务 int taskID = 0; foreach (int key in TaskManager.NpcTaskListDic[NPCID].Keys) { taskID = key; } //npc上有任务 但是任务状态是未完成 也进行闲聊 if (TaskManager.NpcTaskListDic[NPCID][taskID].taskProgress == TaskProgress.Accept) { TaskOperation.Single().MoveToNpc(NPCID, TaskOperation.MoveToNpcType.Smalltalk); return; } if (FSDataNodeTable <TaskDataNode> .GetSingleton().DataNodeList.ContainsKey(taskID)) { if (FSDataNodeTable <TaskDataNode> .GetSingleton().DataNodeList[taskID].Level > playerData.GetInstance().selfData.level) { Control.ShowGUI(UIPanleID.UITooltips, EnumOpenUIType.DefaultUIOrSecond, false, "需战队等级达到" + FSDataNodeTable <TaskDataNode> .GetSingleton().DataNodeList[taskID].Level + "级才可领取"); return; } } TaskOperation.Single().MoveToNpc(NPCID, TaskOperation.MoveToNpcType.JuQingTaskZhuiZhong); //ClientSendDataMgr.GetSingle().GetTaskSend().ClickNpc(NPCID, taskID, TaskManager.NpcTaskListDic[NPCID][taskID].parm0); } //在此判定是否该NPC身上是否有任务 如果没有不进行任何操作 //List<TaskItem> tasklist = TaskManager.Single().GetNPCTaskList(NPCID); //if (tasklist.Count > 0) //{ // TaskOperation.Single().MoveToNpc(NPCID, TaskOperation.MoveToNpcType.OpenTaskList); //} //else//闲聊 //{ // TaskOperation.Single().MoveToNpc(NPCID, TaskOperation.MoveToNpcType.Smalltalk); //} } } }
public ActionResult Delete(TaskOperation t) { TaskService.deletetask(t.id); return(RedirectToAction("Gettasks", new { id = t.user })); }
public void AddOrModifyTask(ZTask parentZtask, TaskOperation taskOperation) { RemoveEmptyListElements(); usecase = new CreateOrModifyTaskUseCase(Ztasks.ToList <ZTask>(), parentZtask, this, taskOperation); usecase.Execute(); }