fix: 修复手动停止时回调消息错误,新增TaskChainStopped回调消息

fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/2442
This commit is contained in:
MistEO
2022-10-26 23:48:33 +08:00
parent 42da45e807
commit f903d110e4
9 changed files with 60 additions and 13 deletions

View File

@@ -25,12 +25,14 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
TaskChainStart = 10001, // 任务链开始
TaskChainCompleted = 10002, // 任务链完成
TaskChainExtraInfo = 10003, // 任务链额外信息
TaskChainStopped = 10004, // 任务链手动停止
/* SubTask Info */
SubTaskError = 20000, // 原子任务执行/识别错误
SubTaskStart = 20001, // 原子任务开始
SubTaskCompleted = 20002, // 原子任务完成
SubTaskExtraInfo = 20003 // 原子任务额外信息
SubTaskExtraInfo = 20003, // 原子任务额外信息
SubTaskStopped = 20004, // 原子任务手动停止
};
```

View File

@@ -24,11 +24,13 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
TaskChainStart, // Task chain starts
TaskChainCompleted, // Task chain completes
TaskChainExtraInfo, // Extra information about task chain
TaskChainStopped, // Task chain stopped
/* SubTask Info */
SubTaskError = 20000, // Errors in subtask execution/recognition
SubTaskStart, // Subtask starts
SubTaskCompleted, // Subtask completes
SubTaskExtraInfo // Extra information about subtask
SubTaskExtraInfo, // Extra information about subtask
SubTaskStopped, // Subtask stopped
};
```

View File

@@ -24,11 +24,13 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
TaskChainStart, // 一連のタスク開始
TaskChainCompleted, // 一連のタスク完了
TaskChainExtraInfo, // 一連のタスクの追加情報
TaskChainStopped,
/* SubTask Info */
SubTaskError = 20000, // サブタスク 実行/認識におけるエラー
SubTaskStart, // サブタスク 実行
SubTaskCompleted, // サブタスク 完了
SubTaskExtraInfo // サブタスクの追加情報
SubTaskExtraInfo, // サブタスクの追加情報
SubTaskStopped,
};
```

View File

@@ -24,11 +24,13 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
TaskChainStart, // 任務鏈開始
TaskChainCompleted, // 任務鏈完成
TaskChainExtraInfo, // 任務鏈額外資訊
TaskChainStopped, // 任務鏈手動停止
/* SubTask Info */
SubTaskError = 20000, // 原子任務執行/辨識錯誤
SubTaskStart, // 原子任務開始
SubTaskCompleted, // 原子任務完成
SubTaskExtraInfo // 原子任務額外資訊
SubTaskExtraInfo, // 原子任務額外資訊
SubTaskStopped, // 原子任務手動停止
};
```

View File

@@ -262,11 +262,15 @@ void Assistant::working_proc()
}
lock.unlock();
// We don't consider a task failed when user stop it.
auto msg = ret || m_thread_idle ? AsstMsg::TaskChainCompleted : AsstMsg::TaskChainError;
auto msg = m_thread_idle ? AsstMsg::TaskChainStopped
: (ret ? AsstMsg::TaskChainCompleted : AsstMsg::TaskChainError);
task_callback(msg, callback_json, this);
if (!m_thread_idle && m_tasks_list.empty()) {
if (!m_thread_idle) {
continue;
}
if (m_tasks_list.empty()) {
callback_json["finished_tasks"] = json::array(finished_tasks);
task_callback(AsstMsg::AllTasksCompleted, callback_json, this);
finished_tasks.clear();

View File

@@ -20,11 +20,13 @@ namespace asst
TaskChainStart, // 任务链开始
TaskChainCompleted, // 任务链完成
TaskChainExtraInfo, // 任务链额外信息
TaskChainStopped, // 任务链停止(手动停止)
/* SubTask Info */
SubTaskError = 20000, // 原子任务执行/识别错误
SubTaskStart, // 原子任务开始
SubTaskCompleted, // 原子任务完成
SubTaskExtraInfo // 原子任务额外信息
SubTaskExtraInfo, // 原子任务额外信息
SubTaskStopped, // 原子任务停止(手动停止)
};
inline std::ostream& operator<<(std::ostream& os, const AsstMsg& type)
@@ -40,11 +42,13 @@ namespace asst
{ AsstMsg::TaskChainStart, "TaskChainStart" },
{ AsstMsg::TaskChainCompleted, "TaskChainCompleted" },
{ AsstMsg::TaskChainExtraInfo, "TaskChainExtraInfo" },
{ AsstMsg::TaskChainStopped, "TaskChainStopped" },
/* SubTask Info */
{ AsstMsg::SubTaskError, "SubTaskError" },
{ AsstMsg::SubTaskStart, "SubTaskStart" },
{ AsstMsg::SubTaskCompleted, "SubTaskCompleted" },
{ AsstMsg::SubTaskExtraInfo, "SubTaskExtraInfo" },
{ AsstMsg::SubTaskStopped, "SubTaskStopped" },
};
return os << _type_name.at(type);
}

