From f1cfd65beb211dc790575a9b94da6d6ef3fda33a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=96StupidBh?= <2623615250@qq.com> Date: Fri, 31 Dec 2021 22:17:55 +0800 Subject: [PATCH] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9Bwarning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/AsstCaller.h | 2 +- src/MeoAssistant/AbstractTask.cpp | 2 +- src/MeoAssistant/Assistant.cpp | 10 +- src/MeoAssistant/Assistant.h | 2 +- src/MeoAssistant/AsstCaller.cpp | 4 +- src/MeoAssistant/AsstUtils.hpp | 2 +- src/MeoAssistant/AutoRecruitTask.cpp | 4 +- src/MeoAssistant/CreditShopImageAnalyzer.cpp | 6 +- src/MeoAssistant/CreditShoppingTask.cpp | 6 +- src/MeoAssistant/InfrastAbstractTask.cpp | 52 ++-- src/MeoAssistant/InfrastClueImageAnalyzer.cpp | 4 +- .../InfrastClueVacancyImageAnalyzer.cpp | 2 +- src/MeoAssistant/InfrastDormTask.cpp | 7 +- .../InfrastFacilityImageAnalyzer.cpp | 2 +- src/MeoAssistant/InfrastInfoTask.cpp | 4 +- src/MeoAssistant/InfrastOperImageAnalyzer.cpp | 28 +- src/MeoAssistant/InfrastPowerTask.cpp | 3 +- src/MeoAssistant/InfrastProductionTask.cpp | 20 +- src/MeoAssistant/InfrastReceptionTask.cpp | 26 +- .../InfrastSmileyImageAnalyzer.cpp | 4 +- src/MeoAssistant/MeoAssistant.vcxproj | 4 +- src/MeoAssistant/ProcessTask.cpp | 6 +- src/MeoAssistant/ProcessTaskImageAnalyzer.cpp | 4 +- src/MeoAssistant/RecruitImageAnalyzer.cpp | 10 +- src/MeoAssistant/Resource.cpp | 8 +- src/MeoAssistant/RuntimeStatus.h | 4 +- src/MeoAssistant/TaskData.h | 2 +- src/MeoAsstGui/Helper/AsstProxy.cs | 286 +++++++++--------- src/MeoAsstGui/Helper/ViewStatusStorage.cs | 112 +++---- src/MeoAsstGui/ViewModels/RecruitViewModel.cs | 256 ++++++++-------- src/MeoAsstGui/ViewModels/RootViewModel.cs | 104 +++---- .../ViewModels/SettingsViewModel.cs | 2 +- .../ViewModels/VersionUpdateViewModel.cs | 244 +++++++-------- 33 files changed, 615 insertions(+), 617 deletions(-) diff --git a/include/AsstCaller.h b/include/AsstCaller.h index 90c5e884a1..f517690a5d 100644 --- a/include/AsstCaller.h +++ b/include/AsstCaller.h @@ -25,7 +25,7 @@ extern "C" { bool ASSTAPI AsstAppendAward(asst::Assistant* p_asst); bool ASSTAPI AsstAppendVisit(asst::Assistant* p_asst); bool ASSTAPI AsstAppendMall(asst::Assistant* p_asst, bool with_shopping); - //bool ASSTAPI AsstAppendProcessTask(asst::Assistant* p_asst, const char* task); + //bool ASSTAPI AsstAppendProcessTask(asst::Assistant* p_asst, const char* task_name); bool ASSTAPI AsstAppendInfrast(asst::Assistant* p_asst, int work_mode, const char** order, int order_size, const char* uses_of_drones, double dorm_threshold); bool ASSTAPI AsstAppendRecruit(asst::Assistant* p_asst, int max_times, const int select_level[], int select_len, const int confirm_level[], int confirm_len, bool need_refresh); bool ASSTAPI AsstAppendDebug(asst::Assistant* p_asst); diff --git a/src/MeoAssistant/AbstractTask.cpp b/src/MeoAssistant/AbstractTask.cpp index 69879f1ff7..1834c62a89 100644 --- a/src/MeoAssistant/AbstractTask.cpp +++ b/src/MeoAssistant/AbstractTask.cpp @@ -90,7 +90,7 @@ bool asst::AbstractTask::need_exit() const void asst::AbstractTask::click_return_button() { LogTraceFunction; - const auto return_task_ptr = task.get("Return"); + const auto return_task_ptr = Task.get("Return"); Rect ReturnButtonRect = return_task_ptr->specific_rect; diff --git a/src/MeoAssistant/Assistant.cpp b/src/MeoAssistant/Assistant.cpp index 3453c06120..42b1d232a6 100644 --- a/src/MeoAssistant/Assistant.cpp +++ b/src/MeoAssistant/Assistant.cpp @@ -265,7 +265,7 @@ bool asst::Assistant::append_mall(bool with_shopping, bool only_append) return true; } -bool Assistant::append_process_task(const std::string& task, std::string task_chain, int retry_times) +bool Assistant::append_process_task(const std::string& task_name, std::string task_chain, int retry_times) { LogTraceFunction; if (!m_inited) { @@ -275,12 +275,12 @@ bool Assistant::append_process_task(const std::string& task, std::string task_ch //std::unique_lock lock(m_mutex); if (task_chain.empty()) { - task_chain = task; + task_chain = task_name; } auto task_ptr = std::make_shared(task_callback, (void*)this); task_ptr->set_task_chain(task_chain); - task_ptr->set_tasks({ task }); + task_ptr->set_tasks({ task_name }); task_ptr->set_retry_times(retry_times); m_tasks_queue.emplace(task_ptr); @@ -612,9 +612,9 @@ void asst::Assistant::append_callback(AsstMsg msg, json::value detail) void Assistant::clear_cache() { - status.clear(); + Status.clear(); Resrc.item().clear_drop_count(); - //task.clear_cache(); + //Task.clear_cache(); } json::value asst::Assistant::organize_stage_drop(const json::value& rec) diff --git a/src/MeoAssistant/Assistant.h b/src/MeoAssistant/Assistant.h index ee81b4af3d..7fb3cbacf1 100644 --- a/src/MeoAssistant/Assistant.h +++ b/src/MeoAssistant/Assistant.h @@ -85,7 +85,7 @@ namespace asst void msg_proc(); static void task_callback(AsstMsg msg, const json::value& detail, void* custom_arg); - bool append_process_task(const std::string& task, std::string task_chain = std::string(), int retry_times = ProcessTaskRetryTimesDefault); + bool append_process_task(const std::string& task_name, std::string task_chain = std::string(), int retry_times = ProcessTaskRetryTimesDefault); void append_callback(AsstMsg msg, json::value detail); void clear_cache(); json::value organize_stage_drop(const json::value& rec); // 整理关卡掉落的材料信息 diff --git a/src/MeoAssistant/AsstCaller.cpp b/src/MeoAssistant/AsstCaller.cpp index 3f00b85413..e2b56e9fad 100644 --- a/src/MeoAssistant/AsstCaller.cpp +++ b/src/MeoAssistant/AsstCaller.cpp @@ -162,13 +162,13 @@ bool AsstAppendMall(asst::Assistant* p_asst, bool with_shopping) return p_asst->append_mall(with_shopping); } -//bool AsstAppendProcessTask(asst::Assistant* p_asst, const char* task) +//bool AsstAppendProcessTask(asst::Assistant* p_asst, const char* task_name) //{ // if (p_asst == nullptr) { // return false; // } // -// return p_asst->append_process_task(task); +// return p_asst->append_process_task(task_name); //} bool AsstStartRecruitCalc(asst::Assistant* p_asst, const int select_level[], int required_len, bool set_time) diff --git a/src/MeoAssistant/AsstUtils.hpp b/src/MeoAssistant/AsstUtils.hpp index b7356d6cbe..720a6982cc 100644 --- a/src/MeoAssistant/AsstUtils.hpp +++ b/src/MeoAssistant/AsstUtils.hpp @@ -207,7 +207,7 @@ namespace asst } } while (::WaitForSingleObject(pi.hProcess, 0) == WAIT_TIMEOUT); - DWORD exit_ret = -1; + DWORD exit_ret = 255; ::GetExitCodeProcess(pi.hProcess, &exit_ret); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); diff --git a/src/MeoAssistant/AutoRecruitTask.cpp b/src/MeoAssistant/AutoRecruitTask.cpp index 1c8fb2cbf6..ac67b9a5e1 100644 --- a/src/MeoAssistant/AutoRecruitTask.cpp +++ b/src/MeoAssistant/AutoRecruitTask.cpp @@ -39,7 +39,7 @@ bool asst::AutoRecruitTask::_run() auto image = Ctrler.get_image(); OcrImageAnalyzer start_analyzer(image); - const auto start_task_ptr = std::dynamic_pointer_cast(task.get("StartRecruit")); + const auto start_task_ptr = std::dynamic_pointer_cast(Task.get("StartRecruit")); start_analyzer.set_task_info(*start_task_ptr); if (!start_analyzer.analyze()) { @@ -93,4 +93,4 @@ bool asst::AutoRecruitTask::_run() } } return true; -} +} \ No newline at end of file diff --git a/src/MeoAssistant/CreditShopImageAnalyzer.cpp b/src/MeoAssistant/CreditShopImageAnalyzer.cpp index 390f1886ea..3c14458359 100644 --- a/src/MeoAssistant/CreditShopImageAnalyzer.cpp +++ b/src/MeoAssistant/CreditShopImageAnalyzer.cpp @@ -19,7 +19,7 @@ bool asst::CreditShopImageAnalyzer::analyze() bool asst::CreditShopImageAnalyzer::commoditys_analyze() { const auto commodity_task_ptr = std::dynamic_pointer_cast( - task.get("CreditShop-Commoditys")); + Task.get("CreditShop-Commoditys")); // 识别信用点的图标 MultiMatchImageAnalyzer mm_annlyzer(m_image); @@ -50,7 +50,7 @@ bool asst::CreditShopImageAnalyzer::commoditys_analyze() bool asst::CreditShopImageAnalyzer::whether_to_buy_analyze() { const auto not_to_buy_task_ptr = std::dynamic_pointer_cast( - task.get("CreditShop-NotToBuy")); + Task.get("CreditShop-NotToBuy")); for (const Rect& commodity : m_commoditys) { // 商品名的区域 @@ -77,7 +77,7 @@ bool asst::CreditShopImageAnalyzer::whether_to_buy_analyze() bool asst::CreditShopImageAnalyzer::sold_out_analyze() { const auto sold_out_task_ptr = std::dynamic_pointer_cast( - task.get("CreditShop-SoldOut")); + Task.get("CreditShop-SoldOut")); // 识别是否售罄 MatchImageAnalyzer sold_out_analyzer(m_image); diff --git a/src/MeoAssistant/CreditShoppingTask.cpp b/src/MeoAssistant/CreditShoppingTask.cpp index 257cd57724..2b22825100 100644 --- a/src/MeoAssistant/CreditShoppingTask.cpp +++ b/src/MeoAssistant/CreditShoppingTask.cpp @@ -42,7 +42,7 @@ bool asst::CreditShoppingTask::_run() static Rect buy_it_rect; if (buy_it_rect.empty()) { const auto buy_it_task_ptr = std::dynamic_pointer_cast( - task.get("CreditShop-BuyIt")); + Task.get("CreditShop-BuyIt")); const cv::Mat buy_image = Ctrler.get_image(); MatchImageAnalyzer buy_it_analyzer(buy_image); @@ -66,7 +66,7 @@ bool asst::CreditShoppingTask::_run() const cv::Mat prompt_image = Ctrler.get_image(); const auto no_money_task_ptr = std::dynamic_pointer_cast( - task.get("CreditShop-NoMoney")); + Task.get("CreditShop-NoMoney")); OcrImageAnalyzer prompt_analyzer(prompt_image); prompt_analyzer.set_task_info(*no_money_task_ptr); if (prompt_analyzer.analyze()) { @@ -80,4 +80,4 @@ bool asst::CreditShoppingTask::_run() } return true; -} +} \ No newline at end of file diff --git a/src/MeoAssistant/InfrastAbstractTask.cpp b/src/MeoAssistant/InfrastAbstractTask.cpp index b6ef236ac5..a06919f64e 100644 --- a/src/MeoAssistant/InfrastAbstractTask.cpp +++ b/src/MeoAssistant/InfrastAbstractTask.cpp @@ -17,11 +17,11 @@ asst::InfrastAbstractTask::InfrastAbstractTask(AsstCallback callback, void* call { if (m_face_hash_thres == 0) { m_face_hash_thres = std::dynamic_pointer_cast( - task.get("InfrastOperFaceHash"))->templ_threshold; + Task.get("InfrastOperFaceHash"))->templ_threshold; } if (m_name_hash_thres == 0) { m_name_hash_thres = std::dynamic_pointer_cast( - task.get("InfrastOperNameHash"))->templ_threshold; + Task.get("InfrastOperNameHash"))->templ_threshold; } } @@ -83,7 +83,7 @@ bool asst::InfrastAbstractTask::enter_facility(const std::string& facility, int Ctrler.click(rect); - const auto enter_task_ptr = task.get("InfrastEnterFacility"); + const auto enter_task_ptr = Task.get("InfrastEnterFacility"); sleep(enter_task_ptr->rear_delay); return true; @@ -97,7 +97,7 @@ bool asst::InfrastAbstractTask::enter_oper_list_page() // 识别左边的“进驻”按钮 const auto enter_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastEnterOperList")); + Task.get("InfrastEnterOperList")); OcrImageAnalyzer enter_analyzer(image); enter_analyzer.set_task_info(*enter_task_ptr); @@ -107,7 +107,7 @@ bool asst::InfrastAbstractTask::enter_oper_list_page() OcrImageAnalyzer station_analyzer(image); const auto stationedinfo_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastStationedInfo")); + Task.get("InfrastStationedInfo")); station_analyzer.set_task_info(*stationedinfo_task_ptr); if (station_analyzer.analyze()) { Log.trace("the stationed info button found"); @@ -136,9 +136,9 @@ bool asst::InfrastAbstractTask::enter_oper_list_page() void asst::InfrastAbstractTask::async_swipe_of_operlist(bool reverse) { LogTraceFunction; - static Rect begin_rect = task.get("InfrastOperListSwipeBegin")->specific_rect; - static Rect end_rect = task.get("InfrastOperListSwipeEnd")->specific_rect; - static int duration = task.get("InfrastOperListSwipeBegin")->pre_delay; + static Rect begin_rect = Task.get("InfrastOperListSwipeBegin")->specific_rect; + static Rect end_rect = Task.get("InfrastOperListSwipeEnd")->specific_rect; + static int duration = Task.get("InfrastOperListSwipeBegin")->pre_delay; if (!reverse) { m_last_swipe_id = Ctrler.swipe(begin_rect, end_rect, duration, false, 0, true); @@ -151,7 +151,7 @@ void asst::InfrastAbstractTask::async_swipe_of_operlist(bool reverse) void asst::InfrastAbstractTask::await_swipe() { LogTraceFunction; - static int extra_delay = task.get("InfrastOperListSwipeBegin")->rear_delay; + static int extra_delay = Task.get("InfrastOperListSwipeBegin")->rear_delay; Ctrler.wait(m_last_swipe_id); sleep(extra_delay); @@ -160,7 +160,7 @@ void asst::InfrastAbstractTask::await_swipe() bool asst::InfrastAbstractTask::click_bottomleft_tab() { LogTraceFunction; - const auto task_ptr = task.get("InfrastBottomLeftTab"); + const auto task_ptr = Task.get("InfrastBottomLeftTab"); Ctrler.click(task_ptr->specific_rect); sleep(task_ptr->rear_delay); return true; @@ -169,7 +169,7 @@ bool asst::InfrastAbstractTask::click_bottomleft_tab() bool asst::InfrastAbstractTask::click_clear_button() { LogTraceFunction; - const auto task_ptr = task.get("InfrastClearButton"); + const auto task_ptr = Task.get("InfrastClearButton"); Ctrler.click(task_ptr->specific_rect); sleep(task_ptr->rear_delay); return true; @@ -179,7 +179,7 @@ bool asst::InfrastAbstractTask::click_confirm_button() { LogTraceFunction; const auto task_ptr = std::dynamic_pointer_cast( - task.get("InfrastConfirmButton")); + Task.get("InfrastConfirmButton")); Ctrler.click(task_ptr->specific_rect); sleep(task_ptr->rear_delay); @@ -210,11 +210,11 @@ void asst::InfrastAbstractTask::swipe_of_operlist(bool reverse) void asst::InfrastAbstractTask::swipe_to_the_left_of_operlist(int loop_times) { LogTraceFunction; - static Rect begin_rect = task.get("InfrastOperListSwipeToTheLeftBegin")->specific_rect; - static Rect end_rect = task.get("InfrastOperListSwipeToTheLeftEnd")->specific_rect; - static int duration = task.get("InfrastOperListSwipeToTheLeftBegin")->pre_delay; - static int extra_delay = task.get("InfrastOperListSwipeToTheLeftBegin")->rear_delay; - static int cfg_loop_times = task.get("InfrastOperListSwipeToTheLeftBegin")->max_times; + static Rect begin_rect = Task.get("InfrastOperListSwipeToTheLeftBegin")->specific_rect; + static Rect end_rect = Task.get("InfrastOperListSwipeToTheLeftEnd")->specific_rect; + static int duration = Task.get("InfrastOperListSwipeToTheLeftBegin")->pre_delay; + static int extra_delay = Task.get("InfrastOperListSwipeToTheLeftBegin")->rear_delay; + static int cfg_loop_times = Task.get("InfrastOperListSwipeToTheLeftBegin")->max_times; for (int i = 0; i != cfg_loop_times * loop_times; ++i) { if (need_exit()) { @@ -228,10 +228,10 @@ void asst::InfrastAbstractTask::swipe_to_the_left_of_operlist(int loop_times) void asst::InfrastAbstractTask::swipe_to_the_left_of_main_ui() { LogTraceFunction; - static Rect begin_rect = task.get("InfrastOperListSwipeToTheLeftBegin")->specific_rect; - static Rect end_rect = task.get("InfrastOperListSwipeToTheLeftEnd")->specific_rect; - static int duration = task.get("InfrastOperListSwipeToTheLeftBegin")->pre_delay; - static int extra_delay = task.get("InfrastOperListSwipeToTheLeftBegin")->rear_delay; + static Rect begin_rect = Task.get("InfrastOperListSwipeToTheLeftBegin")->specific_rect; + static Rect end_rect = Task.get("InfrastOperListSwipeToTheLeftEnd")->specific_rect; + static int duration = Task.get("InfrastOperListSwipeToTheLeftBegin")->pre_delay; + static int extra_delay = Task.get("InfrastOperListSwipeToTheLeftBegin")->rear_delay; Ctrler.swipe(end_rect, begin_rect, duration, true, extra_delay, false); } @@ -239,10 +239,10 @@ void asst::InfrastAbstractTask::swipe_to_the_left_of_main_ui() void asst::InfrastAbstractTask::swipe_to_the_right_of_main_ui() { LogTraceFunction; - static Rect begin_rect = task.get("InfrastOperListSwipeToTheLeftBegin")->specific_rect; - static Rect end_rect = task.get("InfrastOperListSwipeToTheLeftEnd")->specific_rect; - static int duration = task.get("InfrastOperListSwipeToTheLeftBegin")->pre_delay; - static int extra_delay = task.get("InfrastOperListSwipeToTheLeftBegin")->rear_delay; + static Rect begin_rect = Task.get("InfrastOperListSwipeToTheLeftBegin")->specific_rect; + static Rect end_rect = Task.get("InfrastOperListSwipeToTheLeftEnd")->specific_rect; + static int duration = Task.get("InfrastOperListSwipeToTheLeftBegin")->pre_delay; + static int extra_delay = Task.get("InfrastOperListSwipeToTheLeftBegin")->rear_delay; Ctrler.swipe(begin_rect, end_rect, duration, true, extra_delay, false); -} +} \ No newline at end of file diff --git a/src/MeoAssistant/InfrastClueImageAnalyzer.cpp b/src/MeoAssistant/InfrastClueImageAnalyzer.cpp index 987f9c8a79..98e42fd288 100644 --- a/src/MeoAssistant/InfrastClueImageAnalyzer.cpp +++ b/src/MeoAssistant/InfrastClueImageAnalyzer.cpp @@ -17,7 +17,7 @@ bool asst::InfrastClueImageAnalyzer::clue_detect() { MultiMatchImageAnalyzer clue_analyzer(m_image); const auto task_ptr = std::dynamic_pointer_cast( - task.get("InfrastClue")); + Task.get("InfrastClue")); clue_analyzer.set_task_info(*task_ptr); clue_analyzer.set_roi(m_roi); // 该任务以外部设置的roi为准 if (!clue_analyzer.analyze()) { @@ -35,4 +35,4 @@ bool asst::InfrastClueImageAnalyzer::clue_analyze() { // todo return false; -} +} \ No newline at end of file diff --git a/src/MeoAssistant/InfrastClueVacancyImageAnalyzer.cpp b/src/MeoAssistant/InfrastClueVacancyImageAnalyzer.cpp index 6ee03abfad..f10d007c5e 100644 --- a/src/MeoAssistant/InfrastClueVacancyImageAnalyzer.cpp +++ b/src/MeoAssistant/InfrastClueVacancyImageAnalyzer.cpp @@ -12,7 +12,7 @@ bool asst::InfrastClueVacancyImageAnalyzer::analyze() MatchImageAnalyzer analyzer(m_image); for (const std::string& suffix : m_to_be_analyzed) { const auto task_ptr = std::dynamic_pointer_cast( - task.get(clue_vacancy + suffix)); + Task.get(clue_vacancy + suffix)); analyzer.set_task_info(*task_ptr); if (!analyzer.analyze()) { Log.trace("no", clue_vacancy, suffix); diff --git a/src/MeoAssistant/InfrastDormTask.cpp b/src/MeoAssistant/InfrastDormTask.cpp index b450f6ffa1..3fe71d2355 100644 --- a/src/MeoAssistant/InfrastDormTask.cpp +++ b/src/MeoAssistant/InfrastDormTask.cpp @@ -92,7 +92,6 @@ bool asst::InfrastDormTask::opers_choose() default: break; } - } if (num_of_selected >= MaxNumOfOpers) { Log.trace("num_of_selected:", num_of_selected, ", just break"); @@ -108,7 +107,7 @@ bool asst::InfrastDormTask::opers_choose() // LogTraceFunction; // // const auto task_ptr = std::dynamic_pointer_cast( -// task.get("InfrastConfirmButton")); +// Task.get("InfrastConfirmButton")); // Ctrler.click(task_ptr->specific_rect); // sleep(task_ptr->rear_delay); // @@ -116,7 +115,7 @@ bool asst::InfrastDormTask::opers_choose() // const auto image = Ctrler.get_image(); // MatchImageAnalyzer cfm_analyzer(image); // const auto sec_cfm_task_ptr = std::dynamic_pointer_cast( -// task.get("InfrastDormConfirmButton")); +// Task.get("InfrastDormConfirmButton")); // cfm_analyzer.set_task_info(*sec_cfm_task_ptr); // if (cfm_analyzer.analyze()) { // Ctrler.click(cfm_analyzer.get_result().rect); @@ -139,4 +138,4 @@ bool asst::InfrastDormTask::opers_choose() // sleep(sec_cfm_task_ptr->rear_delay); // } // return false; -//} +//} \ No newline at end of file diff --git a/src/MeoAssistant/InfrastFacilityImageAnalyzer.cpp b/src/MeoAssistant/InfrastFacilityImageAnalyzer.cpp index 5f30f97d2b..425170bb89 100644 --- a/src/MeoAssistant/InfrastFacilityImageAnalyzer.cpp +++ b/src/MeoAssistant/InfrastFacilityImageAnalyzer.cpp @@ -25,7 +25,7 @@ bool asst::InfrastFacilityImageAnalyzer::analyze() auto task_analyze = [&](const std::string& task_name) -> bool { const auto task_ptr = std::dynamic_pointer_cast( - task.get(task_name)); + Task.get(task_name)); mm_analyzer.set_task_info(*task_ptr); return mm_analyzer.analyze(); diff --git a/src/MeoAssistant/InfrastInfoTask.cpp b/src/MeoAssistant/InfrastInfoTask.cpp index 110863fa59..dc04234a2a 100644 --- a/src/MeoAssistant/InfrastInfoTask.cpp +++ b/src/MeoAssistant/InfrastInfoTask.cpp @@ -25,9 +25,9 @@ bool asst::InfrastInfoTask::_run() for (auto&& [name, res] : analyzer.get_result()) { std::string key = "NumOf" + name; //int size = static_cast(res.size()); - status.set(key, res.size()); + Status.set(key, res.size()); Log.trace("InfrastInfoTask | ", key, res.size()); } return true; -} +} \ No newline at end of file diff --git a/src/MeoAssistant/InfrastOperImageAnalyzer.cpp b/src/MeoAssistant/InfrastOperImageAnalyzer.cpp index 74a8009e56..b2d59c118c 100644 --- a/src/MeoAssistant/InfrastOperImageAnalyzer.cpp +++ b/src/MeoAssistant/InfrastOperImageAnalyzer.cpp @@ -80,13 +80,13 @@ void asst::InfrastOperImageAnalyzer::oper_detect() { LogTraceFunction; - const Rect upper_roi = task.get("InfrastSkillsUpper")->roi; - const Rect lower_roi = task.get("InfrastSkillsLower")->roi; + const Rect upper_roi = Task.get("InfrastSkillsUpper")->roi; + const Rect lower_roi = Task.get("InfrastSkillsLower")->roi; const std::vector all_roi = { upper_roi, lower_roi }; - const Rect skill_rect_move = task.get("InfrastSkills")->rect_move; - const Rect hash_rect_move = task.get("InfrastOperNameHash")->rect_move; - const Rect prg_rect_move = task.get("InfrastOperMoodProgressBar")->roi; + const Rect skill_rect_move = Task.get("InfrastSkills")->rect_move; + const Rect hash_rect_move = Task.get("InfrastOperNameHash")->rect_move; + const Rect prg_rect_move = Task.get("InfrastOperMoodProgressBar")->roi; const std::vector all_rect_move = { skill_rect_move, hash_rect_move, prg_rect_move }; InfrastSmileyImageAnalyzer smiley_analyzer(m_image); @@ -130,7 +130,7 @@ void asst::InfrastOperImageAnalyzer::mood_analyze() LogTraceFunction; const auto prg_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastOperMoodProgressBar")); + Task.get("InfrastOperMoodProgressBar")); int prg_lower_limit = prg_task_ptr->templ_threshold; int prg_diff_thres = prg_task_ptr->special_threshold; Rect rect_move = prg_task_ptr->rect_move; @@ -206,7 +206,7 @@ void asst::InfrastOperImageAnalyzer::face_hash_analyze() { LogTraceFunction; - const Rect hash_rect_move = task.get("InfrastOperFaceHash")->rect_move; + const Rect hash_rect_move = Task.get("InfrastOperFaceHash")->rect_move; for (auto&& oper : m_result) { Rect roi = hash_rect_move; @@ -222,7 +222,7 @@ void asst::InfrastOperImageAnalyzer::name_hash_analyze() { LogTraceFunction; - const Rect hash_rect_move = task.get("InfrastOperNameHash")->rect_move; + const Rect hash_rect_move = Task.get("InfrastOperNameHash")->rect_move; cv::Mat gray; cv::cvtColor(m_image, gray, cv::COLOR_BGR2GRAY); @@ -267,7 +267,7 @@ void asst::InfrastOperImageAnalyzer::skill_analyze() LogTraceFunction; const auto task_ptr = std::dynamic_pointer_cast( - task.get("InfrastSkills")); + Task.get("InfrastSkills")); const auto bright_thres = task_ptr->special_threshold; MatchImageAnalyzer skill_analyzer(m_image); @@ -348,9 +348,9 @@ void asst::InfrastOperImageAnalyzer::skill_analyze() std::string base_id = max_iter->first.id; size_t level_pos = 0; // 倒着找,第一个不是数字的。前面就是技能基础id名字,后面的数字就是技能等级 - for (size_t i = base_id.size() - 1; i != 0; --i) { - if (!std::isdigit(base_id.at(i))) { - level_pos = i + 1; + for (size_t j = base_id.size() - 1; j != 0; --j) { + if (!std::isdigit(base_id.at(j))) { + level_pos = j + 1; break; } } @@ -387,7 +387,7 @@ void asst::InfrastOperImageAnalyzer::selected_analyze() LogTraceFunction; const auto selected_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastOperSelected")); + Task.get("InfrastOperSelected")); Rect rect_move = selected_task_ptr->rect_move; for (auto&& oper : m_result) { @@ -424,7 +424,7 @@ void asst::InfrastOperImageAnalyzer::doing_analyze() LogTraceFunction; const auto working_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastOperOnShift")); + Task.get("InfrastOperOnShift")); Rect rect_move = working_task_ptr->rect_move; MatchImageAnalyzer working_analyzer(m_image); diff --git a/src/MeoAssistant/InfrastPowerTask.cpp b/src/MeoAssistant/InfrastPowerTask.cpp index 4c83ff6db0..75e49d56cb 100644 --- a/src/MeoAssistant/InfrastPowerTask.cpp +++ b/src/MeoAssistant/InfrastPowerTask.cpp @@ -32,8 +32,7 @@ bool asst::InfrastPowerTask::_run() return false; } - for (int i = 0; i <= OperSelectRetryTimes; ++i) { - + for (int j = 0; j <= OperSelectRetryTimes; ++j) { if (m_all_available_opers.empty()) { if (!opers_detect_with_swipe()) { return false; diff --git a/src/MeoAssistant/InfrastProductionTask.cpp b/src/MeoAssistant/InfrastProductionTask.cpp index cbd5984e4f..88578c0da0 100644 --- a/src/MeoAssistant/InfrastProductionTask.cpp +++ b/src/MeoAssistant/InfrastProductionTask.cpp @@ -24,14 +24,14 @@ bool asst::InfrastProductionTask::shift_facility_list() return false; } const auto tab_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastFacilityListTab" + m_facility)); + Task.get("InfrastFacilityListTab" + m_facility)); MatchImageAnalyzer add_analyzer; const auto add_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastAddOperator" + m_facility + m_work_mode_name)); + Task.get("InfrastAddOperator" + m_facility + m_work_mode_name)); add_analyzer.set_task_info(*add_task_ptr); const auto locked_task_ptr = std::dynamic_pointer_cast( - task.get("InfrastOperLocked" + m_facility)); + Task.get("InfrastOperLocked" + m_facility)); MultiMatchImageAnalyzer locked_analyzer; locked_analyzer.set_task_info(*locked_task_ptr); @@ -78,7 +78,7 @@ bool asst::InfrastProductionTask::shift_facility_list() for (const std::string& product : all_products) { const static std::string prefix = "InfrastFlag"; const auto task_ptr = std::dynamic_pointer_cast( - task.get(prefix + product)); + Task.get(prefix + product)); product_analyzer.set_task_info(*task_ptr); if (product_analyzer.analyze()) { double score = product_analyzer.get_result().score; @@ -303,11 +303,11 @@ bool asst::InfrastProductionTask::optimal_calc() // 条件判断,不符合的直接过滤掉 bool meet_condition = true; for (const auto& [cond, cond_value] : group.conditions) { - if (!status.exist(cond)) { + if (!Status.exist(cond)) { continue; } // TODO:这里做成除了不等于,还可计算大于、小于等不同条件的 - int cur_value = status.get(cond); + int cur_value = Status.get(cond); if (cur_value != cond_value) { meet_condition = false; break; @@ -564,8 +564,8 @@ bool asst::InfrastProductionTask::opers_choose() bool asst::InfrastProductionTask::use_drone() { std::string task_name = "DroneAssist" + m_facility; - ProcessTask task(*this, { task_name }); - return task.run(); + ProcessTask task_temp(*this, { task_name }); + return task_temp.run(); } asst::infrast::SkillsComb @@ -587,7 +587,7 @@ asst::InfrastProductionTask::efficient_regex_calc( // TODO 报错! } std::string status_key = cur_formula.substr(pos + 1, rp_pos - pos - 1); - int status_value = status.get(status_key); + int status_value = Status.get(status_key); cur_formula.replace(pos, rp_pos - pos + 1, std::to_string(status_value)); } @@ -606,7 +606,7 @@ bool asst::InfrastProductionTask::facility_list_detect() MultiMatchImageAnalyzer mm_analyzer(image); const auto task_ptr = std::dynamic_pointer_cast( - task.get("InfrastFacilityListTab" + m_facility)); + Task.get("InfrastFacilityListTab" + m_facility)); mm_analyzer.set_task_info(*task_ptr); if (!mm_analyzer.analyze()) { diff --git a/src/MeoAssistant/InfrastReceptionTask.cpp b/src/MeoAssistant/InfrastReceptionTask.cpp index 879e14f06d..195ad78d6e 100644 --- a/src/MeoAssistant/InfrastReceptionTask.cpp +++ b/src/MeoAssistant/InfrastReceptionTask.cpp @@ -47,7 +47,7 @@ bool asst::InfrastReceptionTask::_run() bool asst::InfrastReceptionTask::close_end_prompt() { const auto end_task_ptr = std::dynamic_pointer_cast( - task.get("EndOfClueExchange")); + Task.get("EndOfClueExchange")); MatchImageAnalyzer analyzer(Ctrler.get_image()); analyzer.set_task_info(*end_task_ptr); if (!analyzer.analyze()) { @@ -62,9 +62,9 @@ bool asst::InfrastReceptionTask::harvest_clue() { LogTraceFunction; - ProcessTask task(*this, { "InfrastClueNew" }); - task.set_retry_times(5); - return task.run(); + ProcessTask task_temp(*this, { "InfrastClueNew" }); + task_temp.set_retry_times(5); + return task_temp.run(); } bool asst::InfrastReceptionTask::proc_clue() @@ -81,7 +81,7 @@ bool asst::InfrastReceptionTask::proc_clue() cv::Mat image = Ctrler.get_image(); MatchImageAnalyzer unlock_analyzer(image); const auto unlock_task_ptr = std::dynamic_pointer_cast( - task.get("UnlockClues")); + Task.get("UnlockClues")); unlock_analyzer.set_task_info(*unlock_task_ptr); if (unlock_analyzer.analyze()) { Ctrler.click(unlock_analyzer.get_result().rect); @@ -136,7 +136,7 @@ bool asst::InfrastReceptionTask::proc_vacancy() // 点开线索的空位 Rect vacancy = vacancy_analyzer.get_vacancy().cbegin()->second; Ctrler.click(vacancy); - int delay = task.get(clue_vacancy + clue)->rear_delay; + int delay = Task.get(clue_vacancy + clue)->rear_delay; sleep(delay); // 识别右边列表中的线索,然后用最底下的那个(一般都是剩余时间最短的) @@ -158,7 +158,7 @@ bool asst::InfrastReceptionTask::shift() const auto image = Ctrler.get_image(); MatchImageAnalyzer add_analyzer(image); - const auto raw_task_ptr = task.get("InfrastAddOperator" + m_facility + m_work_mode_name); + const auto raw_task_ptr = Task.get("InfrastAddOperator" + m_facility + m_work_mode_name); switch (raw_task_ptr->algorithm) { case AlgorithmType::JustReturn: if (raw_task_ptr->action == ProcessTaskAction::ClickRect) { @@ -206,15 +206,15 @@ bool asst::InfrastReceptionTask::shift() bool asst::InfrastReceptionTask::swipe_to_the_bottom_of_clue_list_on_the_right() { LogTraceFunction; - static Rect begin_rect = task.get("InfrastClueOnTheRightSwipeBegin")->specific_rect; - static Rect end_rect = task.get("InfrastClueOnTheRightSwipeEnd")->specific_rect; - static int duration = task.get("InfrastClueOnTheRightSwipeBegin")->pre_delay; - static int extra_delay = task.get("InfrastClueOnTheRightSwipeBegin")->rear_delay; - static int loop_times = task.get("InfrastClueOnTheRightSwipeBegin")->max_times; + static Rect begin_rect = Task.get("InfrastClueOnTheRightSwipeBegin")->specific_rect; + static Rect end_rect = Task.get("InfrastClueOnTheRightSwipeEnd")->specific_rect; + static int duration = Task.get("InfrastClueOnTheRightSwipeBegin")->pre_delay; + static int extra_delay = Task.get("InfrastClueOnTheRightSwipeBegin")->rear_delay; + static int loop_times = Task.get("InfrastClueOnTheRightSwipeBegin")->max_times; for (int i = 0; i != loop_times; ++i) { Ctrler.swipe(begin_rect, end_rect, duration, true, 0, false); } sleep(extra_delay); return false; -} +} \ No newline at end of file diff --git a/src/MeoAssistant/InfrastSmileyImageAnalyzer.cpp b/src/MeoAssistant/InfrastSmileyImageAnalyzer.cpp index ce6a83eaf6..6a8b504c01 100644 --- a/src/MeoAssistant/InfrastSmileyImageAnalyzer.cpp +++ b/src/MeoAssistant/InfrastSmileyImageAnalyzer.cpp @@ -18,7 +18,7 @@ bool asst::InfrastSmileyImageAnalyzer::analyze() decltype(m_result) temp_result; for (const auto& [type, task_name] : smiley_map) { - const auto task_ptr = std::dynamic_pointer_cast(task.get(task_name)); + const auto task_ptr = std::dynamic_pointer_cast(Task.get(task_name)); mm_analyzer.set_task_info(*task_ptr); mm_analyzer.set_roi(m_roi); if (!mm_analyzer.analyze()) { @@ -34,4 +34,4 @@ bool asst::InfrastSmileyImageAnalyzer::analyze() } m_result = std::move(temp_result); return true; -} \ No newline at end of file +} diff --git a/src/MeoAssistant/MeoAssistant.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj index dbce9b09c4..bf071be629 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj +++ b/src/MeoAssistant/MeoAssistant.vcxproj @@ -162,7 +162,7 @@ - Level3 + Level4 true true true @@ -204,7 +204,7 @@ xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - Level3 + Level4 false diff --git a/src/MeoAssistant/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp index 8d0cad5e0d..a30369b848 100644 --- a/src/MeoAssistant/ProcessTask.cpp +++ b/src/MeoAssistant/ProcessTask.cpp @@ -41,7 +41,7 @@ bool ProcessTask::_run() } Rect rect; // 如果第一个任务是JustReturn的,那就没必要再截图并计算了 - if (auto front_task_ptr = task.get(m_cur_tasks_name.front()); + if (auto front_task_ptr = Task.get(m_cur_tasks_name.front()); front_task_ptr->algorithm == AlgorithmType::JustReturn) { m_cur_task_ptr = front_task_ptr; } @@ -140,7 +140,7 @@ bool ProcessTask::_run() ++exec_times; - status.set("Last" + cur_name, time(NULL)); + Status.set("Last" + cur_name, time(NULL)); // 减少其他任务的执行次数 // 例如,进入吃理智药的界面了,相当于上一次点蓝色开始行动没生效 @@ -186,7 +186,7 @@ void asst::ProcessTask::exec_stage_drops() m_callback(AsstMsg::StageDrops, json::parse(res).value(), m_callback_arg); if (m_rear_delay.find("StartButton2") == m_rear_delay.cend()) { - int64_t start_times = status.get("LastStartButton2"); + int64_t start_times = Status.get("LastStartButton2"); if (start_times > 0) { int64_t duration = time(NULL) - start_times; int64_t delay = duration * 1000 - m_cur_task_ptr->rear_delay; diff --git a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp index 5ec09be3b7..eea31a1b8e 100644 --- a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp +++ b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp @@ -96,7 +96,7 @@ bool asst::ProcessTaskImageAnalyzer::analyze() m_result_rect = Rect(); for (const std::string& task_name : m_tasks_name) { - auto task_ptr = task.get(task_name); + auto task_ptr = Task.get(task_name); switch (task_ptr->algorithm) { case AlgorithmType::JustReturn: @@ -123,4 +123,4 @@ void asst::ProcessTaskImageAnalyzer::set_image(const cv::Mat image) { AbstractImageAnalyzer::set_image(image); reset(); -} +} \ No newline at end of file diff --git a/src/MeoAssistant/RecruitImageAnalyzer.cpp b/src/MeoAssistant/RecruitImageAnalyzer.cpp index f7d5129505..845b9b55ea 100644 --- a/src/MeoAssistant/RecruitImageAnalyzer.cpp +++ b/src/MeoAssistant/RecruitImageAnalyzer.cpp @@ -23,7 +23,7 @@ bool asst::RecruitImageAnalyzer::tags_analyze() static OcrImageAnalyzer tags_analyzer; if (!analyzer_inited) { const auto tags_task_ptr = std::dynamic_pointer_cast( - task.get("RecruitTags")); + Task.get("RecruitTags")); tags_analyzer.set_roi(tags_task_ptr->roi); auto& all_tags_set = Resrc.recruit().get_all_tags(); std::vector all_tags_vec; @@ -48,7 +48,7 @@ bool asst::RecruitImageAnalyzer::tags_analyze() bool asst::RecruitImageAnalyzer::time_analyze() { const auto time_task_ptr = std::dynamic_pointer_cast( - task.get("RecruitTime")); + Task.get("RecruitTime")); MatchImageAnalyzer time_analyzer(m_image); time_analyzer.set_task_info(*time_task_ptr); @@ -70,7 +70,7 @@ bool asst::RecruitImageAnalyzer::time_analyze() bool asst::RecruitImageAnalyzer::confirm_analyze() { - const auto confirm_task_ptr = std::dynamic_pointer_cast(task.get("RecruitConfirm")); + const auto confirm_task_ptr = std::dynamic_pointer_cast(Task.get("RecruitConfirm")); MatchImageAnalyzer confirm_analyzer(m_image); confirm_analyzer.set_task_info(*confirm_task_ptr); @@ -84,7 +84,7 @@ bool asst::RecruitImageAnalyzer::confirm_analyze() bool asst::RecruitImageAnalyzer::refresh_analyze() { - const auto refresh_task_ptr = std::dynamic_pointer_cast(task.get("RecruitRefresh")); + const auto refresh_task_ptr = std::dynamic_pointer_cast(Task.get("RecruitRefresh")); MatchImageAnalyzer refresh_analyzer(m_image); refresh_analyzer.set_task_info(*refresh_task_ptr); @@ -94,4 +94,4 @@ bool asst::RecruitImageAnalyzer::refresh_analyze() } return false; -} +} \ No newline at end of file diff --git a/src/MeoAssistant/Resource.cpp b/src/MeoAssistant/Resource.cpp index a06a04f168..1fb66763de 100644 --- a/src/MeoAssistant/Resource.cpp +++ b/src/MeoAssistant/Resource.cpp @@ -25,8 +25,8 @@ bool asst::Resource::load(const std::string& dir) m_last_error = std::string(GeneralCfgFilename) + ": " + m_general_cfg_unique_ins.get_last_error(); return false; } - if (!task.load(dir + TaskDataFilename)) { - m_last_error = std::string(TaskDataFilename) + ": " + task.get_last_error(); + if (!Task.load(dir + TaskDataFilename)) { + m_last_error = std::string(TaskDataFilename) + ": " + Task.get_last_error(); return false; } @@ -55,7 +55,7 @@ bool asst::Resource::load(const std::string& dir) /* 加载模板图片资源 */ // task所需要的模板资源 - m_templ_resource_unique_ins.append_load_required(task.get_templ_required()); + m_templ_resource_unique_ins.append_load_required(Task.get_templ_required()); // 基建所需要的模板资源 m_templ_resource_unique_ins.append_load_required(m_infrast_cfg_unique_ins.get_templ_required()); @@ -78,4 +78,4 @@ bool asst::Resource::load(const std::string& dir) } return true; -} +} \ No newline at end of file diff --git a/src/MeoAssistant/RuntimeStatus.h b/src/MeoAssistant/RuntimeStatus.h index fe976173c8..c3febc163b 100644 --- a/src/MeoAssistant/RuntimeStatus.h +++ b/src/MeoAssistant/RuntimeStatus.h @@ -18,7 +18,7 @@ namespace asst return unique_instance; } - int get(const std::string& key) const noexcept + int64_t get(const std::string& key) const noexcept { if (auto iter = m_data.find(key); iter != m_data.cend()) { @@ -56,5 +56,5 @@ namespace asst std::unordered_map m_data; }; - static auto& status = RuntimeStatus::get_instance(); + static auto& Status = RuntimeStatus::get_instance(); } diff --git a/src/MeoAssistant/TaskData.h b/src/MeoAssistant/TaskData.h index c487cfeb59..e28b34293a 100644 --- a/src/MeoAssistant/TaskData.h +++ b/src/MeoAssistant/TaskData.h @@ -38,5 +38,5 @@ namespace asst std::unordered_set m_templ_required; }; - static auto& task = TaskData::get_instance(); + static auto& Task = TaskData::get_instance(); } diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index 221e0cc056..71407d90c1 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -9,99 +9,99 @@ // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY -using System; -using System.Runtime.InteropServices; +using System; +using System.Runtime.InteropServices; using Microsoft.Toolkit.Uwp.Notifications; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Stylet; -using StyletIoC; - -namespace MeoAsstGui -{ - public class AsstProxy - { - private delegate void CallbackDelegate(int msg, IntPtr json_buffer, IntPtr custom_arg); - - private delegate void ProcCallbckMsg(AsstMsg msg, JObject detail); - - [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstCreate(string dirname); - - [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstCreateEx(string dirname, CallbackDelegate callback, IntPtr custom_arg); - - [DllImport("MeoAssistant.dll")] private static extern void AsstDestroy(IntPtr ptr); - +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Stylet; +using StyletIoC; + +namespace MeoAsstGui +{ + public class AsstProxy + { + private delegate void CallbackDelegate(int msg, IntPtr json_buffer, IntPtr custom_arg); + + private delegate void ProcCallbckMsg(AsstMsg msg, JObject detail); + + [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstCreate(string dirname); + + [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstCreateEx(string dirname, CallbackDelegate callback, IntPtr custom_arg); + + [DllImport("MeoAssistant.dll")] private static extern void AsstDestroy(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern bool AsstCatchDefault(IntPtr ptr); - - [DllImport("MeoAssistant.dll")] private static extern bool AsstCatchCustom(IntPtr ptr, string address); - + + [DllImport("MeoAssistant.dll")] private static extern bool AsstCatchCustom(IntPtr ptr, string address); + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendStartUp(IntPtr ptr); - + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendFight(IntPtr ptr, string stage, int max_medicine, int max_stone, int max_times); - - [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendAward(IntPtr ptr); - + + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendAward(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendVisit(IntPtr ptr); - + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendMall(IntPtr ptr, bool with_shopping); [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendInfrast(IntPtr ptr, int work_mode, string[] order, int order_len, string uses_of_drones, double dorm_threshold); - [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendRecruit(IntPtr ptr, int max_times, int[] select_level, int required_len, int[] confirm_level, int confirm_len, bool need_refresh); - - [DllImport("MeoAssistant.dll")] private static extern bool AsstStartRecruitCalc(IntPtr ptr, int[] select_level, int required_len, bool set_time); - - [DllImport("MeoAssistant.dll")] private static extern bool AsstStart(IntPtr ptr); - - [DllImport("MeoAssistant.dll")] private static extern bool AsstStop(IntPtr ptr); - - [DllImport("MeoAssistant.dll")] private static extern bool AsstSetPenguinId(IntPtr p_asst, string id); + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendRecruit(IntPtr ptr, int max_times, int[] select_level, int required_len, int[] confirm_level, int confirm_len, bool need_refresh); - //[DllImport("MeoAssistant.dll")] private static extern bool AsstSetParam(IntPtr p_asst, string type, string param, string value); - - private CallbackDelegate _callback; - - public AsstProxy(IContainer container, IWindowManager windowManager) - { - _container = container; - _windowManager = windowManager; - _callback = CallbackFunction; - } - - public void Init() - { - _ptr = AsstCreateEx(System.IO.Directory.GetCurrentDirectory(), _callback, IntPtr.Zero); + [DllImport("MeoAssistant.dll")] private static extern bool AsstStartRecruitCalc(IntPtr ptr, int[] select_level, int required_len, bool set_time); + + [DllImport("MeoAssistant.dll")] private static extern bool AsstStart(IntPtr ptr); + + [DllImport("MeoAssistant.dll")] private static extern bool AsstStop(IntPtr ptr); + + [DllImport("MeoAssistant.dll")] private static extern bool AsstSetPenguinId(IntPtr p_asst, string id); + + //[DllImport("MeoAssistant.dll")] private static extern bool AsstSetParam(IntPtr p_asst, string type, string param, string value); + + private CallbackDelegate _callback; + + public AsstProxy(IContainer container, IWindowManager windowManager) + { + _container = container; + _windowManager = windowManager; + _callback = CallbackFunction; + } + + public void Init() + { + _ptr = AsstCreateEx(System.IO.Directory.GetCurrentDirectory(), _callback, IntPtr.Zero); if (_ptr == IntPtr.Zero) { _windowManager.ShowMessageBox("出现未知异常", "错误"); Environment.Exit(0); } - var tvm = _container.Get(); - tvm.Idle = true; - } - - private void CallbackFunction(int msg, IntPtr json_buffer, IntPtr custom_arg) - { - string json_str = Marshal.PtrToStringAnsi(json_buffer); - //Console.WriteLine(json_str); - JObject json = (JObject)JsonConvert.DeserializeObject(json_str); - ProcCallbckMsg dlg = new ProcCallbckMsg(proc_msg); - Execute.OnUIThread(() => - { - dlg((AsstMsg)msg, json); - }); - } - - private IWindowManager _windowManager; - private IContainer _container; - private IntPtr _ptr; - - private void proc_msg(AsstMsg msg, JObject detail) - { - var tvm = _container.Get(); - switch (msg) - { - case AsstMsg.TaskStart: + var tvm = _container.Get(); + tvm.Idle = true; + } + + private void CallbackFunction(int msg, IntPtr json_buffer, IntPtr custom_arg) + { + string json_str = Marshal.PtrToStringAnsi(json_buffer); + //Console.WriteLine(json_str); + JObject json = (JObject)JsonConvert.DeserializeObject(json_str); + ProcCallbckMsg dlg = new ProcCallbckMsg(proc_msg); + Execute.OnUIThread(() => + { + dlg((AsstMsg)msg, json); + }); + } + + private IWindowManager _windowManager; + private IContainer _container; + private IntPtr _ptr; + + private void proc_msg(AsstMsg msg, JObject detail) + { + var tvm = _container.Get(); + switch (msg) + { + case AsstMsg.TaskStart: break; case AsstMsg.TaskChainStart: @@ -111,11 +111,11 @@ namespace MeoAsstGui { break; } - tvm.AddLog("开始任务:" + taskChain); + tvm.AddLog("开始任务:" + taskChain); } break; - case AsstMsg.TaskCompleted: + case AsstMsg.TaskCompleted: { string taskName = detail["name"].ToString(); if (taskName == "StartButton2") @@ -138,18 +138,18 @@ namespace MeoAsstGui { tvm.AddLog("已确认招募", "darkcyan"); } - } - break; - - case AsstMsg.TaskChainCompleted: + } + break; + + case AsstMsg.TaskChainCompleted: { string taskChain = detail["task_chain"].ToString(); if (taskChain == "RecruitCalc") { break; } - tvm.AddLog("完成任务:" + taskChain); - } + tvm.AddLog("完成任务:" + taskChain); + } break; case AsstMsg.AllTasksCompleted: @@ -175,9 +175,9 @@ namespace MeoAsstGui string itemName = item["itemName"].ToString(); int count = (int)item["quantity"]; cur_drops += $"{itemName} : {count}\n"; - } + } cur_drops = cur_drops.EndsWith("\n") ? cur_drops.TrimEnd('\n') : "无"; - tvm.AddLog("当次掉落:\n" + cur_drops); + tvm.AddLog("当次掉落:\n" + cur_drops); string all_drops = ""; JArray statistics = (JArray)detail["statistics"]; @@ -186,22 +186,22 @@ namespace MeoAsstGui string itemName = item["itemName"].ToString(); int count = (int)item["count"]; all_drops += $"{itemName} : {count}\n"; - } - all_drops = all_drops.EndsWith("\n") ? all_drops.TrimEnd('\n') : "无"; + } + all_drops = all_drops.EndsWith("\n") ? all_drops.TrimEnd('\n') : "无"; tvm.AddLog("掉落统计:\n" + all_drops); - } - break; - - case AsstMsg.TextDetected: - break; - - case AsstMsg.RecruitTagsDetected: - case AsstMsg.OcrResultError: - case AsstMsg.RecruitSpecialTag: + } + break; + + case AsstMsg.TextDetected: + break; + + case AsstMsg.RecruitTagsDetected: + case AsstMsg.OcrResultError: + case AsstMsg.RecruitSpecialTag: case AsstMsg.RecruitResult: case AsstMsg.RecruitSelected: - case AsstMsg.RecruitError: - recruit_proc_msg(msg, detail); + case AsstMsg.RecruitError: + recruit_proc_msg(msg, detail); break; /* Infrast Msg */ case AsstMsg.InfrastSkillsDetected: @@ -210,8 +210,8 @@ namespace MeoAsstGui case AsstMsg.EnterFacility: case AsstMsg.FacilityInfo: infrast_proc_msg(msg, detail); - break; - + break; + case AsstMsg.TaskError: { string taskChain = detail["task_chain"].ToString(); @@ -224,14 +224,14 @@ namespace MeoAsstGui { tvm.AddLog("任务出错:" + detail["task_chain"].ToString(), "darkred"); } - } - break; - - case AsstMsg.InitFaild: + } + break; + + case AsstMsg.InitFaild: _windowManager.ShowMessageBox("初始化错误!请检查是否使用了中文路径", "错误"); - Environment.Exit(0); - break; - } + Environment.Exit(0); + break; + } } private void infrast_proc_msg(AsstMsg msg, JObject detail) @@ -258,17 +258,17 @@ namespace MeoAsstGui case AsstMsg.TaskChainCompleted: break; } - } - - private void recruit_proc_msg(AsstMsg msg, JObject detail) - { - var rvm = _container.Get(); - var tvm = _container.Get(); - switch (msg) - { - case AsstMsg.TextDetected: - break; - + } + + private void recruit_proc_msg(AsstMsg msg, JObject detail) + { + var rvm = _container.Get(); + var tvm = _container.Get(); + switch (msg) + { + case AsstMsg.TextDetected: + break; + case AsstMsg.RecruitTagsDetected: { JArray tags = (JArray)detail["tags"]; @@ -290,18 +290,18 @@ namespace MeoAsstGui log_content = log_content.EndsWith("\n") ? log_content.TrimEnd('\n') : "错误"; tvm.AddLog("公招识别结果:\n" + log_content); } - } - break; - - case AsstMsg.OcrResultError: - rvm.RecruitInfo = "识别错误!"; - break; - + } + break; + + case AsstMsg.OcrResultError: + rvm.RecruitInfo = "识别错误!"; + break; + case AsstMsg.RecruitSpecialTag: string special = detail["tag"].ToString(); - new ToastContentBuilder().AddText("公招提示:" + special).Show(); - break; - + new ToastContentBuilder().AddText("公招提示:" + special).Show(); + break; + case AsstMsg.RecruitResult: { string resultContent = ""; @@ -343,34 +343,34 @@ namespace MeoAsstGui } } } - + break; case AsstMsg.RecruitSelected: JArray selected = (JArray)detail["tags"]; - string selected_log = ""; - foreach (var tag in selected) + string selected_log = ""; + foreach (var tag in selected) { selected_log += tag.ToString() + "\n"; } - selected_log = selected_log.EndsWith("\n") ? selected_log.TrimEnd('\n') : "无"; + selected_log = selected_log.EndsWith("\n") ? selected_log.TrimEnd('\n') : "无"; - tvm.AddLog("选择Tags:\n" + selected_log); + tvm.AddLog("选择Tags:\n" + selected_log); break; - case AsstMsg.RecruitError: + case AsstMsg.RecruitError: tvm.AddLog("公招识别错误,已返回", "darkred"); - break; - } + break; + } } - public bool AsstCatch() - { + public bool AsstCatch() + { var settings = _container.Get(); settings.TryToSetBlueStacksHyperVAddress(); if (settings.ConnectAddress.Length == 0) { - return AsstCatchDefault(_ptr); + return AsstCatchDefault(_ptr); } else { @@ -488,5 +488,5 @@ namespace MeoAsstGui Gentle, // 温和换班模式:会对干员人数不满的设施进行换班,计算单设施内最优解,尽量不破坏原有的干员组合;即若设施内干员是满的,则不对该设施进行换班 Aggressive, // 激进换班模式:会对每一个设施进行换班,计算单设施内最优解,但不会将其他设施中的干员替换过来;即按工作状态排序,仅选择前面的干员 Extreme // 偏激换班模式:会对每一个设施进行换班,计算全局的单设施内最优解,为追求更高效率,会将其他设施内的干员也替换过来;即按技能排序,计算所有拥有该设施技能的干员效率,无论他在不在其他地方工作 - }; + }; } diff --git a/src/MeoAsstGui/Helper/ViewStatusStorage.cs b/src/MeoAsstGui/Helper/ViewStatusStorage.cs index 9a4fa740ef..35c4a66275 100644 --- a/src/MeoAsstGui/Helper/ViewStatusStorage.cs +++ b/src/MeoAsstGui/Helper/ViewStatusStorage.cs @@ -9,74 +9,74 @@ // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY -using System; -using System.IO; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace MeoAsstGui -{ - // 界面设置存储(读写json文件) - public class ViewStatusStorage - { - private static string _configFilename = System.Environment.CurrentDirectory + "\\gui.json"; +using System; +using System.IO; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace MeoAsstGui +{ + // 界面设置存储(读写json文件) + public class ViewStatusStorage + { + private static string _configFilename = System.Environment.CurrentDirectory + "\\gui.json"; private static JObject _viewStatus = new JObject(); - - public static string Get(string key, string defalut_value) - { - if (_viewStatus.ContainsKey(key)) - { - return _viewStatus[key].ToString(); + + public static string Get(string key, string defalut_value) + { + if (_viewStatus.ContainsKey(key)) + { + return _viewStatus[key].ToString(); + } + else + { + return defalut_value; } - else - { - return defalut_value; - } - } - - public static void Set(string key, string value) - { - _viewStatus[key] = value; - Save(); } - - public static bool Load() - { - try - { - using (StreamReader sr = new StreamReader(_configFilename)) - { - string jsonStr = sr.ReadToEnd(); - _viewStatus = (JObject)JsonConvert.DeserializeObject(jsonStr); - // 文件存在但为空,会读出来一个null,感觉c#这库有bug + + public static void Set(string key, string value) + { + _viewStatus[key] = value; + Save(); + } + + public static bool Load() + { + try + { + using (StreamReader sr = new StreamReader(_configFilename)) + { + string jsonStr = sr.ReadToEnd(); + _viewStatus = (JObject)JsonConvert.DeserializeObject(jsonStr); + // 文件存在但为空,会读出来一个null,感觉c#这库有bug if (_viewStatus == null) { _viewStatus = new JObject(); - } - } - } - catch (Exception) - { - _viewStatus = new JObject(); - return false; - } - return true; + } + } + } + catch (Exception) + { + _viewStatus = new JObject(); + return false; + } + return true; } - - public static bool Save() + + public static bool Save() { - try + try { using (StreamWriter sw = new StreamWriter(_configFilename)) { sw.Write(_viewStatus.ToString()); } } - catch (Exception) - { - return false; - } - return true; - } - } + catch (Exception) + { + return false; + } + return true; + } + } } diff --git a/src/MeoAsstGui/ViewModels/RecruitViewModel.cs b/src/MeoAsstGui/ViewModels/RecruitViewModel.cs index 592b4b0e58..5a10247f40 100644 --- a/src/MeoAsstGui/ViewModels/RecruitViewModel.cs +++ b/src/MeoAsstGui/ViewModels/RecruitViewModel.cs @@ -9,110 +9,110 @@ // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading.Tasks; -using Stylet; -using StyletIoC; +using Stylet; +using StyletIoC; -namespace MeoAsstGui -{ - public class RecruitViewModel : Screen - { - private IWindowManager _windowManager; - private IContainer _container; - - public RecruitViewModel(IContainer container, IWindowManager windowManager) - { - _container = container; - _windowManager = windowManager; - DisplayName = "公招识别"; - } - - private string _recruitInfo = "识别结果"; - - public string RecruitInfo - { - get { return _recruitInfo; } - set - { - SetAndNotify(ref _recruitInfo, value); - } - } - - private string _recruitResult; - - public string RecruitResult - { - get { return _recruitResult; } - set - { - SetAndNotify(ref _recruitResult, value); - } - } - - private bool _chooseLevel3 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel3", bool.FalseString)); - - public bool ChooseLevel3 - { - get { return _chooseLevel3; } - set - { - SetAndNotify(ref _chooseLevel3, value); - ViewStatusStorage.Set("Recruit.ChooseLevel3", value.ToString()); - } - } - - private bool _chooseLevel4 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel4", bool.TrueString)); - - public bool ChooseLevel4 - { - get { return _chooseLevel4; } - set - { - SetAndNotify(ref _chooseLevel4, value); - ViewStatusStorage.Set("Recruit.ChooseLevel4", value.ToString()); - } - } - - private bool _chooseLevel5 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel5", bool.TrueString)); - - public bool ChooseLevel5 - { - get { return _chooseLevel5; } - set - { - SetAndNotify(ref _chooseLevel5, value); - ViewStatusStorage.Set("Recruit.ChooseLevel5", value.ToString()); - } - } - - private bool _chooseLevel6 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel6", bool.TrueString)); - - public bool ChooseLevel6 - { - get { return _chooseLevel6; } - set - { - SetAndNotify(ref _chooseLevel6, value); - ViewStatusStorage.Set("Recruit.ChooseLevel6", value.ToString()); - } - } - - private bool _autoSetTime = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.AutoSetTime", bool.TrueString)); - - public bool AutoSetTime - { - get { return _autoSetTime; } - set - { - SetAndNotify(ref _autoSetTime, value); - ViewStatusStorage.Set("Recruit.AutoSetTime", value.ToString()); - } - } +namespace MeoAsstGui +{ + public class RecruitViewModel : Screen + { + private IWindowManager _windowManager; + private IContainer _container; + + public RecruitViewModel(IContainer container, IWindowManager windowManager) + { + _container = container; + _windowManager = windowManager; + DisplayName = "公招识别"; + } + + private string _recruitInfo = "识别结果"; + + public string RecruitInfo + { + get { return _recruitInfo; } + set + { + SetAndNotify(ref _recruitInfo, value); + } + } + + private string _recruitResult; + + public string RecruitResult + { + get { return _recruitResult; } + set + { + SetAndNotify(ref _recruitResult, value); + } + } + + private bool _chooseLevel3 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel3", bool.FalseString)); + + public bool ChooseLevel3 + { + get { return _chooseLevel3; } + set + { + SetAndNotify(ref _chooseLevel3, value); + ViewStatusStorage.Set("Recruit.ChooseLevel3", value.ToString()); + } + } + + private bool _chooseLevel4 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel4", bool.TrueString)); + + public bool ChooseLevel4 + { + get { return _chooseLevel4; } + set + { + SetAndNotify(ref _chooseLevel4, value); + ViewStatusStorage.Set("Recruit.ChooseLevel4", value.ToString()); + } + } + + private bool _chooseLevel5 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel5", bool.TrueString)); + + public bool ChooseLevel5 + { + get { return _chooseLevel5; } + set + { + SetAndNotify(ref _chooseLevel5, value); + ViewStatusStorage.Set("Recruit.ChooseLevel5", value.ToString()); + } + } + + private bool _chooseLevel6 = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.ChooseLevel6", bool.TrueString)); + + public bool ChooseLevel6 + { + get { return _chooseLevel6; } + set + { + SetAndNotify(ref _chooseLevel6, value); + ViewStatusStorage.Set("Recruit.ChooseLevel6", value.ToString()); + } + } + + private bool _autoSetTime = System.Convert.ToBoolean(ViewStatusStorage.Get("Recruit.AutoSetTime", bool.TrueString)); + + public bool AutoSetTime + { + get { return _autoSetTime; } + set + { + SetAndNotify(ref _autoSetTime, value); + ViewStatusStorage.Set("Recruit.AutoSetTime", value.ToString()); + } + } private bool _catched = false; - - public async void StartCalc() + + public async void StartCalc() { var asstProxy = _container.Get(); if (!_catched) @@ -122,37 +122,37 @@ namespace MeoAsstGui { return asstProxy.AsstCatch(); }); - _catched = await task; - } + _catched = await task; + } if (!_catched) { RecruitInfo = "捕获模拟器窗口失败,若是第一次运行,请尝试使用管理员权限"; return; - } - RecruitInfo = "正在识别……"; - RecruitResult = ""; - - var levelList = new List(); - - if (ChooseLevel3) - { - levelList.Add(3); - } - if (ChooseLevel4) - { - levelList.Add(4); - } - if (ChooseLevel5) - { - levelList.Add(5); - } - if (ChooseLevel6) - { - levelList.Add(6); - } - + } + RecruitInfo = "正在识别……"; + RecruitResult = ""; + + var levelList = new List(); + + if (ChooseLevel3) + { + levelList.Add(3); + } + if (ChooseLevel4) + { + levelList.Add(4); + } + if (ChooseLevel5) + { + levelList.Add(5); + } + if (ChooseLevel6) + { + levelList.Add(6); + } + asstProxy.AsstStartRecruitCalc(levelList.ToArray(), levelList.Count, AutoSetTime); - asstProxy.AsstStart(); - } - } + asstProxy.AsstStart(); + } + } } diff --git a/src/MeoAsstGui/ViewModels/RootViewModel.cs b/src/MeoAsstGui/ViewModels/RootViewModel.cs index 391532f064..c573336686 100644 --- a/src/MeoAsstGui/ViewModels/RootViewModel.cs +++ b/src/MeoAsstGui/ViewModels/RootViewModel.cs @@ -9,70 +9,70 @@ // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY -using System.Threading.Tasks; -using Stylet; -using StyletIoC; - -namespace MeoAsstGui -{ - public class RootViewModel : Conductor.Collection.OneActive - { - private IContainer _container; - private IWindowManager _windowManager; - - public RootViewModel(IContainer container, IWindowManager windowManager) - { - _container = container; - _windowManager = windowManager; - } - - protected override void OnViewLoaded() +using System.Threading.Tasks; +using Stylet; +using StyletIoC; + +namespace MeoAsstGui +{ + public class RootViewModel : Conductor.Collection.OneActive + { + private IContainer _container; + private IWindowManager _windowManager; + + public RootViewModel(IContainer container, IWindowManager windowManager) + { + _container = container; + _windowManager = windowManager; + } + + protected override void OnViewLoaded() + { + CheckAndUpdateNow(); + InitProxy(); + InitViewModels(); + ShowUpdateOrDownload(); + } + + private async void InitProxy() { - CheckAndUpdateNow(); - InitProxy(); - InitViewModels(); - ShowUpdateOrDownload(); - } - - private async void InitProxy() - { var task = Task.Run(() => { var p = _container.Get(); p.Init(); }); - await task; - } - - private void InitViewModels() - { - var tvm = _container.Get(); - var rvm = _container.Get(); - //var ivm = _container.Get(); - var svm = _container.Get(); - - Items.Add(tvm); - Items.Add(rvm); - //Items.Add(ivm); - Items.Add(svm); - ActiveItem = tvm; + await task; } - + + private void InitViewModels() + { + var tvm = _container.Get(); + var rvm = _container.Get(); + //var ivm = _container.Get(); + var svm = _container.Get(); + + Items.Add(tvm); + Items.Add(rvm); + //Items.Add(ivm); + Items.Add(svm); + ActiveItem = tvm; + } + private bool CheckAndUpdateNow() { - var vuvm = _container.Get(); + var vuvm = _container.Get(); return vuvm.CheckAndUpdateNow(); } - - private async void ShowUpdateOrDownload() - { - var vuvm = _container.Get(); - + + private async void ShowUpdateOrDownload() + { + var vuvm = _container.Get(); + if (vuvm.IsFirstBootAfterUpdate) { _windowManager.ShowWindow(vuvm); - } + } else { var task = Task.Run(() => @@ -84,7 +84,7 @@ namespace MeoAsstGui }); await task; - } - } - } + } + } + } } diff --git a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs index 4c60e1420b..fc327d12b8 100644 --- a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs +++ b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs @@ -418,4 +418,4 @@ namespace MeoAsstGui } } } -} \ No newline at end of file +} diff --git a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs index 3aeff6d8ae..3cb7ac9012 100644 --- a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs +++ b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs @@ -9,105 +9,105 @@ // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY -using System; +using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; -using System.Net; -using System.Runtime.InteropServices; -using System.Text; +using System.IO; +using System.Net; +using System.Runtime.InteropServices; +using System.Text; using System.Windows; using Microsoft.Toolkit.Uwp.Notifications; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Stylet; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Stylet; using StyletIoC; -namespace MeoAsstGui -{ - public class VersionUpdateViewModel : Screen - { - private IWindowManager _windowManager; +namespace MeoAsstGui +{ + public class VersionUpdateViewModel : Screen + { + private IWindowManager _windowManager; private IContainer _container; - - public VersionUpdateViewModel(IContainer container, IWindowManager windowManager) - { + + public VersionUpdateViewModel(IContainer container, IWindowManager windowManager) + { _container = container; - _windowManager = windowManager; - } - + _windowManager = windowManager; + } + [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstGetVersion(); - - private string _curVersion = Marshal.PtrToStringAnsi(AsstGetVersion()); - private string _latestVersion; - + + private string _curVersion = Marshal.PtrToStringAnsi(AsstGetVersion()); + private string _latestVersion; + private string _updateTag = ViewStatusStorage.Get("VersionUpdate.name", string.Empty); - - public string UpdateTag - { - get - { - return _updateTag; - } - set - { - SetAndNotify(ref _updateTag, value); - ViewStatusStorage.Set("VersionUpdate.name", value); - } - } - - private string _updateInfo = ViewStatusStorage.Get("VersionUpdate.body", string.Empty); - - public string UpdateInfo - { - get - { - return _updateInfo; - } - set - { - SetAndNotify(ref _updateInfo, value); - ViewStatusStorage.Set("VersionUpdate.body", value); - } + + public string UpdateTag + { + get + { + return _updateTag; + } + set + { + SetAndNotify(ref _updateTag, value); + ViewStatusStorage.Set("VersionUpdate.name", value); + } + } + + private string _updateInfo = ViewStatusStorage.Get("VersionUpdate.body", string.Empty); + + public string UpdateInfo + { + get + { + return _updateInfo; + } + set + { + SetAndNotify(ref _updateInfo, value); + ViewStatusStorage.Set("VersionUpdate.body", value); + } } private bool _isFirstBootAfterUpdate = Convert.ToBoolean(ViewStatusStorage.Get("VersionUpdate.firstboot", Boolean.FalseString)); - public bool IsFirstBootAfterUpdate - { - get - { - return _isFirstBootAfterUpdate; - } - set - { - SetAndNotify(ref _isFirstBootAfterUpdate, value); - ViewStatusStorage.Set("VersionUpdate.firstboot", value.ToString()); - } + public bool IsFirstBootAfterUpdate + { + get + { + return _isFirstBootAfterUpdate; + } + set + { + SetAndNotify(ref _isFirstBootAfterUpdate, value); + ViewStatusStorage.Set("VersionUpdate.firstboot", value.ToString()); + } } private string _updatePackageName = ViewStatusStorage.Get("VersionUpdate.package", string.Empty); - public string UpdatePackageName - { - get - { - return _updatePackageName; - } - set - { - SetAndNotify(ref _updatePackageName, value); - ViewStatusStorage.Set("VersionUpdate.package", value.ToString()); - } + public string UpdatePackageName + { + get + { + return _updatePackageName; + } + set + { + SetAndNotify(ref _updatePackageName, value); + ViewStatusStorage.Set("VersionUpdate.package", value.ToString()); + } } private const string _requestUrl = "https://api.github.com/repos/MistEO/MeoAssistantArknights/releases/latest"; private const string _requestBetaUrl = "https://api.github.com/repos/MistEO/MeoAssistantArknights/releases"; private string _viewUrl; - private JObject _lastestJson; + private JObject _lastestJson; private string _downloadUrl; - - // 检查是否有已下载的更新包,如果有立即更新并重启进程 + + // 检查是否有已下载的更新包,如果有立即更新并重启进程 public bool CheckAndUpdateNow() { if (UpdateTag == string.Empty @@ -120,9 +120,9 @@ namespace MeoAsstGui .AddText("检测到新版本包,正在解压,请稍等……") .AddText(UpdateTag) .Show(); - string extractDir = Directory.GetCurrentDirectory() + "\\NewVersionExtract"; - // 解压 - System.IO.Compression.ZipFile.ExtractToDirectory(UpdatePackageName, extractDir); + string extractDir = Directory.GetCurrentDirectory() + "\\NewVersionExtract"; + // 解压 + System.IO.Compression.ZipFile.ExtractToDirectory(UpdatePackageName, extractDir); var uncopiedList = new List(); // 复制新版本的所有文件到当前路径下 @@ -172,33 +172,33 @@ namespace MeoAsstGui return true; } - - // 检查更新,并下载更新包 - public bool CheckAndDownloadUpdate() - { - // 检查更新 + + // 检查更新,并下载更新包 + public bool CheckAndDownloadUpdate() + { + // 检查更新 if (!CheckUpdate()) { return false; - } - // 保存新版本的信息 + } + // 保存新版本的信息 UpdatePackageName = _downloadUrl.Substring(_downloadUrl.LastIndexOf('/') + 1); - UpdateTag = _lastestJson["name"].ToString(); + UpdateTag = _lastestJson["name"].ToString(); UpdateInfo = _lastestJson["body"].ToString(); - var openUrlToastButton = new ToastButton(); - openUrlToastButton.SetContent("前往页面查看"); - openUrlToastButton.SetProtocolActivation(new Uri(_viewUrl)); - new ToastContentBuilder() - .AddText("检测到新版本,正在后台下载……") - .AddText(UpdateTag) - .AddText(UpdateInfo) - .AddButton(openUrlToastButton) + var openUrlToastButton = new ToastButton(); + openUrlToastButton.SetContent("前往页面查看"); + openUrlToastButton.SetProtocolActivation(new Uri(_viewUrl)); + new ToastContentBuilder() + .AddText("检测到新版本,正在后台下载……") + .AddText(UpdateTag) + .AddText(UpdateInfo) + .AddButton(openUrlToastButton) .Show(); - // 下载压缩包 + // 下载压缩包 const int downloadRetryMaxTimes = 2; - string downloadTempFilename = UpdatePackageName + ".tmp"; - bool downloaded = false; + string downloadTempFilename = UpdatePackageName + ".tmp"; + bool downloaded = false; for (int i = 0; i != downloadRetryMaxTimes; ++i) { if (DownloadFile(_downloadUrl.Replace("github.com", "hub.fastgit.org"), downloadTempFilename) @@ -207,32 +207,32 @@ namespace MeoAsstGui downloaded = true; break; } - } + } if (!downloaded) { new ToastContentBuilder() - .AddText("新版本下载失败") - .AddText("请尝试手动下载后,将压缩包放到目录下_(:з」∠)_") + .AddText("新版本下载失败") + .AddText("请尝试手动下载后,将压缩包放到目录下_(:з」∠)_") .AddButton(openUrlToastButton) .Show(); return false; } - File.Copy(downloadTempFilename, UpdatePackageName, true); + File.Copy(downloadTempFilename, UpdatePackageName, true); File.Delete(downloadTempFilename); // 把相关信息存下来,更新完之后启动的时候显示 new ToastContentBuilder() - .AddText("新版本下载完成") - .AddText("软件将在下次启动时自动更新!") - .AddText("✿✿ヽ(°▽°)ノ✿") - .Show(); - return true; - } - - public bool CheckUpdate() + .AddText("新版本下载完成") + .AddText("软件将在下次启动时自动更新!") + .AddText("✿✿ヽ(°▽°)ノ✿") + .Show(); + return true; + } + + public bool CheckUpdate() { - var settings = _container.Get(); - string response = string.Empty; - const int requestRetryMaxTimes = 5; + var settings = _container.Get(); + string response = string.Empty; + const int requestRetryMaxTimes = 5; for (int i = 0; i != requestRetryMaxTimes; ++i) { if (settings.UpdateBeta) @@ -247,11 +247,11 @@ namespace MeoAsstGui { break; } - } - if (response.Length == 0) - { - return false; - } + } + if (response.Length == 0) + { + return false; + } try { @@ -288,9 +288,9 @@ namespace MeoAsstGui { return false; } - return false; - } - + return false; + } + private string RequestApi(string url) { HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); @@ -458,6 +458,6 @@ namespace MeoAsstGui IsFirstBootAfterUpdate = false; UpdateTag = ""; UpdateInfo = ""; - } - } + } + } }