feat.新增支持贸易站源石碎片自动补货字段

This commit is contained in:
MistEO
2022-03-16 22:10:22 +08:00
parent 07bad47b0e
commit 4ccc3cf9ac
11 changed files with 81 additions and 2 deletions

View File

@@ -88,6 +88,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p
"drones": string, // 无人机用途,可选项,默认 _NotUse
// "_NotUse"、"Money"、"SyntheticJade"、"CombatRecord"、"PureGold"、"OriginStone"、"Chip"
"threshold": float, // 宿舍进驻心情阈值,可选,取值范围 [0, 1.0],默认 0.3
"replenish": bool, // 贸易站“源石碎片”是否自动补货,可选,默认 false
}
```

View File

@@ -1930,6 +1930,27 @@
"template": "DroneAssistTrade.png",
"action": "Stop"
},
"ReplenishToMax": {
"action": "ClickSelf",
"roi": [
882,
128,
165,
149
],
"next": [
"ReplenishToMaxConfirm"
]
},
"ReplenishToMaxConfirm": {
"action": "ClickSelf",
"roi": [
854,
504,
192,
187
]
},
"ShamareThumbnail": {
"algorithm": "JustReturn",
"action": "DoNothing",

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -12,6 +12,7 @@
#include "InfrastOfficeTask.h"
#include "InfrastDormTask.h"
#include "DronesForShamareTaskPlugin.h"
#include "ReplenishOriginiumShardTaskPlugin.h"
asst::InfrastTask::InfrastTask(AsstCallback callback, void* callback_arg)
: PackageTask(callback, callback_arg, TaskType),
@@ -27,6 +28,8 @@ asst::InfrastTask::InfrastTask(AsstCallback callback, void* callback_arg)
{
m_infrast_begin_task_ptr->set_tasks({ "InfrastBegin" });
m_trade_task_ptr->regiseter_plugin<DronesForShamareTaskPlugin>();
m_replenish_task_ptr = m_mfg_task_ptr->regiseter_plugin<ReplenishOriginiumShardTaskPlugin>();
m_subtasks.emplace_back(m_infrast_begin_task_ptr);
}
@@ -97,5 +100,8 @@ bool asst::InfrastTask::set_params(const json::value& params)
m_office_task_ptr->set_mood_threshold(threshold);
m_dorm_task_ptr->set_mood_threshold(threshold);
bool replenish = params.get("replenish", false);
m_replenish_task_ptr->set_enable(replenish);
return true;
}

View File

@@ -12,6 +12,7 @@ namespace asst
class InfrastReceptionTask;
class InfrastOfficeTask;
class InfrastDormTask;
class ReplenishOriginiumShardTaskPlugin;
class InfrastTask final : public PackageTask
{
@@ -34,5 +35,6 @@ namespace asst
std::shared_ptr<InfrastReceptionTask> m_reception_task_ptr = nullptr;
std::shared_ptr<InfrastOfficeTask> m_office_task_ptr = nullptr;
std::shared_ptr<InfrastDormTask> m_dorm_task_ptr = nullptr;
std::shared_ptr<ReplenishOriginiumShardTaskPlugin> m_replenish_task_ptr = nullptr;
};
}

View File

@@ -33,6 +33,7 @@
<ClInclude Include="MallTask.h" />
<ClInclude Include="PackageTask.h" />
<ClInclude Include="RecruitTask.h" />
<ClInclude Include="ReplenishOriginiumShardTaskPlugin.h" />
<ClInclude Include="RoguelikeBattleTaskPlugin.h" />
<ClInclude Include="CreditShopImageAnalyzer.h" />
<ClInclude Include="DronesForShamareTaskPlugin.h" />
@@ -101,6 +102,7 @@
<ClCompile Include="MallTask.cpp" />
<ClCompile Include="PackageTask.cpp" />
<ClCompile Include="RecruitTask.cpp" />
<ClCompile Include="ReplenishOriginiumShardTaskPlugin.cpp" />
<ClCompile Include="RoguelikeBattleTaskPlugin.cpp" />
<ClCompile Include="CreditShopImageAnalyzer.cpp" />
<ClCompile Include="CreditShoppingTask.cpp" />

View File

@@ -303,6 +303,9 @@
<ClInclude Include="RoguelikeSkillSelectionImageAnalyzer.h">
<Filter>头文件\ImageAnalyzer\Final</Filter>
</ClInclude>
<ClInclude Include="ReplenishOriginiumShardTaskPlugin.h">
<Filter>头文件\Task\Plugin</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Controller.cpp">
@@ -503,6 +506,9 @@
<ClCompile Include="RoguelikeSkillSelectionImageAnalyzer.cpp">
<Filter>源文件\ImageAnalyzer\Final</Filter>
</ClCompile>
<ClCompile Include="ReplenishOriginiumShardTaskPlugin.cpp">
<Filter>源文件\Task\Plugin</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\resource\config.json">

View File

@@ -0,0 +1,25 @@
#include "ReplenishOriginiumShardTaskPlugin.h"
#include "ProcessTask.h"
bool asst::ReplenishOriginiumShardTaskPlugin::verify(AsstMsg msg, const json::value& details) const
{
if (msg != AsstMsg::SubTaskExtraInfo
|| details.get("subtask", std::string()) != "InfrastMfgTask") {
return false;
}
if (details.at("what").as_string() == "ProductOfFacility"
&& details.at("details").at("product").as_string() == "OriginStone") {
return true;
}
else {
return false;
}
}
bool asst::ReplenishOriginiumShardTaskPlugin::_run()
{
ProcessTask task(*this, { "ReplenishToMax" });
return task.run();
}

View File

@@ -0,0 +1,18 @@
#pragma once
#include "AbstractTaskPlugin.h"
namespace asst
{
// 制造站“源石碎片”自动补货任务插件
class ReplenishOriginiumShardTaskPlugin : public AbstractTaskPlugin
{
public:
using AbstractTaskPlugin::AbstractTaskPlugin;
virtual ~ReplenishOriginiumShardTaskPlugin() = default;
virtual bool verify(AsstMsg msg, const json::value& details) const override;
private:
virtual bool _run() override;
};
}

View File

@@ -73,8 +73,6 @@ bool asst::StageDropsTaskPlugin::_run()
}
drop_info_callback();
auto& opt = Resrc.cfg().get_options();
if (m_enable_penguid) {
auto upload_future = std::async(
std::launch::async,