View File

@@ -324,6 +324,7 @@ namespace MeoAsstGui
case AsstMsg.TaskChainStart:
case AsstMsg.TaskChainCompleted:
case AsstMsg.TaskChainExtraInfo:
case AsstMsg.TaskChainStopped:
ProcTaskChainMsg(msg, details);
break;
@@ -425,11 +426,22 @@ namespace MeoAsstGui
var settingsModel = _container.Get<SettingsViewModel>();
var copilotModel = _container.Get<CopilotViewModel>();
bool isCoplitTaskChain = taskChain == "Copilot";
switch (msg)
{
case AsstMsg.TaskChainStopped:
mainModel.SetStopped();
if (isCoplitTaskChain)
{
copilotModel.Idle = true;
}
break;
case AsstMsg.TaskChainError:
mainModel.AddLog(Localization.GetString("TaskError") + taskChain, LogColor.Error);
if (taskChain == "Copilot")
if (isCoplitTaskChain)
{
copilotModel.Idle = true;
copilotModel.AddLog(Localization.GetString("CombatError"), LogColor.Error);
@@ -457,7 +469,7 @@ namespace MeoAsstGui
}
mainModel.AddLog(Localization.GetString("CompleteTask") + taskChain);
if (taskChain == "Copilot")
if (isCoplitTaskChain)
{
copilotModel.Idle = true;
copilotModel.AddLog(Localization.GetString("CompleteCombat"), LogColor.Info);
@@ -1561,6 +1573,11 @@ namespace MeoAsstGui
/// </summary>
TaskChainExtraInfo,
/// <summary>
/// 任务链手动停止
/// </summary>
TaskChainStopped,
/* SubTask Info */
/// <summary>
@@ -1582,6 +1599,11 @@ namespace MeoAsstGui
/// 原子任务额外信息。
/// </summary>
SubTaskExtraInfo,
/// <summary>
/// 原子任务手动停止
/// </summary>
SubTaskStopped,
}
}

View File

@@ -751,7 +751,6 @@ namespace MeoAsstGui
/// </summary>
public async void Stop()
{
Idle = true; // 提前将 Idle 置为 true
Stopping = true;
AddLog(Localization.GetString("Stopping"));
var task = Task.Run(() =>
@@ -759,7 +758,12 @@ namespace MeoAsstGui
return _container.Get<AsstProxy>().AsstStop();
});
await task;
}
public void SetStopped()
{
AddLog(Localization.GetString("Stopped"));
Idle = true;
Stopping = false;
}

View File

@@ -46,13 +46,14 @@ class Asst:
Asst.__lib = ctypes.CDLL(str(Asst.__libpath))
Asst.__set_lib_properties()
ret: bool = True;
ret: bool = True
if user_dir:
ret &= Asst.__lib.AsstSetUserDir(str(user_dir).encode('utf-8'))
ret &= Asst.__lib.AsstLoadResource(str(path).encode('utf-8'))
if incremental_path:
ret &= Asst.__lib.AsstLoadResource(str(incremental_path).encode('utf-8'))
ret &= Asst.__lib.AsstLoadResource(
str(incremental_path).encode('utf-8'))
return ret
@@ -226,6 +227,8 @@ class Message(Enum):
TaskChainExtraInfo = auto()
TaskChainStopped = auto()
SubTaskError = 20000
SubTaskStart = auto()
@@ -233,3 +236,5 @@ class Message(Enum):
SubTaskCompleted = auto()
SubTaskExtraInfo = auto()
SubTaskStopped = auto()