feat: 支持剿灭关卡名识别

This commit is contained in:
uye
2025-10-20 22:27:21 +08:00
parent 7264f26b14
commit b63bd4b6eb
2 changed files with 41 additions and 9 deletions

View File

@@ -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,

View File

@@ -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;
}