mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-17 18:01:26 +08:00
feat: 基建自动领取专精
This commit is contained in:
@@ -6527,6 +6527,34 @@
|
||||
],
|
||||
"templThreshold": 0.95
|
||||
},
|
||||
"InfrastTraining": {
|
||||
"template": "Training.png",
|
||||
"maskRange": [
|
||||
1,
|
||||
255
|
||||
],
|
||||
"roi": [
|
||||
880,
|
||||
420,
|
||||
400,
|
||||
160
|
||||
],
|
||||
"templThreshold": 0.95
|
||||
},
|
||||
"InfrastTrainingMini": {
|
||||
"template": "TrainingMini.png",
|
||||
"maskRange": [
|
||||
1,
|
||||
255
|
||||
],
|
||||
"roi": [
|
||||
980,
|
||||
400,
|
||||
300,
|
||||
140
|
||||
],
|
||||
"templThreshold": 0.95
|
||||
},
|
||||
"InfrastControl": {
|
||||
"template": "ControlCenter.png",
|
||||
"maskRange": [
|
||||
@@ -7574,6 +7602,19 @@
|
||||
"ClueGiveTo1stConfirm"
|
||||
]
|
||||
},
|
||||
"InfrastTrainingCompleted": {
|
||||
"action": "ClickSelf",
|
||||
"roi": [
|
||||
350,
|
||||
600,
|
||||
200,
|
||||
120
|
||||
],
|
||||
"postDelay": 5000,
|
||||
"next": [
|
||||
"CloseTaskAward"
|
||||
]
|
||||
},
|
||||
"InfrastOperListTabSkillUnClicked": {
|
||||
"action": "ClickSelf",
|
||||
"roi": [
|
||||
|
||||
BIN
resource/template/InfrastTrainingCompleted.png
Normal file
BIN
resource/template/InfrastTrainingCompleted.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
BIN
resource/template/Training.png
Normal file
BIN
resource/template/Training.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
resource/template/TrainingMini.png
Normal file
BIN
resource/template/TrainingMini.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
@@ -76,6 +76,7 @@
|
||||
<ClInclude Include="Task\Fight\SideStoryReopenTask.h" />
|
||||
<ClInclude Include="Task\Fight\StageQueueMissionCompletedPlugin.h" />
|
||||
<ClInclude Include="Task\Infrast\InfrastProcessingTask.h" />
|
||||
<ClInclude Include="Task\Infrast\InfrastTrainingTask.h" />
|
||||
<ClInclude Include="Task\Interface\CustomTask.h" />
|
||||
<ClInclude Include="Task\Interface\VideoRecognitionTask.h" />
|
||||
<ClInclude Include="Task\Interface\OperBoxTask.h" />
|
||||
@@ -253,6 +254,7 @@
|
||||
<ClCompile Include="Task\Fight\SideStoryReopenTask.cpp" />
|
||||
<ClCompile Include="Task\Fight\StageQueueMissionCompletedPlugin.cpp" />
|
||||
<ClCompile Include="Task\Infrast\InfrastProcessingTask.cpp" />
|
||||
<ClCompile Include="Task\Infrast\InfrastTrainingTask.cpp" />
|
||||
<ClCompile Include="Task\Interface\VideoRecognitionTask.cpp" />
|
||||
<ClCompile Include="Task\Interface\OperBoxTask.cpp" />
|
||||
<ClCompile Include="Task\Miscellaneous\ScreenshotTaskPlugin.cpp" />
|
||||
|
||||
@@ -408,6 +408,9 @@
|
||||
<ClInclude Include="Task\Infrast\InfrastOfficeTask.h">
|
||||
<Filter>Source\Task\Infrast</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Task\Infrast\InfrastTrainingTask.h">
|
||||
<Filter>Source\Task\Infrast</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Task\Infrast\InfrastPowerTask.h">
|
||||
<Filter>Source\Task\Infrast</Filter>
|
||||
</ClInclude>
|
||||
@@ -1148,5 +1151,8 @@
|
||||
<ClCompile Include="Config\TaskData\TaskDataSymbolStream.cpp">
|
||||
<Filter>Source\Resource\TaskData</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Task\Infrast\InfrastTrainingTask.cpp">
|
||||
<Filter>Source\Task\Infrast</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
30
src/MaaCore/Task/Infrast/InfrastTrainingTask.cpp
Normal file
30
src/MaaCore/Task/Infrast/InfrastTrainingTask.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include "InfrastTrainingTask.h"
|
||||
|
||||
#include "Task/ProcessTask.h"
|
||||
|
||||
bool asst::InfrastTrainingTask::_run()
|
||||
{
|
||||
m_all_available_opers.clear();
|
||||
|
||||
set_product("SkillLevel");
|
||||
|
||||
swipe_to_the_right_of_main_ui();
|
||||
|
||||
if (!enter_facility()) {
|
||||
return false;
|
||||
}
|
||||
enter_facility();
|
||||
|
||||
// 训练未完成或没有训练,退出
|
||||
if (!training_completed()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool asst::InfrastTrainingTask::training_completed()
|
||||
{
|
||||
ProcessTask task(*this, { "InfrastTrainingCompleted" });
|
||||
return task.run();
|
||||
}
|
||||
18
src/MaaCore/Task/Infrast/InfrastTrainingTask.h
Normal file
18
src/MaaCore/Task/Infrast/InfrastTrainingTask.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
#include "InfrastProductionTask.h"
|
||||
|
||||
namespace asst
|
||||
{
|
||||
class InfrastTrainingTask final : public InfrastProductionTask
|
||||
{
|
||||
public:
|
||||
using InfrastProductionTask::InfrastProductionTask;
|
||||
virtual ~InfrastTrainingTask() override = default;
|
||||
|
||||
protected:
|
||||
virtual bool _run() override;
|
||||
|
||||
private:
|
||||
bool training_completed();
|
||||
};
|
||||
}
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "Task/Infrast/InfrastInfoTask.h"
|
||||
#include "Task/Infrast/InfrastMfgTask.h"
|
||||
#include "Task/Infrast/InfrastOfficeTask.h"
|
||||
#include "Task/Infrast/InfrastTrainingTask.h"
|
||||
#include "Task/Infrast/InfrastPowerTask.h"
|
||||
#include "Task/Infrast/InfrastProcessingTask.h"
|
||||
#include "Task/Infrast/InfrastReceptionTask.h"
|
||||
@@ -26,6 +27,7 @@ asst::InfrastTask::InfrastTask(const AsstCallback& callback, Assistant* inst)
|
||||
m_reception_task_ptr(std::make_shared<InfrastReceptionTask>(callback, inst, TaskType)),
|
||||
m_office_task_ptr(std::make_shared<InfrastOfficeTask>(callback, inst, TaskType)),
|
||||
m_processing_task_ptr(std::make_shared<InfrastProcessingTask>(callback, inst, TaskType)),
|
||||
m_training_task_ptr(std::make_shared<InfrastTrainingTask>(callback, inst, TaskType)),
|
||||
m_dorm_task_ptr(std::make_shared<InfrastDormTask>(callback, inst, TaskType))
|
||||
{
|
||||
LogTraceFunction;
|
||||
@@ -39,6 +41,7 @@ asst::InfrastTask::InfrastTask(const AsstCallback& callback, Assistant* inst)
|
||||
m_control_task_ptr->set_ignore_error(true);
|
||||
m_reception_task_ptr->set_ignore_error(true);
|
||||
m_office_task_ptr->set_ignore_error(true);
|
||||
m_training_task_ptr->set_ignore_error(true);
|
||||
m_processing_task_ptr->set_ignore_error(true);
|
||||
m_dorm_task_ptr->set_ignore_error(true);
|
||||
|
||||
@@ -96,6 +99,9 @@ bool asst::InfrastTask::set_params(const json::value& params)
|
||||
else if (facility == "Processing") {
|
||||
m_subtasks.emplace_back(m_processing_task_ptr);
|
||||
}
|
||||
else if (facility == "Training") {
|
||||
m_subtasks.emplace_back(m_training_task_ptr);
|
||||
}
|
||||
else {
|
||||
Log.error(__FUNCTION__, "| Unknown facility", facility);
|
||||
m_subtasks.clear();
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace asst
|
||||
class InfrastControlTask;
|
||||
class InfrastReceptionTask;
|
||||
class InfrastOfficeTask;
|
||||
class InfrastTrainingTask;
|
||||
class InfrastDormTask;
|
||||
class ReplenishOriginiumShardTaskPlugin;
|
||||
class InfrastProcessingTask;
|
||||
@@ -44,6 +45,7 @@ namespace asst
|
||||
std::shared_ptr<InfrastControlTask> m_control_task_ptr = nullptr;
|
||||
std::shared_ptr<InfrastReceptionTask> m_reception_task_ptr = nullptr;
|
||||
std::shared_ptr<InfrastOfficeTask> m_office_task_ptr = nullptr;
|
||||
std::shared_ptr<InfrastTrainingTask> m_training_task_ptr = nullptr;
|
||||
std::shared_ptr<InfrastProcessingTask> m_processing_task_ptr = nullptr;
|
||||
std::shared_ptr<InfrastDormTask> m_dorm_task_ptr = nullptr;
|
||||
std::shared_ptr<ReplenishOriginiumShardTaskPlugin> m_replenish_task_ptr = nullptr;
|
||||
|
||||
@@ -11,7 +11,7 @@ bool asst::InfrastFacilityImageAnalyzer::analyze()
|
||||
const static std::unordered_map<std::string, std::string> facility_task_name = {
|
||||
{ "Dorm", "InfrastDorm" }, { "Control", "InfrastControl" }, { "Mfg", "InfrastMfg" },
|
||||
{ "Trade", "InfrastTrade" }, { "Power", "InfrastPower" }, { "Office", "InfrastOffice" },
|
||||
{ "Reception", "InfrastReception" }, { "Processing", "InfrastProcessing" },
|
||||
{ "Reception", "InfrastReception" }, { "Processing", "InfrastProcessing" }, { "Training", "InfrastTraining" }
|
||||
};
|
||||
// 因为基建的缩放是不确定的,有可能是正常大小,也可能是最小化的
|
||||
// 所以对每种情况都进行一下识别,取其中得分最高的
|
||||
|
||||
Reference in New Issue
Block a user