mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-15 17:30:27 +08:00
feat: 支持剿灭关卡名识别
This commit is contained in:
@@ -54,16 +54,38 @@ bool asst::StageDropsImageAnalyzer::analyze_stage_code()
|
||||
{
|
||||
LogTraceFunction;
|
||||
|
||||
RegionOCRer analyzer(m_image);
|
||||
analyzer.set_task_info("StageDrops-StageName");
|
||||
if (!analyzer.analyze()) {
|
||||
return false;
|
||||
std::string stage_code;
|
||||
Rect text_rect;
|
||||
|
||||
// 先用默认 char 模型识别
|
||||
{
|
||||
RegionOCRer analyzer(m_image);
|
||||
analyzer.set_task_info("StageDrops-StageName");
|
||||
if (analyzer.analyze()) {
|
||||
stage_code = analyzer.get_result().text;
|
||||
text_rect = analyzer.get_result().rect;
|
||||
Log.info(__FUNCTION__, "stage_code", stage_code);
|
||||
}
|
||||
}
|
||||
m_stage_code = analyzer.get_result().text;
|
||||
Log.info(__FUNCTION__, "stage_code", m_stage_code);
|
||||
|
||||
// 如果不带 '-',用非 char 模型再识别一次(适配剿灭/活动等特殊关卡码)
|
||||
if (stage_code.find('-') == std::string::npos) {
|
||||
RegionOCRer analyzer(m_image);
|
||||
analyzer.set_task_info("StageDrops-StageName");
|
||||
analyzer.set_use_char_model(false);
|
||||
if (analyzer.analyze()) {
|
||||
std::string non_char_model_stage_code = analyzer.get_result().text;
|
||||
if (!non_char_model_stage_code.empty()) {
|
||||
stage_code = non_char_model_stage_code;
|
||||
text_rect = analyzer.get_result().rect;
|
||||
Log.info(__FUNCTION__, "stage_code (Non-ASCII model)", stage_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_stage_code = stage_code;
|
||||
|
||||
#ifdef ASST_DEBUG
|
||||
const Rect& text_rect = analyzer.get_result().rect;
|
||||
cv::rectangle(m_image_draw, make_rect<cv::Rect>(text_rect), cv::Scalar(0, 0, 255), 2);
|
||||
cv::putText(
|
||||
m_image_draw,
|
||||
|
||||
@@ -1157,7 +1157,7 @@ public class AsstProxy
|
||||
}
|
||||
}
|
||||
|
||||
private static void ProcSubTaskMsg(AsstMsg msg, JObject details)
|
||||
private void ProcSubTaskMsg(AsstMsg msg, JObject details)
|
||||
{
|
||||
// 下面几行注释暂时没用到,先注释起来...
|
||||
// string taskChain = details["taskchain"].ToString();
|
||||
@@ -1215,9 +1215,10 @@ public class AsstProxy
|
||||
}
|
||||
}
|
||||
|
||||
private static void ProcSubTaskError(JObject details)
|
||||
private void ProcSubTaskError(JObject details)
|
||||
{
|
||||
string subTask = details["subtask"]?.ToString() ?? string.Empty;
|
||||
AsstTaskId taskId = details["taskid"]?.ToObject<AsstTaskId>() ?? 0;
|
||||
switch (subTask)
|
||||
{
|
||||
case "StartGameTask":
|
||||
@@ -1242,6 +1243,15 @@ public class AsstProxy
|
||||
case "ReportToPenguinStats":
|
||||
{
|
||||
var why = details["why"]!.ToString();
|
||||
|
||||
// 剿灭放弃上传企鹅物流的特殊处理
|
||||
_tasksStatus.TryGetValue(taskId, out var value);
|
||||
if (value is { Type: TaskType.Fight } && TaskQueueViewModel.FightTask.Stage == "Annihilation")
|
||||
{
|
||||
Instances.TaskQueueViewModel.AddLog("AnnihilationStage, " + LocalizationHelper.GetString("GiveUpUploadingPenguins"));
|
||||
break;
|
||||
}
|
||||
|
||||
Instances.TaskQueueViewModel.AddLog(why + ", " + LocalizationHelper.GetString("GiveUpUploadingPenguins"), UiLogColor.Warning);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user