mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-15 17:30:27 +08:00
fix: 修复手动停止时回调消息错误,新增TaskChainStopped回调消息
fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/2442
This commit is contained in:
@@ -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, // 原子任务手动停止
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
@@ -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
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
@@ -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, // 原子任務手動停止
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user