From 716d4e079a578187470f008e8a4c35dbcee9d305 Mon Sep 17 00:00:00 2001 From: MistEO Date: Tue, 14 Dec 2021 21:29:35 +0800 Subject: [PATCH] =?UTF-8?q?style.=E9=A1=B9=E7=9B=AE=E3=80=81=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D=E7=BB=9F=E4=B8=80=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 10 +- ...ssistance.sln => MeoAssistantArknights.sln | 140 +- README.md | 10 +- appveyor.yml | 2 +- include/AsstCaller.h | 44 +- include/AsstPort.h | 38 +- .../.editorconfig | 0 .../AbstractConfiger.cpp | 0 .../AbstractConfiger.h | 0 .../AbstractImageAnalyzer.cpp | 0 .../AbstractImageAnalyzer.h | 0 .../AbstractResource.cpp | 0 .../AbstractResource.h | 0 .../AbstractTask.cpp | 0 .../AbstractTask.h | 2 +- .../Assistance.cpp | 1190 ++++++++--------- .../Assistance.h | 0 .../AsstCaller.cpp | 504 +++---- src/{MeoAssistance => MeoAssistant}/AsstDef.h | 0 .../AsstInfrastDef.h | 0 src/{MeoAssistance => MeoAssistant}/AsstMsg.h | 0 .../AsstUtils.hpp | 0 .../AutoRecruitTask.cpp | 136 +- .../AutoRecruitTask.h | 0 .../Controller.cpp | 0 .../Controller.h | 0 .../CreditShopImageAnalyzer.cpp | 0 .../CreditShopImageAnalyzer.h | 0 .../CreditShoppingTask.cpp | 0 .../CreditShoppingTask.h | 0 .../GeneralConfiger.cpp | 0 .../GeneralConfiger.h | 0 .../InfrastAbstractTask.cpp | 0 .../InfrastAbstractTask.h | 0 .../InfrastClueImageAnalyzer.cpp | 0 .../InfrastClueImageAnalyzer.h | 0 .../InfrastClueVacancyImageAnalyzer.cpp | 0 .../InfrastClueVacancyImageAnalyzer.h | 0 .../InfrastConfiger.cpp | 0 .../InfrastConfiger.h | 0 .../InfrastControlTask.cpp | 0 .../InfrastControlTask.h | 0 .../InfrastDormTask.cpp | 0 .../InfrastDormTask.h | 0 .../InfrastFacilityImageAnalyzer.cpp | 0 .../InfrastFacilityImageAnalyzer.h | 0 .../InfrastInfoTask.cpp | 0 .../InfrastInfoTask.h | 0 .../InfrastMfgTask.cpp | 0 .../InfrastMfgTask.h | 0 .../InfrastOfficeTask.cpp | 0 .../InfrastOfficeTask.h | 0 .../InfrastOperImageAnalyzer.cpp | 0 .../InfrastOperImageAnalyzer.h | 0 .../InfrastPowerTask.cpp | 0 .../InfrastPowerTask.h | 0 .../InfrastProductionTask.cpp | 28 +- .../InfrastProductionTask.h | 0 .../InfrastReceptionTask.cpp | 0 .../InfrastReceptionTask.h | 0 .../InfrastSmileyImageAnalyzer.cpp | 0 .../InfrastSmileyImageAnalyzer.h | 0 .../InfrastTradeTask.cpp | 0 .../InfrastTradeTask.h | 0 .../ItemConfiger.cpp | 0 .../ItemConfiger.h | 0 .../Logger.hpp | 2 +- .../MatchImageAnalyzer.cpp | 0 .../MatchImageAnalyzer.h | 0 .../MeoAssistant.vcxproj} | 506 +++---- .../MeoAssistant.vcxproj.filters} | 728 +++++----- .../MultiMatchImageAnalyzer.cpp | 0 .../MultiMatchImageAnalyzer.h | 0 .../OcrImageAnalyzer.cpp | 108 +- .../OcrImageAnalyzer.h | 128 +- .../OcrPack.cpp | 0 src/{MeoAssistance => MeoAssistant}/OcrPack.h | 0 .../PenguinPack.cpp | 0 .../PenguinPack.h | 0 .../PenguinUploader.cpp | 6 +- .../PenguinUploader.h | 0 .../ProcessTask.cpp | 0 .../ProcessTask.h | 0 .../ProcessTaskImageAnalyzer.cpp | 0 .../ProcessTaskImageAnalyzer.h | 0 src/{MeoAssistance => MeoAssistant}/README.md | 2 +- .../RecruitConfiger.cpp | 0 .../RecruitConfiger.h | 0 .../RecruitImageAnalyzer.cpp | 0 .../RecruitImageAnalyzer.h | 0 .../RecruitTask.cpp | 0 .../RecruitTask.h | 0 .../Resource.cpp | 0 .../Resource.h | 0 .../RuntimeStatus.cpp | 0 .../RuntimeStatus.h | 0 .../TaskData.cpp | 404 +++--- .../TaskData.h | 22 +- .../TemplResource.cpp | 2 +- .../TemplResource.h | 0 .../UserConfiger.cpp | 0 .../UserConfiger.h | 0 src/{MeoAssistance => MeoAssistant}/Version.h | 0 src/MeoAsstGui/.editorconfig | 2 +- src/MeoAsstGui/Helper/AsstProxy.cs | 32 +- src/MeoAsstGui/Helper/AutoScroll.cs | 2 +- src/MeoAsstGui/Helper/CombData.cs | 2 +- src/MeoAsstGui/Helper/DragItemViewModel.cs | 2 +- .../Helper/FlowDocumentPagePadding.cs | 2 +- src/MeoAsstGui/Helper/LogItemViewModel.cs | 2 +- src/MeoAsstGui/Helper/ScrollViewerBinding.cs | 2 +- src/MeoAsstGui/MeoAsstGui.csproj | 6 +- .../AutoRecruitSettingsUserControl.xaml.cs | 2 +- .../ConnectSettingsUserControl.xaml.cs | 2 +- .../InfrastSettingsUserControl.xaml.cs | 2 +- .../MallSettingsUserControl.xaml.cs | 2 +- .../PenguinReportSettingsUserControl.xaml.cs | 2 +- .../VersionUpdateSettingsUserControl.xaml.cs | 2 +- .../ViewModels/SettingsViewModel.cs | 6 +- .../ViewModels/VersionUpdateViewModel.cs | 258 ++-- src/Python/interface.py | 2 +- tools/TestCaller/TestCaller.vcxproj | 4 +- .../TransparentImageCvt.vcxproj | 61 - tools/TransparentImageCvt/main.cpp | 7 +- tools/build_release.bat | 2 +- tools/zip_release.sh | 2 +- tools/使用说明.url | 2 +- tools/问题反馈.url | 2 +- 128 files changed, 2182 insertions(+), 2240 deletions(-) rename MeoAssistance.sln => MeoAssistantArknights.sln (94%) rename src/{MeoAssistance => MeoAssistant}/.editorconfig (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractConfiger.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractConfiger.h (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractResource.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractResource.h (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/AbstractTask.h (99%) rename src/{MeoAssistance => MeoAssistant}/Assistance.cpp (96%) rename src/{MeoAssistance => MeoAssistant}/Assistance.h (100%) rename src/{MeoAssistance => MeoAssistant}/AsstCaller.cpp (95%) rename src/{MeoAssistance => MeoAssistant}/AsstDef.h (100%) rename src/{MeoAssistance => MeoAssistant}/AsstInfrastDef.h (100%) rename src/{MeoAssistance => MeoAssistant}/AsstMsg.h (100%) rename src/{MeoAssistance => MeoAssistant}/AsstUtils.hpp (100%) rename src/{MeoAssistance => MeoAssistant}/AutoRecruitTask.cpp (97%) rename src/{MeoAssistance => MeoAssistant}/AutoRecruitTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/Controller.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/Controller.h (100%) rename src/{MeoAssistance => MeoAssistant}/CreditShopImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/CreditShopImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/CreditShoppingTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/CreditShoppingTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/GeneralConfiger.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/GeneralConfiger.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastAbstractTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastAbstractTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastClueImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastClueImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastClueVacancyImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastClueVacancyImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastConfiger.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastConfiger.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastControlTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastControlTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastDormTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastDormTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastFacilityImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastFacilityImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastInfoTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastInfoTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastMfgTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastMfgTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastOfficeTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastOfficeTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastOperImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastOperImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastPowerTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastPowerTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastProductionTask.cpp (99%) rename src/{MeoAssistance => MeoAssistant}/InfrastProductionTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastReceptionTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastReceptionTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastSmileyImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastSmileyImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastTradeTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/InfrastTradeTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/ItemConfiger.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/ItemConfiger.h (100%) rename src/{MeoAssistance => MeoAssistant}/Logger.hpp (99%) rename src/{MeoAssistance => MeoAssistant}/MatchImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/MatchImageAnalyzer.h (100%) rename src/{MeoAssistance/MeoAssistance.vcxproj => MeoAssistant/MeoAssistant.vcxproj} (95%) rename src/{MeoAssistance/MeoAssistance.vcxproj.filters => MeoAssistant/MeoAssistant.vcxproj.filters} (97%) rename src/{MeoAssistance => MeoAssistant}/MultiMatchImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/MultiMatchImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/OcrImageAnalyzer.cpp (96%) rename src/{MeoAssistance => MeoAssistant}/OcrImageAnalyzer.h (96%) rename src/{MeoAssistance => MeoAssistant}/OcrPack.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/OcrPack.h (100%) rename src/{MeoAssistance => MeoAssistant}/PenguinPack.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/PenguinPack.h (100%) rename src/{MeoAssistance => MeoAssistant}/PenguinUploader.cpp (96%) rename src/{MeoAssistance => MeoAssistant}/PenguinUploader.h (100%) rename src/{MeoAssistance => MeoAssistant}/ProcessTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/ProcessTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/ProcessTaskImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/ProcessTaskImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/README.md (98%) rename src/{MeoAssistance => MeoAssistant}/RecruitConfiger.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/RecruitConfiger.h (100%) rename src/{MeoAssistance => MeoAssistant}/RecruitImageAnalyzer.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/RecruitImageAnalyzer.h (100%) rename src/{MeoAssistance => MeoAssistant}/RecruitTask.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/RecruitTask.h (100%) rename src/{MeoAssistance => MeoAssistant}/Resource.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/Resource.h (100%) rename src/{MeoAssistance => MeoAssistant}/RuntimeStatus.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/RuntimeStatus.h (100%) rename src/{MeoAssistance => MeoAssistant}/TaskData.cpp (97%) rename src/{MeoAssistance => MeoAssistant}/TaskData.h (98%) rename src/{MeoAssistance => MeoAssistant}/TemplResource.cpp (99%) rename src/{MeoAssistance => MeoAssistant}/TemplResource.h (100%) rename src/{MeoAssistance => MeoAssistant}/UserConfiger.cpp (100%) rename src/{MeoAssistance => MeoAssistant}/UserConfiger.h (100%) rename src/{MeoAssistance => MeoAssistant}/Version.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77175da5f6..5b2a530057 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 2.8) -project(MeoAsst) +project(MeoAssistantArknights) include_directories(include 3rdparty/include) -aux_source_directory(src/MeoAssistance SRC) -add_definitions(-DMEO_DLL_EXPORTS) +aux_source_directory(src/MeoAssistant SRC) +add_definitions(-DASST_DLL_EXPORTS) add_compile_options("$<$:/utf-8>") add_compile_options("$<$:/utf-8>") @@ -14,11 +14,11 @@ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") set(CMAKE_CXX_STANDARD 17) -add_library(MeoAsst_LIB SHARED ${SRC}) +add_library(MeoAssistant_LIB SHARED ${SRC}) find_library(Opencv_LIB NAMES opencv_world453 PATHS 3rdparty/lib) find_library(PaddleOCR_LIB NAMES ppocr PATHS 3rdparty/lib) find_library(Penguin_LIB NAMES penguin-stats-recognize PATHS 3rdparty/lib) find_library(MeoJson_LIB NAMES libmeojson PATHS 3rdparty/lib) -target_link_libraries(MeoAsst_LIB ${Opencv_LIB} ${PaddleOCR_LIB} ${Penguin_LIB} ${MeoJson_LIB}) +target_link_libraries(MeoAssistant_LIB ${Opencv_LIB} ${PaddleOCR_LIB} ${Penguin_LIB} ${MeoJson_LIB}) diff --git a/MeoAssistance.sln b/MeoAssistantArknights.sln similarity index 94% rename from MeoAssistance.sln rename to MeoAssistantArknights.sln index 5efd5a379b..2112154325 100644 --- a/MeoAssistance.sln +++ b/MeoAssistantArknights.sln @@ -1,69 +1,71 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31912.275 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MeoAssistance", "src\MeoAssistance\MeoAssistance.vcxproj", "{362D1E30-F5AE-4279-9985-65C27B3BA300}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{6C4B8D52-51D1-45F8-AAEC-808035443FD6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCaller", "tools\TestCaller\TestCaller.vcxproj", "{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}" - ProjectSection(ProjectDependencies) = postProject - {362D1E30-F5AE-4279-9985-65C27B3BA300} = {362D1E30-F5AE-4279-9985-65C27B3BA300} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeoAsstGui", "src\MeoAsstGui\MeoAsstGui.csproj", "{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}" - ProjectSection(ProjectDependencies) = postProject - {362D1E30-F5AE-4279-9985-65C27B3BA300} = {362D1E30-F5AE-4279-9985-65C27B3BA300} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransparentImageCvt", "tools\TransparentImageCvt\TransparentImageCvt.vcxproj", "{093A3174-A27E-4D23-B64E-16F9448AD5AC}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|x64 = Release|x64 - Release|x86 = Release|x86 - RelWithDebInfo|x64 = RelWithDebInfo|x64 - RelWithDebInfo|x86 = RelWithDebInfo|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.ActiveCfg = Release|x64 - {362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.Build.0 = Release|x64 - {362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x86.ActiveCfg = Release|x64 - {362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64 - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.ActiveCfg = Release|x64 - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.Build.0 = Release|x64 - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x86.ActiveCfg = Release|x64 - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64 - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.ActiveCfg = Release|Any CPU - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.Build.0 = Release|Any CPU - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x86.ActiveCfg = Release|Any CPU - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x86.Build.0 = Release|Any CPU - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Any CPU - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|Any CPU - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU - {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x64.ActiveCfg = Release|x64 - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x64.Build.0 = Release|x64 - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x86.ActiveCfg = Release|Win32 - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x86.Build.0 = Release|Win32 - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x64.Build.0 = Release|x64 - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x86.ActiveCfg = Release|Win32 - {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64} = {6C4B8D52-51D1-45F8-AAEC-808035443FD6} - {093A3174-A27E-4D23-B64E-16F9448AD5AC} = {6C4B8D52-51D1-45F8-AAEC-808035443FD6} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {4F2C0E4B-4FE9-47C6-A878-6BD2FAD8B9B2} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31912.275 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{6C4B8D52-51D1-45F8-AAEC-808035443FD6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCaller", "tools\TestCaller\TestCaller.vcxproj", "{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}" + ProjectSection(ProjectDependencies) = postProject + {362D1E30-F5AE-4279-9985-65C27B3BA300} = {362D1E30-F5AE-4279-9985-65C27B3BA300} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeoAsstGui", "src\MeoAsstGui\MeoAsstGui.csproj", "{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}" + ProjectSection(ProjectDependencies) = postProject + {362D1E30-F5AE-4279-9985-65C27B3BA300} = {362D1E30-F5AE-4279-9985-65C27B3BA300} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransparentImageCvt", "tools\TransparentImageCvt\TransparentImageCvt.vcxproj", "{093A3174-A27E-4D23-B64E-16F9448AD5AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MeoAssistant", "src\MeoAssistant\MeoAssistant.vcxproj", "{362D1E30-F5AE-4279-9985-65C27B3BA300}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|x64 = Release|x64 + Release|x86 = Release|x86 + RelWithDebInfo|x64 = RelWithDebInfo|x64 + RelWithDebInfo|x86 = RelWithDebInfo|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.ActiveCfg = Release|x64 + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.Build.0 = Release|x64 + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x86.ActiveCfg = Release|x64 + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64 + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.ActiveCfg = Release|Any CPU + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.Build.0 = Release|Any CPU + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x86.ActiveCfg = Release|Any CPU + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x86.Build.0 = Release|Any CPU + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Any CPU + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|Any CPU + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU + {FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x64.ActiveCfg = Release|x64 + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x64.Build.0 = Release|x64 + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x86.ActiveCfg = Release|Win32 + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x86.Build.0 = Release|Win32 + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x64.Build.0 = Release|x64 + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x86.ActiveCfg = Release|Win32 + {093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x86.Build.0 = Release|Win32 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.ActiveCfg = Release|x64 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.Build.0 = Release|x64 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x86.ActiveCfg = Release|x64 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x86.Build.0 = Release|x64 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64 + {362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64} = {6C4B8D52-51D1-45F8-AAEC-808035443FD6} + {093A3174-A27E-4D23-B64E-16F9448AD5AC} = {6C4B8D52-51D1-45F8-AAEC-808035443FD6} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4F2C0E4B-4FE9-47C6-A878-6BD2FAD8B9B2} + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md index a83160cb9d..353051bf90 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,9 @@ platform
- license - commit - stars + license + commit + stars

@@ -38,8 +38,8 @@ A Game Assistant for Arknights ## 下载地址 -[稳定版](https://github.com/MistEO/MeoAssistance/releases/latest) -[测试版](https://github.com/MistEO/MeoAssistance/releases) +[稳定版](https://github.com/MistEO/MeoAssistantArknights/releases/latest) +[测试版](https://github.com/MistEO/MeoAssistantArknights/releases) ## 模拟器支持 diff --git a/appveyor.yml b/appveyor.yml index 5f620559fb..c3e4a5f2a2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,7 +7,7 @@ clone_depth: 1 before_build: - ps: nuget restore build: - project: MeoAssistance.sln + project: MeoAssistantArknights.sln parallel: true verbosity: minimal notifications: diff --git a/include/AsstCaller.h b/include/AsstCaller.h index 6eae44818c..24bad509b6 100644 --- a/include/AsstCaller.h +++ b/include/AsstCaller.h @@ -5,34 +5,34 @@ #ifdef __cplusplus extern "C" { #endif - typedef void (MEO_CALL* AsstCallback)(int msg, const char* detail_json, void* custom_arg); + typedef void (ASST_CALL* AsstCallback)(int msg, const char* detail_json, void* custom_arg); - MEOAPI_PORT void* MEO_CALL AsstCreate(const char* dirname); - MEOAPI_PORT void* MEO_CALL AsstCreateEx(const char* dirname, AsstCallback callback, void* custom_arg); - void MEOAPI AsstDestroy(void* p_asst); + ASSTAPI_PORT void* ASST_CALL AsstCreate(const char* dirname); + ASSTAPI_PORT void* ASST_CALL AsstCreateEx(const char* dirname, AsstCallback callback, void* custom_arg); + void ASSTAPI AsstDestroy(void* p_asst); - bool MEOAPI AsstCatchDefault(void* p_asst); - bool MEOAPI AsstCatchEmulator(void* p_asst); - bool MEOAPI AsstCatchCustom(void* p_asst, const char* address); - bool MEOAPI AsstCatchFake(void* p_asst); + bool ASSTAPI AsstCatchDefault(void* p_asst); + bool ASSTAPI AsstCatchEmulator(void* p_asst); + bool ASSTAPI AsstCatchCustom(void* p_asst, const char* address); + bool ASSTAPI AsstCatchFake(void* p_asst); - bool MEOAPI AsstAppendFight(void* p_asst, int max_mecidine, int max_stone, int max_times); - bool MEOAPI AsstAppendAward(void* p_asst); - bool MEOAPI AsstAppendVisit(void* p_asst); - bool MEOAPI AsstAppendMall(void* p_asst, bool with_shopping); - //bool MEOAPI AsstAppendProcessTask(void* p_asst, const char* task); - bool MEOAPI AsstAppendInfrast(void* p_asst, int work_mode, const char** order, int order_size, const char* uses_of_drones, double dorm_threshold); - bool MEOAPI AsstAppendRecruit(void* p_asst, int max_times, const int select_level[], int select_len, const int confirm_level[], int confirm_len, bool need_refresh); - bool MEOAPI AsstAppendDebug(void* p_asst); + bool ASSTAPI AsstAppendFight(void* p_asst, int max_mecidine, int max_stone, int max_times); + bool ASSTAPI AsstAppendAward(void* p_asst); + bool ASSTAPI AsstAppendVisit(void* p_asst); + bool ASSTAPI AsstAppendMall(void* p_asst, bool with_shopping); + //bool ASSTAPI AsstAppendProcessTask(void* p_asst, const char* task); + bool ASSTAPI AsstAppendInfrast(void* p_asst, int work_mode, const char** order, int order_size, const char* uses_of_drones, double dorm_threshold); + bool ASSTAPI AsstAppendRecruit(void* 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(void* p_asst); - bool MEOAPI AsstStartRecruitCalc(void* p_asst, const int select_level[], int required_len, bool set_time); - bool MEOAPI AsstStart(void* p_asst); - bool MEOAPI AsstStop(void* p_asst); + bool ASSTAPI AsstStartRecruitCalc(void* p_asst, const int select_level[], int required_len, bool set_time); + bool ASSTAPI AsstStart(void* p_asst); + bool ASSTAPI AsstStop(void* p_asst); - bool MEOAPI AsstSetPenguinId(void* p_asst, const char* id); - //bool MEOAPI AsstSetParam(void* p_asst, const char* type, const char* param, const char* value); + bool ASSTAPI AsstSetPenguinId(void* p_asst, const char* id); + //bool ASSTAPI AsstSetParam(void* p_asst, const char* type, const char* param, const char* value); - MEOAPI_PORT const char* MEO_CALL AsstGetVersion(); + ASSTAPI_PORT const char* ASST_CALL AsstGetVersion(); #ifdef __cplusplus } #endif \ No newline at end of file diff --git a/include/AsstPort.h b/include/AsstPort.h index 390fddcca9..f426d7fef0 100644 --- a/include/AsstPort.h +++ b/include/AsstPort.h @@ -1,37 +1,37 @@ #pragma once // The way how the function is called -#if !defined(MEO_CALL) +#if !defined(ASST_CALL) #if defined(_WIN32) -#define MEO_CALL __stdcall +#define ASST_CALL __stdcall #else -#define MEO_CALL +#define ASST_CALL #endif /* _WIN32 */ -#endif /* MEO_CALL */ +#endif /* ASST_CALL */ // The function exported symbols #if defined _WIN32 || defined __CYGWIN__ -#define MEO_DLL_IMPORT __declspec(dllimport) -#define MEO_DLL_EXPORT __declspec(dllexport) -#define MEO_DLL_LOCAL +#define ASST_DLL_IMPORT __declspec(dllimport) +#define ASST_DLL_EXPORT __declspec(dllexport) +#define ASST_DLL_LOCAL #else #if __GNUC__ >= 4 -#define MEO_DLL_IMPORT __attribute__ ((visibility ("default"))) -#define MEO_DLL_EXPORT __attribute__ ((visibility ("default"))) -#define MEO_DLL_LOCAL __attribute__ ((visibility ("hidden"))) +#define ASST_DLL_IMPORT __attribute__ ((visibility ("default"))) +#define ASST_DLL_EXPORT __attribute__ ((visibility ("default"))) +#define ASST_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #else -#define MEO_DLL_IMPORT -#define MEO_DLL_EXPORT -#define MEO_DLL_LOCAL +#define ASST_DLL_IMPORT +#define ASST_DLL_EXPORT +#define ASST_DLL_LOCAL #endif #endif -#ifdef MEO_DLL_EXPORTS // defined if we are building the DLL (instead of using it) -#define MEOAPI_PORT MEO_DLL_EXPORT +#ifdef ASST_DLL_EXPORTS // defined if we are building the DLL (instead of using it) +#define ASSTAPI_PORT ASST_DLL_EXPORT #else -#define MEOAPI_PORT MEO_DLL_IMPORT -#endif // MEO_DLL_EXPORTS +#define ASSTAPI_PORT ASST_DLL_IMPORT +#endif // ASST_DLL_EXPORTS -#define MEOAPI MEOAPI_PORT MEO_CALL +#define ASSTAPI ASSTAPI_PORT ASST_CALL -#define MEOLOCAL MEO_DLL_LOCAL MEO_CALL \ No newline at end of file +#define ASSTLOCAL ASST_DLL_LOCAL ASST_CALL \ No newline at end of file diff --git a/src/MeoAssistance/.editorconfig b/src/MeoAssistant/.editorconfig similarity index 100% rename from src/MeoAssistance/.editorconfig rename to src/MeoAssistant/.editorconfig diff --git a/src/MeoAssistance/AbstractConfiger.cpp b/src/MeoAssistant/AbstractConfiger.cpp similarity index 100% rename from src/MeoAssistance/AbstractConfiger.cpp rename to src/MeoAssistant/AbstractConfiger.cpp diff --git a/src/MeoAssistance/AbstractConfiger.h b/src/MeoAssistant/AbstractConfiger.h similarity index 100% rename from src/MeoAssistance/AbstractConfiger.h rename to src/MeoAssistant/AbstractConfiger.h diff --git a/src/MeoAssistance/AbstractImageAnalyzer.cpp b/src/MeoAssistant/AbstractImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/AbstractImageAnalyzer.cpp rename to src/MeoAssistant/AbstractImageAnalyzer.cpp diff --git a/src/MeoAssistance/AbstractImageAnalyzer.h b/src/MeoAssistant/AbstractImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/AbstractImageAnalyzer.h rename to src/MeoAssistant/AbstractImageAnalyzer.h diff --git a/src/MeoAssistance/AbstractResource.cpp b/src/MeoAssistant/AbstractResource.cpp similarity index 100% rename from src/MeoAssistance/AbstractResource.cpp rename to src/MeoAssistant/AbstractResource.cpp diff --git a/src/MeoAssistance/AbstractResource.h b/src/MeoAssistant/AbstractResource.h similarity index 100% rename from src/MeoAssistance/AbstractResource.h rename to src/MeoAssistant/AbstractResource.h diff --git a/src/MeoAssistance/AbstractTask.cpp b/src/MeoAssistant/AbstractTask.cpp similarity index 100% rename from src/MeoAssistance/AbstractTask.cpp rename to src/MeoAssistant/AbstractTask.cpp diff --git a/src/MeoAssistance/AbstractTask.h b/src/MeoAssistant/AbstractTask.h similarity index 99% rename from src/MeoAssistance/AbstractTask.h rename to src/MeoAssistant/AbstractTask.h index 5b77353d96..4fbf56d6ad 100644 --- a/src/MeoAssistance/AbstractTask.h +++ b/src/MeoAssistant/AbstractTask.h @@ -25,7 +25,7 @@ namespace asst void set_retry_times(int times) noexcept { m_retry_times = times; } void set_task_chain(std::string name) noexcept { m_task_chain = std::move(name); } const std::string& get_task_chain() const noexcept { return m_task_chain; } - + constexpr static int RetryTimesDefault = 20; protected: virtual bool _run() = 0; diff --git a/src/MeoAssistance/Assistance.cpp b/src/MeoAssistant/Assistance.cpp similarity index 96% rename from src/MeoAssistance/Assistance.cpp rename to src/MeoAssistant/Assistance.cpp index 52a1941df6..1b68dac998 100644 --- a/src/MeoAssistance/Assistance.cpp +++ b/src/MeoAssistant/Assistance.cpp @@ -1,595 +1,595 @@ -#include "Assistance.h" - -#include -#include - -#include -#include - -#include "AsstUtils.hpp" -#include "Controller.h" -#include "Logger.hpp" -#include "Resource.h" - -#include "CreditShoppingTask.h" -#include "InfrastDormTask.h" -#include "InfrastInfoTask.h" -#include "InfrastMfgTask.h" -#include "InfrastOfficeTask.h" -#include "InfrastPowerTask.h" -#include "InfrastReceptionTask.h" -#include "InfrastTradeTask.h" -#include "ProcessTask.h" -#include "RecruitTask.h" -#include "AutoRecruitTask.h" -#include "InfrastControlTask.h" -#include "RuntimeStatus.h" - -using namespace asst; - -Assistance::Assistance(std::string dirname, AsstCallback callback, void* callback_arg) - : m_dirname(std::move(dirname) + "\\"), - m_callback(callback), - m_callback_arg(callback_arg) -{ - Logger::set_dirname(m_dirname); - Controller::set_dirname(m_dirname); - - LogTraceFunction; - - bool resource_ret = Resrc.load(m_dirname + "Resource\\"); - if (!resource_ret) { - const std::string& error = Resrc.get_last_error(); - Log.error("resource broken", error); - if (m_callback == nullptr) { - throw error; - } - json::value callback_json; - callback_json["type"] = "resource broken"; - callback_json["what"] = error; - m_callback(AsstMsg::InitFaild, callback_json, m_callback_arg); - throw error; - } - - m_working_thread = std::thread(std::bind(&Assistance::working_proc, this)); - m_msg_thread = std::thread(std::bind(&Assistance::msg_proc, this)); -} - -Assistance::~Assistance() -{ - LogTraceFunction; - - m_thread_exit = true; - m_thread_idle = true; - m_condvar.notify_all(); - m_msg_condvar.notify_all(); - - if (m_working_thread.joinable()) { - m_working_thread.join(); - } - if (m_msg_thread.joinable()) { - m_msg_thread.join(); - } -} - -bool asst::Assistance::catch_default() -{ - LogTraceFunction; - - auto& opt = Resrc.cfg().get_options(); - switch (opt.connect_type) { - case ConnectType::Emulator: - return catch_emulator(); - case ConnectType::Custom: - return catch_custom(); - default: - return false; - } -} - -bool Assistance::catch_emulator(const std::string& emulator_name) -{ - LogTraceFunction; - - stop(); - - bool ret = false; - //std::string cor_name = emulator_name; - auto& cfg = Resrc.cfg(); - - std::unique_lock lock(m_mutex); - - // 自动匹配模拟器,逐个找 - if (emulator_name.empty()) { - for (const auto& [name, info] : cfg.get_emulators_info()) { - ret = Ctrler.try_capture(info); - if (ret) { - //cor_name = name; - break; - } - } - } - else { // 指定的模拟器 - auto& info = cfg.get_emulators_info().at(emulator_name); - ret = Ctrler.try_capture(info); - } - - m_inited = ret; - return ret; -} - -bool asst::Assistance::catch_custom(const std::string& address) -{ - LogTraceFunction; - - stop(); - - bool ret = false; - auto& cfg = Resrc.cfg(); - - std::unique_lock lock(m_mutex); - - EmulatorInfo remote_info = cfg.get_emulators_info().at("Custom"); - if (!address.empty()) { - remote_info.adb.addresses.push_back(address); - } - - ret = Ctrler.try_capture(remote_info, true); - - m_inited = ret; - return ret; -} - -bool asst::Assistance::catch_fake() -{ - LogTraceFunction; - - stop(); - - m_inited = true; - return true; -} - -bool asst::Assistance::append_fight(int mecidine, int stone, int times, bool only_append) -{ - LogTraceFunction; - if (!m_inited) { - return false; - } - - std::unique_lock lock(m_mutex); - - auto task_ptr = std::make_shared(task_callback, (void*)this); - task_ptr->set_task_chain("Fight"); - task_ptr->set_tasks({ "SanityBegin" }); - task_ptr->set_times_limit("MedicineConfirm", mecidine); - task_ptr->set_times_limit("StoneConfirm", stone); - task_ptr->set_times_limit("StartButton1", times); - - m_tasks_queue.emplace(task_ptr); - - if (!only_append) { - return start(false); - } - - return true; -} - -bool asst::Assistance::append_award(bool only_append) -{ - return append_process_task("AwardBegin", "Award"); -} - -bool asst::Assistance::append_visit(bool only_append) -{ - return append_process_task("VisitBegin", "Visit"); -} - -bool asst::Assistance::append_mall(bool with_shopping, bool only_append) -{ - LogTraceFunction; - if (!m_inited) { - return false; - } - - std::unique_lock lock(m_mutex); - - const std::string task_chain = "Mall"; - - append_process_task("MallBegin", task_chain); - - if (with_shopping) { - auto shopping_task_ptr = std::make_shared(task_callback, (void*)this); - shopping_task_ptr->set_task_chain(task_chain); - m_tasks_queue.emplace(shopping_task_ptr); - } - - if (!only_append) { - return start(false); - } - - return true; -} - -bool Assistance::append_process_task(const std::string& task, std::string task_chain, int retry_times) -{ - LogTraceFunction; - if (!m_inited) { - return false; - } - - //std::unique_lock lock(m_mutex); - - if (task_chain.empty()) { - task_chain = task; - } - - 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_retry_times(retry_times); - - m_tasks_queue.emplace(task_ptr); - - //if (!only_append) { - // return start(false); - //} - - return true; -} - -bool asst::Assistance::append_recruit(unsigned max_times, const std::vector& select_level, const std::vector& confirm_level, bool need_refresh) -{ - LogTraceFunction; - if (!m_inited) { - return false; - } - static const std::string TaskChain = "Recruit"; - - append_process_task("RecruitBegin", TaskChain); - - auto recruit_task_ptr = std::make_shared(task_callback, (void*)this); - recruit_task_ptr->set_max_times(max_times); - recruit_task_ptr->set_need_refresh(need_refresh); - recruit_task_ptr->set_select_level(select_level); - recruit_task_ptr->set_confirm_level(confirm_level); - recruit_task_ptr->set_task_chain(TaskChain); - recruit_task_ptr->set_retry_times(AutoRecruitTaskRetryTimesDefault); - - m_tasks_queue.emplace(recruit_task_ptr); - - return true; -} - -#ifdef LOG_TRACE -bool Assistance::append_debug() -{ - LogTraceFunction; - if (!m_inited) { - return false; - } - - std::unique_lock lock(m_mutex); - - { - constexpr static const char* DebugTaskChain = "Debug"; - auto shift_task_ptr = std::make_shared(task_callback, (void*)this); - shift_task_ptr->set_work_mode(infrast::WorkMode::Aggressive); - shift_task_ptr->set_facility("Control"); - shift_task_ptr->set_product("MoodAddition"); - shift_task_ptr->set_task_chain(DebugTaskChain); - m_tasks_queue.emplace(shift_task_ptr); - } - - return true; -} -#endif - -bool Assistance::start_recruit_calc(const std::vector& select_level, bool set_time) -{ - LogTraceFunction; - if (!m_inited) { - return false; - } - - std::unique_lock lock(m_mutex); - - auto task_ptr = std::make_shared(task_callback, (void*)this); - task_ptr->set_param(select_level, set_time); - task_ptr->set_retry_times(OpenRecruitTaskRetryTimesDefault); - task_ptr->set_task_chain("RecruitCalc"); - m_tasks_queue.emplace(task_ptr); - - return start(false); -} - -bool asst::Assistance::append_infrast(infrast::WorkMode work_mode, const std::vector& order, const std::string& uses_of_drones, double dorm_threshold, bool only_append) -{ - LogTraceFunction; - if (!m_inited) { - return false; - } - - // 保留接口,目前强制按激进模式进行换班 - work_mode = infrast::WorkMode::Aggressive; - - constexpr static const char* InfrastTaskCahin = "Infrast"; - - // 这个流程任务,结束的时候是处于基建主界面的。既可以用于进入基建,也可以用于从设施里返回基建主界面 - - auto append_infrast_begin = [&]() { - append_process_task("InfrastBegin", InfrastTaskCahin); - }; - - append_infrast_begin(); - - auto info_task_ptr = std::make_shared(task_callback, (void*)this); - info_task_ptr->set_work_mode(work_mode); - info_task_ptr->set_task_chain(InfrastTaskCahin); - info_task_ptr->set_mood_threshold(dorm_threshold); - - m_tasks_queue.emplace(info_task_ptr); - - // 因为后期要考虑多任务间的联动等,所以这些任务的声明暂时不放到for循环中 - auto mfg_task_ptr = std::make_shared(task_callback, (void*)this); - mfg_task_ptr->set_work_mode(work_mode); - mfg_task_ptr->set_task_chain(InfrastTaskCahin); - mfg_task_ptr->set_mood_threshold(dorm_threshold); - mfg_task_ptr->set_uses_of_drone(uses_of_drones); - auto trade_task_ptr = std::make_shared(task_callback, (void*)this); - trade_task_ptr->set_work_mode(work_mode); - trade_task_ptr->set_task_chain(InfrastTaskCahin); - trade_task_ptr->set_mood_threshold(dorm_threshold); - trade_task_ptr->set_uses_of_drone(uses_of_drones); - auto power_task_ptr = std::make_shared(task_callback, (void*)this); - power_task_ptr->set_work_mode(work_mode); - power_task_ptr->set_task_chain(InfrastTaskCahin); - power_task_ptr->set_mood_threshold(dorm_threshold); - auto office_task_ptr = std::make_shared(task_callback, (void*)this); - office_task_ptr->set_work_mode(work_mode); - office_task_ptr->set_task_chain(InfrastTaskCahin); - office_task_ptr->set_mood_threshold(dorm_threshold); - auto recpt_task_ptr = std::make_shared(task_callback, (void*)this); - recpt_task_ptr->set_work_mode(work_mode); - recpt_task_ptr->set_task_chain(InfrastTaskCahin); - recpt_task_ptr->set_mood_threshold(dorm_threshold); - auto control_task_ptr = std::make_shared(task_callback, (void*)this); - control_task_ptr->set_work_mode(work_mode); - control_task_ptr->set_task_chain(InfrastTaskCahin); - control_task_ptr->set_mood_threshold(dorm_threshold); - - auto dorm_task_ptr = std::make_shared(task_callback, (void*)this); - dorm_task_ptr->set_work_mode(work_mode); - dorm_task_ptr->set_task_chain(InfrastTaskCahin); - dorm_task_ptr->set_mood_threshold(dorm_threshold); - - for (const auto& facility : order) { - if (facility == "Dorm") { - m_tasks_queue.emplace(dorm_task_ptr); - } - else if (facility == "Mfg") { - m_tasks_queue.emplace(mfg_task_ptr); - } - else if (facility == "Trade") { - m_tasks_queue.emplace(trade_task_ptr); - } - else if (facility == "Power") { - m_tasks_queue.emplace(power_task_ptr); - } - else if (facility == "Office") { - m_tasks_queue.emplace(office_task_ptr); - } - else if (facility == "Reception") { - m_tasks_queue.emplace(recpt_task_ptr); - } - else if (facility == "Control") { - m_tasks_queue.emplace(control_task_ptr); - } - else { - Log.error("append_infrast | Unknown facility", facility); - } - append_infrast_begin(); - } - - if (!only_append) { - return start(false); - } - - return true; -} - -void asst::Assistance::set_penguin_id(const std::string& id) -{ - auto& opt = Resrc.cfg().get_options(); - if (id.empty()) { - opt.penguin_report_extra_param.clear(); - } - else { - opt.penguin_report_extra_param = "-H \"authorization: PenguinID " + id + "\""; - } -} - -bool asst::Assistance::start(bool block) -{ - LogTraceFunction; - Log.trace("Start |", block ? "block" : "non block"); - - if (!m_thread_idle || !m_inited) { - return false; - } - std::unique_lock lock; - if (block) { // 外部调用 - lock = std::unique_lock(m_mutex); - } - - m_thread_idle = false; - m_condvar.notify_one(); - - return true; -} - -bool Assistance::stop(bool block) -{ - LogTraceFunction; - Log.trace("Stop |", block ? "block" : "non block"); - - m_thread_idle = true; - - std::unique_lock lock; - if (block) { // 外部调用 - lock = std::unique_lock(m_mutex); - } - decltype(m_tasks_queue) empty; - m_tasks_queue.swap(empty); - - //clear_cache(); - - return true; -} - -void Assistance::working_proc() -{ - LogTraceFunction; - - std::string pre_taskchain; - while (!m_thread_exit) { - //LogTraceScope("Assistance::working_proc Loop"); - std::unique_lock lock(m_mutex); - - if (!m_thread_idle && !m_tasks_queue.empty()) { - auto start_time = std::chrono::system_clock::now(); - - auto task_ptr = m_tasks_queue.front(); - - std::string cur_taskchain = task_ptr->get_task_chain(); - json::value task_json = json::object{ - {"task_chain", cur_taskchain}, - }; - - if (cur_taskchain != pre_taskchain) { - task_callback(AsstMsg::TaskChainStart, task_json, this); - pre_taskchain = cur_taskchain; - } - - task_ptr->set_exit_flag(&m_thread_idle); - bool ret = task_ptr->run(); - m_tasks_queue.pop(); - - if (!ret) { - task_callback(AsstMsg::TaskError, task_json, this); - } - else if (m_tasks_queue.empty() || cur_taskchain != m_tasks_queue.front()->get_task_chain()) { - task_callback(AsstMsg::TaskChainCompleted, task_json, this); - } - if (m_tasks_queue.empty()) { - task_callback(AsstMsg::AllTasksCompleted, json::value(), this); - } - - //clear_cache(); - - auto& delay = Resrc.cfg().get_options().task_delay; - m_condvar.wait_until(lock, start_time + std::chrono::milliseconds(delay), - [&]() -> bool { return m_thread_idle; }); - } - else { - pre_taskchain.clear(); - m_thread_idle = true; - //controller.set_idle(true); - m_condvar.wait(lock); - } - } -} - -void Assistance::msg_proc() -{ - LogTraceFunction; - - while (!m_thread_exit) { - //LogTraceScope("Assistance::msg_proc Loop"); - std::unique_lock lock(m_msg_mutex); - if (!m_msg_queue.empty()) { - // 结构化绑定只能是引用,后续的pop会使引用失效,所以需要重新构造一份,这里采用了move的方式 - auto&& [temp_msg, temp_detail] = m_msg_queue.front(); - AsstMsg msg = std::move(temp_msg); - json::value detail = std::move(temp_detail); - m_msg_queue.pop(); - lock.unlock(); - - if (m_callback) { - m_callback(msg, detail, m_callback_arg); - } - } - else { - m_msg_condvar.wait(lock); - } - } -} - -void Assistance::task_callback(AsstMsg msg, const json::value& detail, void* custom_arg) -{ - Log.trace("Assistance::task_callback |", msg, detail.to_string()); - - Assistance* p_this = (Assistance*)custom_arg; - json::value more_detail = detail; - switch (msg) { - case AsstMsg::PtrIsNull: - case AsstMsg::ImageIsEmpty: - p_this->stop(false); - break; - case AsstMsg::StageDrops: - more_detail = p_this->organize_stage_drop(more_detail); - break; - default: - break; - } - - // Todo: 有些不需要回调给外部的消息,得在这里给拦截掉 - // 加入回调消息队列,由回调消息线程外抛给外部 - p_this->append_callback(msg, std::move(more_detail)); -} - -void asst::Assistance::append_callback(AsstMsg msg, json::value detail) -{ - std::unique_lock lock(m_msg_mutex); - m_msg_queue.emplace(msg, std::move(detail)); - m_msg_condvar.notify_one(); -} - -void Assistance::clear_cache() -{ - Resrc.item().clear_drop_count(); - task.clear_cache(); -} - -json::value asst::Assistance::organize_stage_drop(const json::value& rec) -{ - json::value dst = rec; - auto& item = Resrc.item(); - for (json::value& drop : dst["drops"].as_array()) { - std::string id = drop["itemId"].as_string(); - int quantity = drop["quantity"].as_integer(); - item.increase_drop_count(id, quantity); - const std::string& name = item.get_item_name(id); - drop["itemName"] = name.empty() ? "未知材料" : name; - } - std::vector statistics_vec; - for (auto&& [id, count] : item.get_drop_count()) { - json::value info; - info["itemId"] = id; - const std::string& name = item.get_item_name(id); - info["itemName"] = name.empty() ? "未知材料" : name; - info["count"] = count; - statistics_vec.emplace_back(std::move(info)); - } - // 排个序,数量多的放前面 - std::sort(statistics_vec.begin(), statistics_vec.end(), - [](const json::value& lhs, const json::value& rhs) -> bool { - return lhs.at("count").as_integer() > rhs.at("count").as_integer(); - }); - - dst["statistics"] = json::array(std::move(statistics_vec)); - - Log.trace("organize_stage_drop | ", dst.to_string()); - - return dst; -} +#include "Assistance.h" + +#include +#include + +#include +#include + +#include "AsstUtils.hpp" +#include "Controller.h" +#include "Logger.hpp" +#include "Resource.h" + +#include "CreditShoppingTask.h" +#include "InfrastDormTask.h" +#include "InfrastInfoTask.h" +#include "InfrastMfgTask.h" +#include "InfrastOfficeTask.h" +#include "InfrastPowerTask.h" +#include "InfrastReceptionTask.h" +#include "InfrastTradeTask.h" +#include "ProcessTask.h" +#include "RecruitTask.h" +#include "AutoRecruitTask.h" +#include "InfrastControlTask.h" +#include "RuntimeStatus.h" + +using namespace asst; + +Assistance::Assistance(std::string dirname, AsstCallback callback, void* callback_arg) + : m_dirname(std::move(dirname) + "\\"), + m_callback(callback), + m_callback_arg(callback_arg) +{ + Logger::set_dirname(m_dirname); + Controller::set_dirname(m_dirname); + + LogTraceFunction; + + bool resource_ret = Resrc.load(m_dirname + "Resource\\"); + if (!resource_ret) { + const std::string& error = Resrc.get_last_error(); + Log.error("resource broken", error); + if (m_callback == nullptr) { + throw error; + } + json::value callback_json; + callback_json["type"] = "resource broken"; + callback_json["what"] = error; + m_callback(AsstMsg::InitFaild, callback_json, m_callback_arg); + throw error; + } + + m_working_thread = std::thread(std::bind(&Assistance::working_proc, this)); + m_msg_thread = std::thread(std::bind(&Assistance::msg_proc, this)); +} + +Assistance::~Assistance() +{ + LogTraceFunction; + + m_thread_exit = true; + m_thread_idle = true; + m_condvar.notify_all(); + m_msg_condvar.notify_all(); + + if (m_working_thread.joinable()) { + m_working_thread.join(); + } + if (m_msg_thread.joinable()) { + m_msg_thread.join(); + } +} + +bool asst::Assistance::catch_default() +{ + LogTraceFunction; + + auto& opt = Resrc.cfg().get_options(); + switch (opt.connect_type) { + case ConnectType::Emulator: + return catch_emulator(); + case ConnectType::Custom: + return catch_custom(); + default: + return false; + } +} + +bool Assistance::catch_emulator(const std::string& emulator_name) +{ + LogTraceFunction; + + stop(); + + bool ret = false; + //std::string cor_name = emulator_name; + auto& cfg = Resrc.cfg(); + + std::unique_lock lock(m_mutex); + + // 自动匹配模拟器,逐个找 + if (emulator_name.empty()) { + for (const auto& [name, info] : cfg.get_emulators_info()) { + ret = Ctrler.try_capture(info); + if (ret) { + //cor_name = name; + break; + } + } + } + else { // 指定的模拟器 + auto& info = cfg.get_emulators_info().at(emulator_name); + ret = Ctrler.try_capture(info); + } + + m_inited = ret; + return ret; +} + +bool asst::Assistance::catch_custom(const std::string& address) +{ + LogTraceFunction; + + stop(); + + bool ret = false; + auto& cfg = Resrc.cfg(); + + std::unique_lock lock(m_mutex); + + EmulatorInfo remote_info = cfg.get_emulators_info().at("Custom"); + if (!address.empty()) { + remote_info.adb.addresses.push_back(address); + } + + ret = Ctrler.try_capture(remote_info, true); + + m_inited = ret; + return ret; +} + +bool asst::Assistance::catch_fake() +{ + LogTraceFunction; + + stop(); + + m_inited = true; + return true; +} + +bool asst::Assistance::append_fight(int mecidine, int stone, int times, bool only_append) +{ + LogTraceFunction; + if (!m_inited) { + return false; + } + + std::unique_lock lock(m_mutex); + + auto task_ptr = std::make_shared(task_callback, (void*)this); + task_ptr->set_task_chain("Fight"); + task_ptr->set_tasks({ "SanityBegin" }); + task_ptr->set_times_limit("MedicineConfirm", mecidine); + task_ptr->set_times_limit("StoneConfirm", stone); + task_ptr->set_times_limit("StartButton1", times); + + m_tasks_queue.emplace(task_ptr); + + if (!only_append) { + return start(false); + } + + return true; +} + +bool asst::Assistance::append_award(bool only_append) +{ + return append_process_task("AwardBegin", "Award"); +} + +bool asst::Assistance::append_visit(bool only_append) +{ + return append_process_task("VisitBegin", "Visit"); +} + +bool asst::Assistance::append_mall(bool with_shopping, bool only_append) +{ + LogTraceFunction; + if (!m_inited) { + return false; + } + + std::unique_lock lock(m_mutex); + + const std::string task_chain = "Mall"; + + append_process_task("MallBegin", task_chain); + + if (with_shopping) { + auto shopping_task_ptr = std::make_shared(task_callback, (void*)this); + shopping_task_ptr->set_task_chain(task_chain); + m_tasks_queue.emplace(shopping_task_ptr); + } + + if (!only_append) { + return start(false); + } + + return true; +} + +bool Assistance::append_process_task(const std::string& task, std::string task_chain, int retry_times) +{ + LogTraceFunction; + if (!m_inited) { + return false; + } + + //std::unique_lock lock(m_mutex); + + if (task_chain.empty()) { + task_chain = task; + } + + 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_retry_times(retry_times); + + m_tasks_queue.emplace(task_ptr); + + //if (!only_append) { + // return start(false); + //} + + return true; +} + +bool asst::Assistance::append_recruit(unsigned max_times, const std::vector& select_level, const std::vector& confirm_level, bool need_refresh) +{ + LogTraceFunction; + if (!m_inited) { + return false; + } + static const std::string TaskChain = "Recruit"; + + append_process_task("RecruitBegin", TaskChain); + + auto recruit_task_ptr = std::make_shared(task_callback, (void*)this); + recruit_task_ptr->set_max_times(max_times); + recruit_task_ptr->set_need_refresh(need_refresh); + recruit_task_ptr->set_select_level(select_level); + recruit_task_ptr->set_confirm_level(confirm_level); + recruit_task_ptr->set_task_chain(TaskChain); + recruit_task_ptr->set_retry_times(AutoRecruitTaskRetryTimesDefault); + + m_tasks_queue.emplace(recruit_task_ptr); + + return true; +} + +#ifdef LOG_TRACE +bool Assistance::append_debug() +{ + LogTraceFunction; + if (!m_inited) { + return false; + } + + std::unique_lock lock(m_mutex); + + { + constexpr static const char* DebugTaskChain = "Debug"; + auto shift_task_ptr = std::make_shared(task_callback, (void*)this); + shift_task_ptr->set_work_mode(infrast::WorkMode::Aggressive); + shift_task_ptr->set_facility("Control"); + shift_task_ptr->set_product("MoodAddition"); + shift_task_ptr->set_task_chain(DebugTaskChain); + m_tasks_queue.emplace(shift_task_ptr); + } + + return true; +} +#endif + +bool Assistance::start_recruit_calc(const std::vector& select_level, bool set_time) +{ + LogTraceFunction; + if (!m_inited) { + return false; + } + + std::unique_lock lock(m_mutex); + + auto task_ptr = std::make_shared(task_callback, (void*)this); + task_ptr->set_param(select_level, set_time); + task_ptr->set_retry_times(OpenRecruitTaskRetryTimesDefault); + task_ptr->set_task_chain("RecruitCalc"); + m_tasks_queue.emplace(task_ptr); + + return start(false); +} + +bool asst::Assistance::append_infrast(infrast::WorkMode work_mode, const std::vector& order, const std::string& uses_of_drones, double dorm_threshold, bool only_append) +{ + LogTraceFunction; + if (!m_inited) { + return false; + } + + // 保留接口,目前强制按激进模式进行换班 + work_mode = infrast::WorkMode::Aggressive; + + constexpr static const char* InfrastTaskCahin = "Infrast"; + + // 这个流程任务,结束的时候是处于基建主界面的。既可以用于进入基建,也可以用于从设施里返回基建主界面 + + auto append_infrast_begin = [&]() { + append_process_task("InfrastBegin", InfrastTaskCahin); + }; + + append_infrast_begin(); + + auto info_task_ptr = std::make_shared(task_callback, (void*)this); + info_task_ptr->set_work_mode(work_mode); + info_task_ptr->set_task_chain(InfrastTaskCahin); + info_task_ptr->set_mood_threshold(dorm_threshold); + + m_tasks_queue.emplace(info_task_ptr); + + // 因为后期要考虑多任务间的联动等,所以这些任务的声明暂时不放到for循环中 + auto mfg_task_ptr = std::make_shared(task_callback, (void*)this); + mfg_task_ptr->set_work_mode(work_mode); + mfg_task_ptr->set_task_chain(InfrastTaskCahin); + mfg_task_ptr->set_mood_threshold(dorm_threshold); + mfg_task_ptr->set_uses_of_drone(uses_of_drones); + auto trade_task_ptr = std::make_shared(task_callback, (void*)this); + trade_task_ptr->set_work_mode(work_mode); + trade_task_ptr->set_task_chain(InfrastTaskCahin); + trade_task_ptr->set_mood_threshold(dorm_threshold); + trade_task_ptr->set_uses_of_drone(uses_of_drones); + auto power_task_ptr = std::make_shared(task_callback, (void*)this); + power_task_ptr->set_work_mode(work_mode); + power_task_ptr->set_task_chain(InfrastTaskCahin); + power_task_ptr->set_mood_threshold(dorm_threshold); + auto office_task_ptr = std::make_shared(task_callback, (void*)this); + office_task_ptr->set_work_mode(work_mode); + office_task_ptr->set_task_chain(InfrastTaskCahin); + office_task_ptr->set_mood_threshold(dorm_threshold); + auto recpt_task_ptr = std::make_shared(task_callback, (void*)this); + recpt_task_ptr->set_work_mode(work_mode); + recpt_task_ptr->set_task_chain(InfrastTaskCahin); + recpt_task_ptr->set_mood_threshold(dorm_threshold); + auto control_task_ptr = std::make_shared(task_callback, (void*)this); + control_task_ptr->set_work_mode(work_mode); + control_task_ptr->set_task_chain(InfrastTaskCahin); + control_task_ptr->set_mood_threshold(dorm_threshold); + + auto dorm_task_ptr = std::make_shared(task_callback, (void*)this); + dorm_task_ptr->set_work_mode(work_mode); + dorm_task_ptr->set_task_chain(InfrastTaskCahin); + dorm_task_ptr->set_mood_threshold(dorm_threshold); + + for (const auto& facility : order) { + if (facility == "Dorm") { + m_tasks_queue.emplace(dorm_task_ptr); + } + else if (facility == "Mfg") { + m_tasks_queue.emplace(mfg_task_ptr); + } + else if (facility == "Trade") { + m_tasks_queue.emplace(trade_task_ptr); + } + else if (facility == "Power") { + m_tasks_queue.emplace(power_task_ptr); + } + else if (facility == "Office") { + m_tasks_queue.emplace(office_task_ptr); + } + else if (facility == "Reception") { + m_tasks_queue.emplace(recpt_task_ptr); + } + else if (facility == "Control") { + m_tasks_queue.emplace(control_task_ptr); + } + else { + Log.error("append_infrast | Unknown facility", facility); + } + append_infrast_begin(); + } + + if (!only_append) { + return start(false); + } + + return true; +} + +void asst::Assistance::set_penguin_id(const std::string& id) +{ + auto& opt = Resrc.cfg().get_options(); + if (id.empty()) { + opt.penguin_report_extra_param.clear(); + } + else { + opt.penguin_report_extra_param = "-H \"authorization: PenguinID " + id + "\""; + } +} + +bool asst::Assistance::start(bool block) +{ + LogTraceFunction; + Log.trace("Start |", block ? "block" : "non block"); + + if (!m_thread_idle || !m_inited) { + return false; + } + std::unique_lock lock; + if (block) { // 外部调用 + lock = std::unique_lock(m_mutex); + } + + m_thread_idle = false; + m_condvar.notify_one(); + + return true; +} + +bool Assistance::stop(bool block) +{ + LogTraceFunction; + Log.trace("Stop |", block ? "block" : "non block"); + + m_thread_idle = true; + + std::unique_lock lock; + if (block) { // 外部调用 + lock = std::unique_lock(m_mutex); + } + decltype(m_tasks_queue) empty; + m_tasks_queue.swap(empty); + + //clear_cache(); + + return true; +} + +void Assistance::working_proc() +{ + LogTraceFunction; + + std::string pre_taskchain; + while (!m_thread_exit) { + //LogTraceScope("Assistance::working_proc Loop"); + std::unique_lock lock(m_mutex); + + if (!m_thread_idle && !m_tasks_queue.empty()) { + auto start_time = std::chrono::system_clock::now(); + + auto task_ptr = m_tasks_queue.front(); + + std::string cur_taskchain = task_ptr->get_task_chain(); + json::value task_json = json::object{ + {"task_chain", cur_taskchain}, + }; + + if (cur_taskchain != pre_taskchain) { + task_callback(AsstMsg::TaskChainStart, task_json, this); + pre_taskchain = cur_taskchain; + } + + task_ptr->set_exit_flag(&m_thread_idle); + bool ret = task_ptr->run(); + m_tasks_queue.pop(); + + if (!ret) { + task_callback(AsstMsg::TaskError, task_json, this); + } + else if (m_tasks_queue.empty() || cur_taskchain != m_tasks_queue.front()->get_task_chain()) { + task_callback(AsstMsg::TaskChainCompleted, task_json, this); + } + if (m_tasks_queue.empty()) { + task_callback(AsstMsg::AllTasksCompleted, json::value(), this); + } + + //clear_cache(); + + auto& delay = Resrc.cfg().get_options().task_delay; + m_condvar.wait_until(lock, start_time + std::chrono::milliseconds(delay), + [&]() -> bool { return m_thread_idle; }); + } + else { + pre_taskchain.clear(); + m_thread_idle = true; + //controller.set_idle(true); + m_condvar.wait(lock); + } + } +} + +void Assistance::msg_proc() +{ + LogTraceFunction; + + while (!m_thread_exit) { + //LogTraceScope("Assistance::msg_proc Loop"); + std::unique_lock lock(m_msg_mutex); + if (!m_msg_queue.empty()) { + // 结构化绑定只能是引用,后续的pop会使引用失效,所以需要重新构造一份,这里采用了move的方式 + auto&& [temp_msg, temp_detail] = m_msg_queue.front(); + AsstMsg msg = std::move(temp_msg); + json::value detail = std::move(temp_detail); + m_msg_queue.pop(); + lock.unlock(); + + if (m_callback) { + m_callback(msg, detail, m_callback_arg); + } + } + else { + m_msg_condvar.wait(lock); + } + } +} + +void Assistance::task_callback(AsstMsg msg, const json::value& detail, void* custom_arg) +{ + Log.trace("Assistance::task_callback |", msg, detail.to_string()); + + Assistance* p_this = (Assistance*)custom_arg; + json::value more_detail = detail; + switch (msg) { + case AsstMsg::PtrIsNull: + case AsstMsg::ImageIsEmpty: + p_this->stop(false); + break; + case AsstMsg::StageDrops: + more_detail = p_this->organize_stage_drop(more_detail); + break; + default: + break; + } + + // Todo: 有些不需要回调给外部的消息,得在这里给拦截掉 + // 加入回调消息队列,由回调消息线程外抛给外部 + p_this->append_callback(msg, std::move(more_detail)); +} + +void asst::Assistance::append_callback(AsstMsg msg, json::value detail) +{ + std::unique_lock lock(m_msg_mutex); + m_msg_queue.emplace(msg, std::move(detail)); + m_msg_condvar.notify_one(); +} + +void Assistance::clear_cache() +{ + Resrc.item().clear_drop_count(); + task.clear_cache(); +} + +json::value asst::Assistance::organize_stage_drop(const json::value& rec) +{ + json::value dst = rec; + auto& item = Resrc.item(); + for (json::value& drop : dst["drops"].as_array()) { + std::string id = drop["itemId"].as_string(); + int quantity = drop["quantity"].as_integer(); + item.increase_drop_count(id, quantity); + const std::string& name = item.get_item_name(id); + drop["itemName"] = name.empty() ? "未知材料" : name; + } + std::vector statistics_vec; + for (auto&& [id, count] : item.get_drop_count()) { + json::value info; + info["itemId"] = id; + const std::string& name = item.get_item_name(id); + info["itemName"] = name.empty() ? "未知材料" : name; + info["count"] = count; + statistics_vec.emplace_back(std::move(info)); + } + // 排个序,数量多的放前面 + std::sort(statistics_vec.begin(), statistics_vec.end(), + [](const json::value& lhs, const json::value& rhs) -> bool { + return lhs.at("count").as_integer() > rhs.at("count").as_integer(); + }); + + dst["statistics"] = json::array(std::move(statistics_vec)); + + Log.trace("organize_stage_drop | ", dst.to_string()); + + return dst; +} diff --git a/src/MeoAssistance/Assistance.h b/src/MeoAssistant/Assistance.h similarity index 100% rename from src/MeoAssistance/Assistance.h rename to src/MeoAssistant/Assistance.h diff --git a/src/MeoAssistance/AsstCaller.cpp b/src/MeoAssistant/AsstCaller.cpp similarity index 95% rename from src/MeoAssistance/AsstCaller.cpp rename to src/MeoAssistant/AsstCaller.cpp index bfc34a0d4c..3199cf5109 100644 --- a/src/MeoAssistance/AsstCaller.cpp +++ b/src/MeoAssistant/AsstCaller.cpp @@ -1,252 +1,252 @@ -#include "AsstCaller.h" - -#include - -#include - -#include "Assistance.h" -#include "AsstDef.h" -#include "AsstUtils.hpp" -#include "Version.h" - -#if 0 -#if _MSC_VER -// Win32平台下Dll的入口 -BOOL APIENTRY DllMain(HINSTANCE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved -) -{ - UNREFERENCED_PARAMETER(hModule); - UNREFERENCED_PARAMETER(lpReserved); - switch (ul_reason_for_call) { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} -#elif VA_GNUC - -#endif -#endif - -AsstCallback _callback = nullptr; - -void CallbackTrans(asst::AsstMsg msg, const json::value& json, void* custom_arg) -{ - _callback(static_cast(msg), asst::utils::utf8_to_gbk(json.to_string()).c_str(), custom_arg); -} - -void* AsstCreate(const char* dirname) -{ - try { - return new asst::Assistance(dirname); - } - catch (...) { - return nullptr; - } -} - -void* AsstCreateEx(const char* dirname, AsstCallback callback, void* custom_arg) -{ - try { - // 创建多实例回调会有问题,有空再慢慢整 - _callback = callback; - return new asst::Assistance(dirname, CallbackTrans, custom_arg); - } - catch (...) { - return nullptr; - } -} - -void AsstDestroy(void* p_asst) -{ - if (p_asst == nullptr) { - return; - } - - delete p_asst; - p_asst = nullptr; -} - -bool AsstCatchDefault(void* p_asst) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->catch_default(); -} - -bool AsstCatchEmulator(void* p_asst) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->catch_emulator(); -} - -bool AsstCatchCustom(void* p_asst, const char* address) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->catch_custom(address); -} - -bool AsstCatchFake(void* p_asst) -{ -#ifdef LOG_TRACE - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->catch_fake(); -#else - return false; -#endif // LOG_TRACE -} - -bool AsstAppendFight(void* p_asst, int max_mecidine, int max_stone, int max_times) -{ - if (p_asst == nullptr) { - return false; - } - asst::Assistance* ptr = (asst::Assistance*)p_asst; - - return ptr->append_fight(max_mecidine, max_stone, max_times); -} - -bool AsstAppendAward(void* p_asst) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->append_award(); -} - -bool AsstAppendVisit(void* p_asst) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->append_visit(); -} - -bool AsstAppendMall(void* p_asst, bool with_shopping) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->append_mall(with_shopping); -} - -//bool AsstAppendProcessTask(void* p_asst, const char* task) -//{ -// if (p_asst == nullptr) { -// return false; -// } -// -// return ((asst::Assistance*)p_asst)->append_process_task(task); -//} - -bool AsstStartRecruitCalc(void* p_asst, const int select_level[], int required_len, bool set_time) -{ - if (p_asst == nullptr) { - return false; - } - std::vector level_vector; - level_vector.assign(select_level, select_level + required_len); - return ((asst::Assistance*)p_asst)->start_recruit_calc(level_vector, set_time); -} - -bool AsstAppendInfrast(void* p_asst, int work_mode, const char** order, int order_size, const char* uses_of_drones, double dorm_threshold) -{ - if (p_asst == nullptr) { - return false; - } - std::vector order_vector; - order_vector.assign(order, order + order_size); - - return ((asst::Assistance*)p_asst)-> - append_infrast( - static_cast(work_mode), - order_vector, - uses_of_drones, - dorm_threshold); -} - -bool AsstAppendRecruit(void* p_asst, int max_times, const int select_level[], int select_len, const int confirm_level[], int confirm_len, bool need_refresh) -{ - if (p_asst == nullptr) { - return false; - } - std::vector required_vector; - required_vector.assign(select_level, select_level + select_len); - std::vector confirm_vector; - confirm_vector.assign(confirm_level, confirm_level + confirm_len); - - return ((asst::Assistance*)p_asst)->append_recruit(max_times, required_vector, confirm_vector, need_refresh); -} - -bool AsstStart(void* p_asst) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->start(); -} - -bool AsstStop(void* p_asst) -{ - if (p_asst == nullptr) { - return false; - } - - return ((asst::Assistance*)p_asst)->stop(); -} - -bool AsstSetPenguinId(void* p_asst, const char* id) -{ - if (p_asst == nullptr) { - return false; - } - auto ptr = (asst::Assistance*)p_asst; - ptr->set_penguin_id(id); - return true; -} - -//bool AsstSetParam(void* p_asst, const char* type, const char* param, const char* value) -//{ -// if (p_asst == nullptr) { -// return false; -// } -// -// return ((asst::Assistance*)p_asst)->set_param(type, param, value); -//} - -const char* AsstGetVersion() -{ - return asst::Version; -} - -bool AsstAppendDebug(void* p_asst) -{ - if (p_asst == nullptr) { - return false; - } -#if LOG_TRACE - return ((asst::Assistance*)p_asst)->append_debug(); -#else - return false; -#endif // LOG_TRACE -} +#include "AsstCaller.h" + +#include + +#include + +#include "Assistance.h" +#include "AsstDef.h" +#include "AsstUtils.hpp" +#include "Version.h" + +#if 0 +#if _MSC_VER +// Win32平台下Dll的入口 +BOOL APIENTRY DllMain(HINSTANCE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved +) +{ + UNREFERENCED_PARAMETER(hModule); + UNREFERENCED_PARAMETER(lpReserved); + switch (ul_reason_for_call) { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} +#elif VA_GNUC + +#endif +#endif + +AsstCallback _callback = nullptr; + +void CallbackTrans(asst::AsstMsg msg, const json::value& json, void* custom_arg) +{ + _callback(static_cast(msg), asst::utils::utf8_to_gbk(json.to_string()).c_str(), custom_arg); +} + +void* AsstCreate(const char* dirname) +{ + try { + return new asst::Assistance(dirname); + } + catch (...) { + return nullptr; + } +} + +void* AsstCreateEx(const char* dirname, AsstCallback callback, void* custom_arg) +{ + try { + // 创建多实例回调会有问题,有空再慢慢整 + _callback = callback; + return new asst::Assistance(dirname, CallbackTrans, custom_arg); + } + catch (...) { + return nullptr; + } +} + +void AsstDestroy(void* p_asst) +{ + if (p_asst == nullptr) { + return; + } + + delete p_asst; + p_asst = nullptr; +} + +bool AsstCatchDefault(void* p_asst) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->catch_default(); +} + +bool AsstCatchEmulator(void* p_asst) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->catch_emulator(); +} + +bool AsstCatchCustom(void* p_asst, const char* address) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->catch_custom(address); +} + +bool AsstCatchFake(void* p_asst) +{ +#ifdef LOG_TRACE + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->catch_fake(); +#else + return false; +#endif // LOG_TRACE +} + +bool AsstAppendFight(void* p_asst, int max_mecidine, int max_stone, int max_times) +{ + if (p_asst == nullptr) { + return false; + } + asst::Assistance* ptr = (asst::Assistance*)p_asst; + + return ptr->append_fight(max_mecidine, max_stone, max_times); +} + +bool AsstAppendAward(void* p_asst) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->append_award(); +} + +bool AsstAppendVisit(void* p_asst) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->append_visit(); +} + +bool AsstAppendMall(void* p_asst, bool with_shopping) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->append_mall(with_shopping); +} + +//bool AsstAppendProcessTask(void* p_asst, const char* task) +//{ +// if (p_asst == nullptr) { +// return false; +// } +// +// return ((asst::Assistance*)p_asst)->append_process_task(task); +//} + +bool AsstStartRecruitCalc(void* p_asst, const int select_level[], int required_len, bool set_time) +{ + if (p_asst == nullptr) { + return false; + } + std::vector level_vector; + level_vector.assign(select_level, select_level + required_len); + return ((asst::Assistance*)p_asst)->start_recruit_calc(level_vector, set_time); +} + +bool AsstAppendInfrast(void* p_asst, int work_mode, const char** order, int order_size, const char* uses_of_drones, double dorm_threshold) +{ + if (p_asst == nullptr) { + return false; + } + std::vector order_vector; + order_vector.assign(order, order + order_size); + + return ((asst::Assistance*)p_asst)-> + append_infrast( + static_cast(work_mode), + order_vector, + uses_of_drones, + dorm_threshold); +} + +bool AsstAppendRecruit(void* p_asst, int max_times, const int select_level[], int select_len, const int confirm_level[], int confirm_len, bool need_refresh) +{ + if (p_asst == nullptr) { + return false; + } + std::vector required_vector; + required_vector.assign(select_level, select_level + select_len); + std::vector confirm_vector; + confirm_vector.assign(confirm_level, confirm_level + confirm_len); + + return ((asst::Assistance*)p_asst)->append_recruit(max_times, required_vector, confirm_vector, need_refresh); +} + +bool AsstStart(void* p_asst) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->start(); +} + +bool AsstStop(void* p_asst) +{ + if (p_asst == nullptr) { + return false; + } + + return ((asst::Assistance*)p_asst)->stop(); +} + +bool AsstSetPenguinId(void* p_asst, const char* id) +{ + if (p_asst == nullptr) { + return false; + } + auto ptr = (asst::Assistance*)p_asst; + ptr->set_penguin_id(id); + return true; +} + +//bool AsstSetParam(void* p_asst, const char* type, const char* param, const char* value) +//{ +// if (p_asst == nullptr) { +// return false; +// } +// +// return ((asst::Assistance*)p_asst)->set_param(type, param, value); +//} + +const char* AsstGetVersion() +{ + return asst::Version; +} + +bool AsstAppendDebug(void* p_asst) +{ + if (p_asst == nullptr) { + return false; + } +#if LOG_TRACE + return ((asst::Assistance*)p_asst)->append_debug(); +#else + return false; +#endif // LOG_TRACE +} diff --git a/src/MeoAssistance/AsstDef.h b/src/MeoAssistant/AsstDef.h similarity index 100% rename from src/MeoAssistance/AsstDef.h rename to src/MeoAssistant/AsstDef.h diff --git a/src/MeoAssistance/AsstInfrastDef.h b/src/MeoAssistant/AsstInfrastDef.h similarity index 100% rename from src/MeoAssistance/AsstInfrastDef.h rename to src/MeoAssistant/AsstInfrastDef.h diff --git a/src/MeoAssistance/AsstMsg.h b/src/MeoAssistant/AsstMsg.h similarity index 100% rename from src/MeoAssistance/AsstMsg.h rename to src/MeoAssistant/AsstMsg.h diff --git a/src/MeoAssistance/AsstUtils.hpp b/src/MeoAssistant/AsstUtils.hpp similarity index 100% rename from src/MeoAssistance/AsstUtils.hpp rename to src/MeoAssistant/AsstUtils.hpp diff --git a/src/MeoAssistance/AutoRecruitTask.cpp b/src/MeoAssistant/AutoRecruitTask.cpp similarity index 97% rename from src/MeoAssistance/AutoRecruitTask.cpp rename to src/MeoAssistant/AutoRecruitTask.cpp index 5a8abd4a72..138befec15 100644 --- a/src/MeoAssistance/AutoRecruitTask.cpp +++ b/src/MeoAssistant/AutoRecruitTask.cpp @@ -2,33 +2,33 @@ #include "Resource.h" #include "OcrImageAnalyzer.h" -#include "Controller.h" -#include "RecruitImageAnalyzer.h" -#include "ProcessTask.h" +#include "Controller.h" +#include "RecruitImageAnalyzer.h" +#include "ProcessTask.h" #include "RecruitTask.h" -void asst::AutoRecruitTask::set_select_level(std::vector select_level) noexcept -{ - m_select_level = std::move(select_level); -} - -void asst::AutoRecruitTask::set_confirm_level(std::vector confirm_level) noexcept -{ - m_confirm_level = std::move(confirm_level); -} - -void asst::AutoRecruitTask::set_need_refresh(bool need_refresh) noexcept -{ - m_need_refresh = need_refresh; -} - +void asst::AutoRecruitTask::set_select_level(std::vector select_level) noexcept +{ + m_select_level = std::move(select_level); +} + +void asst::AutoRecruitTask::set_confirm_level(std::vector confirm_level) noexcept +{ + m_confirm_level = std::move(confirm_level); +} + +void asst::AutoRecruitTask::set_need_refresh(bool need_refresh) noexcept +{ + m_need_refresh = need_refresh; +} + void asst::AutoRecruitTask::set_max_times(int max_times) noexcept { m_max_times = max_times; -} - -bool asst::AutoRecruitTask::_run() -{ +} + +bool asst::AutoRecruitTask::_run() +{ json::value task_start_json = json::object{ { "task_type", "RecruitTask" }, { "task_chain", m_task_chain }, @@ -36,61 +36,61 @@ bool asst::AutoRecruitTask::_run() m_callback(AsstMsg::TaskStart, task_start_json, m_callback_arg); int delay = Resrc.cfg().get_options().task_delay; - + auto image = Ctrler.get_image(); OcrImageAnalyzer start_analyzer(image); const auto start_task_ptr = std::dynamic_pointer_cast(task.get("StartRecruit")); start_analyzer.set_task_info(*start_task_ptr); - if (!start_analyzer.analyze()) { - return false; + if (!start_analyzer.analyze()) { + return false; } const auto& start_res = start_analyzer.get_result(); for (; m_cur_times < start_res.size() && m_cur_times < m_max_times; ++m_cur_times) { if (need_exit()) { return false; - } - Rect start_rect = start_res.at(m_cur_times).rect; - Ctrler.click(start_rect); - sleep(delay); - - while (true) { - RecruitTask recurit_task(m_callback, m_callback_arg); - recurit_task.set_retry_times(10); - recurit_task.set_param(m_select_level, true); - recurit_task.set_task_chain(m_task_chain); - - // 识别错误,放弃这个公招位,直接返回 - if (!recurit_task.run()) { - m_callback(AsstMsg::RecruitError, json::value(), m_callback_arg); - click_return_button(); - break; - } - - int maybe_level = recurit_task.get_maybe_level(); - - // 尝试刷新 - if (m_need_refresh && maybe_level == 3 - && !recurit_task.get_has_special_tag() - && recurit_task.get_has_refresh()) { - ProcessTask refresh_task(*this, { "RecruitRefresh" }); - if (refresh_task.run()) { - continue; - } - } - if (std::find(m_confirm_level.cbegin(), m_confirm_level.cend(), maybe_level) != m_confirm_level.cend()) { - ProcessTask confirm_task(*this, { "RecruitConfirm" }); - if (!confirm_task.run()) { - return false; - } - break; - } - else { - click_return_button(); - break; - } - } - } + } + Rect start_rect = start_res.at(m_cur_times).rect; + Ctrler.click(start_rect); + sleep(delay); + + while (true) { + RecruitTask recurit_task(m_callback, m_callback_arg); + recurit_task.set_retry_times(10); + recurit_task.set_param(m_select_level, true); + recurit_task.set_task_chain(m_task_chain); + + // 识别错误,放弃这个公招位,直接返回 + if (!recurit_task.run()) { + m_callback(AsstMsg::RecruitError, json::value(), m_callback_arg); + click_return_button(); + break; + } + + int maybe_level = recurit_task.get_maybe_level(); + + // 尝试刷新 + if (m_need_refresh && maybe_level == 3 + && !recurit_task.get_has_special_tag() + && recurit_task.get_has_refresh()) { + ProcessTask refresh_task(*this, { "RecruitRefresh" }); + if (refresh_task.run()) { + continue; + } + } + if (std::find(m_confirm_level.cbegin(), m_confirm_level.cend(), maybe_level) != m_confirm_level.cend()) { + ProcessTask confirm_task(*this, { "RecruitConfirm" }); + if (!confirm_task.run()) { + return false; + } + break; + } + else { + click_return_button(); + break; + } + } + } return true; -} +} diff --git a/src/MeoAssistance/AutoRecruitTask.h b/src/MeoAssistant/AutoRecruitTask.h similarity index 100% rename from src/MeoAssistance/AutoRecruitTask.h rename to src/MeoAssistant/AutoRecruitTask.h diff --git a/src/MeoAssistance/Controller.cpp b/src/MeoAssistant/Controller.cpp similarity index 100% rename from src/MeoAssistance/Controller.cpp rename to src/MeoAssistant/Controller.cpp diff --git a/src/MeoAssistance/Controller.h b/src/MeoAssistant/Controller.h similarity index 100% rename from src/MeoAssistance/Controller.h rename to src/MeoAssistant/Controller.h diff --git a/src/MeoAssistance/CreditShopImageAnalyzer.cpp b/src/MeoAssistant/CreditShopImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/CreditShopImageAnalyzer.cpp rename to src/MeoAssistant/CreditShopImageAnalyzer.cpp diff --git a/src/MeoAssistance/CreditShopImageAnalyzer.h b/src/MeoAssistant/CreditShopImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/CreditShopImageAnalyzer.h rename to src/MeoAssistant/CreditShopImageAnalyzer.h diff --git a/src/MeoAssistance/CreditShoppingTask.cpp b/src/MeoAssistant/CreditShoppingTask.cpp similarity index 100% rename from src/MeoAssistance/CreditShoppingTask.cpp rename to src/MeoAssistant/CreditShoppingTask.cpp diff --git a/src/MeoAssistance/CreditShoppingTask.h b/src/MeoAssistant/CreditShoppingTask.h similarity index 100% rename from src/MeoAssistance/CreditShoppingTask.h rename to src/MeoAssistant/CreditShoppingTask.h diff --git a/src/MeoAssistance/GeneralConfiger.cpp b/src/MeoAssistant/GeneralConfiger.cpp similarity index 100% rename from src/MeoAssistance/GeneralConfiger.cpp rename to src/MeoAssistant/GeneralConfiger.cpp diff --git a/src/MeoAssistance/GeneralConfiger.h b/src/MeoAssistant/GeneralConfiger.h similarity index 100% rename from src/MeoAssistance/GeneralConfiger.h rename to src/MeoAssistant/GeneralConfiger.h diff --git a/src/MeoAssistance/InfrastAbstractTask.cpp b/src/MeoAssistant/InfrastAbstractTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastAbstractTask.cpp rename to src/MeoAssistant/InfrastAbstractTask.cpp diff --git a/src/MeoAssistance/InfrastAbstractTask.h b/src/MeoAssistant/InfrastAbstractTask.h similarity index 100% rename from src/MeoAssistance/InfrastAbstractTask.h rename to src/MeoAssistant/InfrastAbstractTask.h diff --git a/src/MeoAssistance/InfrastClueImageAnalyzer.cpp b/src/MeoAssistant/InfrastClueImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/InfrastClueImageAnalyzer.cpp rename to src/MeoAssistant/InfrastClueImageAnalyzer.cpp diff --git a/src/MeoAssistance/InfrastClueImageAnalyzer.h b/src/MeoAssistant/InfrastClueImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/InfrastClueImageAnalyzer.h rename to src/MeoAssistant/InfrastClueImageAnalyzer.h diff --git a/src/MeoAssistance/InfrastClueVacancyImageAnalyzer.cpp b/src/MeoAssistant/InfrastClueVacancyImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/InfrastClueVacancyImageAnalyzer.cpp rename to src/MeoAssistant/InfrastClueVacancyImageAnalyzer.cpp diff --git a/src/MeoAssistance/InfrastClueVacancyImageAnalyzer.h b/src/MeoAssistant/InfrastClueVacancyImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/InfrastClueVacancyImageAnalyzer.h rename to src/MeoAssistant/InfrastClueVacancyImageAnalyzer.h diff --git a/src/MeoAssistance/InfrastConfiger.cpp b/src/MeoAssistant/InfrastConfiger.cpp similarity index 100% rename from src/MeoAssistance/InfrastConfiger.cpp rename to src/MeoAssistant/InfrastConfiger.cpp diff --git a/src/MeoAssistance/InfrastConfiger.h b/src/MeoAssistant/InfrastConfiger.h similarity index 100% rename from src/MeoAssistance/InfrastConfiger.h rename to src/MeoAssistant/InfrastConfiger.h diff --git a/src/MeoAssistance/InfrastControlTask.cpp b/src/MeoAssistant/InfrastControlTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastControlTask.cpp rename to src/MeoAssistant/InfrastControlTask.cpp diff --git a/src/MeoAssistance/InfrastControlTask.h b/src/MeoAssistant/InfrastControlTask.h similarity index 100% rename from src/MeoAssistance/InfrastControlTask.h rename to src/MeoAssistant/InfrastControlTask.h diff --git a/src/MeoAssistance/InfrastDormTask.cpp b/src/MeoAssistant/InfrastDormTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastDormTask.cpp rename to src/MeoAssistant/InfrastDormTask.cpp diff --git a/src/MeoAssistance/InfrastDormTask.h b/src/MeoAssistant/InfrastDormTask.h similarity index 100% rename from src/MeoAssistance/InfrastDormTask.h rename to src/MeoAssistant/InfrastDormTask.h diff --git a/src/MeoAssistance/InfrastFacilityImageAnalyzer.cpp b/src/MeoAssistant/InfrastFacilityImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/InfrastFacilityImageAnalyzer.cpp rename to src/MeoAssistant/InfrastFacilityImageAnalyzer.cpp diff --git a/src/MeoAssistance/InfrastFacilityImageAnalyzer.h b/src/MeoAssistant/InfrastFacilityImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/InfrastFacilityImageAnalyzer.h rename to src/MeoAssistant/InfrastFacilityImageAnalyzer.h diff --git a/src/MeoAssistance/InfrastInfoTask.cpp b/src/MeoAssistant/InfrastInfoTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastInfoTask.cpp rename to src/MeoAssistant/InfrastInfoTask.cpp diff --git a/src/MeoAssistance/InfrastInfoTask.h b/src/MeoAssistant/InfrastInfoTask.h similarity index 100% rename from src/MeoAssistance/InfrastInfoTask.h rename to src/MeoAssistant/InfrastInfoTask.h diff --git a/src/MeoAssistance/InfrastMfgTask.cpp b/src/MeoAssistant/InfrastMfgTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastMfgTask.cpp rename to src/MeoAssistant/InfrastMfgTask.cpp diff --git a/src/MeoAssistance/InfrastMfgTask.h b/src/MeoAssistant/InfrastMfgTask.h similarity index 100% rename from src/MeoAssistance/InfrastMfgTask.h rename to src/MeoAssistant/InfrastMfgTask.h diff --git a/src/MeoAssistance/InfrastOfficeTask.cpp b/src/MeoAssistant/InfrastOfficeTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastOfficeTask.cpp rename to src/MeoAssistant/InfrastOfficeTask.cpp diff --git a/src/MeoAssistance/InfrastOfficeTask.h b/src/MeoAssistant/InfrastOfficeTask.h similarity index 100% rename from src/MeoAssistance/InfrastOfficeTask.h rename to src/MeoAssistant/InfrastOfficeTask.h diff --git a/src/MeoAssistance/InfrastOperImageAnalyzer.cpp b/src/MeoAssistant/InfrastOperImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/InfrastOperImageAnalyzer.cpp rename to src/MeoAssistant/InfrastOperImageAnalyzer.cpp diff --git a/src/MeoAssistance/InfrastOperImageAnalyzer.h b/src/MeoAssistant/InfrastOperImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/InfrastOperImageAnalyzer.h rename to src/MeoAssistant/InfrastOperImageAnalyzer.h diff --git a/src/MeoAssistance/InfrastPowerTask.cpp b/src/MeoAssistant/InfrastPowerTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastPowerTask.cpp rename to src/MeoAssistant/InfrastPowerTask.cpp diff --git a/src/MeoAssistance/InfrastPowerTask.h b/src/MeoAssistant/InfrastPowerTask.h similarity index 100% rename from src/MeoAssistance/InfrastPowerTask.h rename to src/MeoAssistant/InfrastPowerTask.h diff --git a/src/MeoAssistance/InfrastProductionTask.cpp b/src/MeoAssistant/InfrastProductionTask.cpp similarity index 99% rename from src/MeoAssistance/InfrastProductionTask.cpp rename to src/MeoAssistant/InfrastProductionTask.cpp index 6262fa65c5..fa18219224 100644 --- a/src/MeoAssistance/InfrastProductionTask.cpp +++ b/src/MeoAssistant/InfrastProductionTask.cpp @@ -442,11 +442,11 @@ bool asst::InfrastProductionTask::optimal_calc() bool asst::InfrastProductionTask::opers_choose() { LogTraceFunction; - bool has_error = false; - - int count = 0; + bool has_error = false; + + int count = 0; auto& facility_info = Resrc.infrast().get_facility_info(m_facility); - int cur_max_num_of_opers = facility_info.max_num_of_opers - m_cur_num_of_lokced_opers; + int cur_max_num_of_opers = facility_info.max_num_of_opers - m_cur_num_of_lokced_opers; while (true) { if (need_exit()) { @@ -480,9 +480,9 @@ bool asst::InfrastProductionTask::opers_choose() auto remove_iter = std::remove_if(cur_all_opers.begin(), cur_all_opers.end(), [&](const infrast::Oper& rhs) -> bool { return rhs.mood_ratio < m_mood_threshold; - }); - cur_all_opers.erase(remove_iter, cur_all_opers.end()); - + }); + cur_all_opers.erase(remove_iter, cur_all_opers.end()); + for (auto opt_iter = m_optimal_combs.begin(); opt_iter != m_optimal_combs.end();) { auto find_iter = std::find_if( cur_all_opers.cbegin(), cur_all_opers.cend(), @@ -539,18 +539,18 @@ bool asst::InfrastProductionTask::opers_choose() else { Log.error("opers_choose | not found oper"); } - } + } ++count; cur_all_opers.erase(find_iter); opt_iter = m_optimal_combs.erase(opt_iter); } - if (m_optimal_combs.empty()) { + if (m_optimal_combs.empty()) { if (count >= cur_max_num_of_opers) { - break; + break; } - else { // 这种情况可能是萌新,可用干员人数不足以填满当前设施 - // TODO!!! - break; + else { // 这种情况可能是萌新,可用干员人数不足以填满当前设施 + // TODO!!! + break; } } @@ -619,4 +619,4 @@ bool asst::InfrastProductionTask::facility_list_detect() } return true; -} +} diff --git a/src/MeoAssistance/InfrastProductionTask.h b/src/MeoAssistant/InfrastProductionTask.h similarity index 100% rename from src/MeoAssistance/InfrastProductionTask.h rename to src/MeoAssistant/InfrastProductionTask.h diff --git a/src/MeoAssistance/InfrastReceptionTask.cpp b/src/MeoAssistant/InfrastReceptionTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastReceptionTask.cpp rename to src/MeoAssistant/InfrastReceptionTask.cpp diff --git a/src/MeoAssistance/InfrastReceptionTask.h b/src/MeoAssistant/InfrastReceptionTask.h similarity index 100% rename from src/MeoAssistance/InfrastReceptionTask.h rename to src/MeoAssistant/InfrastReceptionTask.h diff --git a/src/MeoAssistance/InfrastSmileyImageAnalyzer.cpp b/src/MeoAssistant/InfrastSmileyImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/InfrastSmileyImageAnalyzer.cpp rename to src/MeoAssistant/InfrastSmileyImageAnalyzer.cpp diff --git a/src/MeoAssistance/InfrastSmileyImageAnalyzer.h b/src/MeoAssistant/InfrastSmileyImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/InfrastSmileyImageAnalyzer.h rename to src/MeoAssistant/InfrastSmileyImageAnalyzer.h diff --git a/src/MeoAssistance/InfrastTradeTask.cpp b/src/MeoAssistant/InfrastTradeTask.cpp similarity index 100% rename from src/MeoAssistance/InfrastTradeTask.cpp rename to src/MeoAssistant/InfrastTradeTask.cpp diff --git a/src/MeoAssistance/InfrastTradeTask.h b/src/MeoAssistant/InfrastTradeTask.h similarity index 100% rename from src/MeoAssistance/InfrastTradeTask.h rename to src/MeoAssistant/InfrastTradeTask.h diff --git a/src/MeoAssistance/ItemConfiger.cpp b/src/MeoAssistant/ItemConfiger.cpp similarity index 100% rename from src/MeoAssistance/ItemConfiger.cpp rename to src/MeoAssistant/ItemConfiger.cpp diff --git a/src/MeoAssistance/ItemConfiger.h b/src/MeoAssistant/ItemConfiger.h similarity index 100% rename from src/MeoAssistance/ItemConfiger.h rename to src/MeoAssistant/ItemConfiger.h diff --git a/src/MeoAssistance/Logger.hpp b/src/MeoAssistant/Logger.hpp similarity index 99% rename from src/MeoAssistance/Logger.hpp rename to src/MeoAssistant/Logger.hpp index f76b407096..fad728f580 100644 --- a/src/MeoAssistance/Logger.hpp +++ b/src/MeoAssistant/Logger.hpp @@ -78,7 +78,7 @@ namespace asst void log_init_info() { trace("-----------------------------"); - trace("MeoAssistance Process Start"); + trace("MeoAssistant Process Start"); trace("Version", asst::Version); trace("Build DataTime", __DATE__, __TIME__); trace("Working Path", m_dirname); diff --git a/src/MeoAssistance/MatchImageAnalyzer.cpp b/src/MeoAssistant/MatchImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/MatchImageAnalyzer.cpp rename to src/MeoAssistant/MatchImageAnalyzer.cpp diff --git a/src/MeoAssistance/MatchImageAnalyzer.h b/src/MeoAssistant/MatchImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/MatchImageAnalyzer.h rename to src/MeoAssistant/MatchImageAnalyzer.h diff --git a/src/MeoAssistance/MeoAssistance.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj similarity index 95% rename from src/MeoAssistance/MeoAssistance.vcxproj rename to src/MeoAssistant/MeoAssistant.vcxproj index 1307c0d8a9..62df7f654e 100644 --- a/src/MeoAssistance/MeoAssistance.vcxproj +++ b/src/MeoAssistant/MeoAssistant.vcxproj @@ -1,256 +1,256 @@ - - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 16.0 - Win32Proj - {362d1e30-f5ae-4279-9985-65c27b3ba300} - MeoAssistance - 10.0 - - - - DynamicLibrary - false - v142 - true - Unicode - - - DynamicLibrary - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - true - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;MEO_DLL_EXPORTS;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - MaxSpeed - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - libmeojson.lib;ppocr.lib;opencv_world453.lib;penguin-stats-recognize.lib;%(AdditionalDependencies) - RequireAdministrator - - - - - - - - + + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 16.0 + Win32Proj + {362d1e30-f5ae-4279-9985-65c27b3ba300} + MeoAssistant + 10.0 + + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + + + + + + + + + + + + + false + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + true + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + MaxSpeed + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + libmeojson.lib;ppocr.lib;opencv_world453.lib;penguin-stats-recognize.lib;%(AdditionalDependencies) + RequireAdministrator + + + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - Level3 - - - false - true - NDEBUG;_CONSOLE;MEO_DLL_EXPORTS;LOG_TRACE;DEBUG_API;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - Disabled - false - EnableFastChecks - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - libmeojson.lib;ppocr.lib;opencv_world453.lib;penguin-stats-recognize.lib;%(AdditionalDependencies) - RequireAdministrator - - - - - - - - +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + Level3 + + + false + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;LOG_TRACE;DEBUG_API;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + Disabled + false + EnableFastChecks + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + libmeojson.lib;ppocr.lib;opencv_world453.lib;penguin-stats-recognize.lib;%(AdditionalDependencies) + RequireAdministrator + + + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - - - - - - +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + + + + + + \ No newline at end of file diff --git a/src/MeoAssistance/MeoAssistance.vcxproj.filters b/src/MeoAssistant/MeoAssistant.vcxproj.filters similarity index 97% rename from src/MeoAssistance/MeoAssistance.vcxproj.filters rename to src/MeoAssistant/MeoAssistant.vcxproj.filters index 494afc136a..098f1f536b 100644 --- a/src/MeoAssistance/MeoAssistance.vcxproj.filters +++ b/src/MeoAssistant/MeoAssistant.vcxproj.filters @@ -1,365 +1,365 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {81d86994-0d89-4cc2-aa6f-d726a0bd0490} - - - {3b93d9f2-728c-4a22-bc13-57ce7df5806c} - - - {1ef28df7-c174-4032-bbcf-9722ae53852d} - - - {557d6d96-11d9-46e1-b611-b2b8216abea6} - - - {1a8ffc31-8eb3-4af6-9065-634de2463a3e} - - - {c6a0898b-5dd7-4437-981c-00e53b30a60d} - - - {07a812fe-6b28-4be0-b6d4-33554824d3c5} - - - {74bd94e1-4973-412a-a17a-d8457de387af} - - - {87c9dee5-847b-41e6-818e-387a6385ea8b} - - - {a5c43813-70af-4b0e-94ac-9ddecc2e4a3c} - - - {a37e0b23-e8f8-499c-adf5-9990277e9ffe} - - - {51165426-1842-491a-b5d5-9d26c59facdd} - - - {c600668a-0d70-4694-b1e5-6a78cffd0b1a} - - - {d173e449-880b-4064-bbab-97007e3d090b} - - - {fc8aa302-89bb-4016-924d-10177dc8b334} - - - {9a6160e3-cd35-4dda-ba04-23ede1878740} - - - - - 头文件 - - - 头文件 - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Caller - - - 头文件\Caller - - - 头文件\Task - - - 头文件\Task - - - 头文件\Task - - - 头文件\Utils - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Task - - - 头文件\Utils - - - 头文件\Resource - - - 头文件\ImageAnalyzer - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\ImageAnalyzer - - - 头文件 - - - 头文件\ImageAnalyzer - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\Infrast - - - 头文件\Resource - - - 头文件\ImageAnalyzer\Infrast - - - 头文件 - - - 头文件\ImageAnalyzer\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\ImageAnalyzer\Infrast - - - 头文件\Utils - - - 头文件\ImageAnalyzer\Infrast - - - 头文件 - - - 头文件\Task - - - 头文件\Task\Infrast - - - - - 源文件 - - - 源文件 - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Caller - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Task - - - 源文件\Utils - - - 源文件\Resource - - - 源文件\ImageAnalyzer - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\ImageAnalyzer - - - 源文件 - - - 源文件\ImageAnalyzer - - - 源文件\ImageAnalyzer\Infrast - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\Resource - - - 源文件\ImageAnalyzer\Infrast - - - 源文件 - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\ImageAnalyzer\Infrast - - - 源文件\ImageAnalyzer\Infrast - - - 源文件\Task\Infrast - - - 源文件\ImageAnalyzer\Infrast - - - 源文件 - - - 源文件\Task - - - 源文件\Task\Infrast - - - - - 资源文件 - - - 资源文件 - - - 资源文件 - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {81d86994-0d89-4cc2-aa6f-d726a0bd0490} + + + {3b93d9f2-728c-4a22-bc13-57ce7df5806c} + + + {1ef28df7-c174-4032-bbcf-9722ae53852d} + + + {557d6d96-11d9-46e1-b611-b2b8216abea6} + + + {1a8ffc31-8eb3-4af6-9065-634de2463a3e} + + + {c6a0898b-5dd7-4437-981c-00e53b30a60d} + + + {07a812fe-6b28-4be0-b6d4-33554824d3c5} + + + {74bd94e1-4973-412a-a17a-d8457de387af} + + + {87c9dee5-847b-41e6-818e-387a6385ea8b} + + + {a5c43813-70af-4b0e-94ac-9ddecc2e4a3c} + + + {a37e0b23-e8f8-499c-adf5-9990277e9ffe} + + + {51165426-1842-491a-b5d5-9d26c59facdd} + + + {c600668a-0d70-4694-b1e5-6a78cffd0b1a} + + + {d173e449-880b-4064-bbab-97007e3d090b} + + + {fc8aa302-89bb-4016-924d-10177dc8b334} + + + {9a6160e3-cd35-4dda-ba04-23ede1878740} + + + + + 头文件 + + + 头文件 + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Caller + + + 头文件\Caller + + + 头文件\Task + + + 头文件\Task + + + 头文件\Task + + + 头文件\Utils + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Task + + + 头文件\Utils + + + 头文件\Resource + + + 头文件\ImageAnalyzer + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\ImageAnalyzer + + + 头文件 + + + 头文件\ImageAnalyzer + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\Infrast + + + 头文件\Resource + + + 头文件\ImageAnalyzer\Infrast + + + 头文件 + + + 头文件\ImageAnalyzer\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\ImageAnalyzer\Infrast + + + 头文件\Utils + + + 头文件\ImageAnalyzer\Infrast + + + 头文件 + + + 头文件\Task + + + 头文件\Task\Infrast + + + + + 源文件 + + + 源文件 + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Caller + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Task + + + 源文件\Utils + + + 源文件\Resource + + + 源文件\ImageAnalyzer + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\ImageAnalyzer + + + 源文件 + + + 源文件\ImageAnalyzer + + + 源文件\ImageAnalyzer\Infrast + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\Resource + + + 源文件\ImageAnalyzer\Infrast + + + 源文件 + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\ImageAnalyzer\Infrast + + + 源文件\ImageAnalyzer\Infrast + + + 源文件\Task\Infrast + + + 源文件\ImageAnalyzer\Infrast + + + 源文件 + + + 源文件\Task + + + 源文件\Task\Infrast + + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + \ No newline at end of file diff --git a/src/MeoAssistance/MultiMatchImageAnalyzer.cpp b/src/MeoAssistant/MultiMatchImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/MultiMatchImageAnalyzer.cpp rename to src/MeoAssistant/MultiMatchImageAnalyzer.cpp diff --git a/src/MeoAssistance/MultiMatchImageAnalyzer.h b/src/MeoAssistant/MultiMatchImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/MultiMatchImageAnalyzer.h rename to src/MeoAssistant/MultiMatchImageAnalyzer.h diff --git a/src/MeoAssistance/OcrImageAnalyzer.cpp b/src/MeoAssistant/OcrImageAnalyzer.cpp similarity index 96% rename from src/MeoAssistance/OcrImageAnalyzer.cpp rename to src/MeoAssistant/OcrImageAnalyzer.cpp index ba4c89c305..d8489d0bfc 100644 --- a/src/MeoAssistance/OcrImageAnalyzer.cpp +++ b/src/MeoAssistant/OcrImageAnalyzer.cpp @@ -1,54 +1,54 @@ -#include "OcrImageAnalyzer.h" - -#include "AsstUtils.hpp" -#include "Logger.hpp" -#include "Resource.h" - -bool asst::OcrImageAnalyzer::analyze() -{ - m_ocr_result.clear(); - - std::vector preds_vec; - - if (!m_replace.empty()) { - TextRectProc text_replace = [&](TextRect& tr) -> bool { - for (const auto& [old_str, new_str] : m_replace) { - tr.text = utils::string_replace_all(tr.text, old_str, new_str); - } - return true; - }; - preds_vec.emplace_back(text_replace); - } - - if (!m_required.empty()) { - if (m_full_match) { - TextRectProc required_match = [&](TextRect& tr) -> bool { - return std::find(m_required.cbegin(), m_required.cend(), tr.text) != m_required.cend(); - }; - preds_vec.emplace_back(required_match); - } - else { - TextRectProc required_search = [&](TextRect& tr) -> bool { - auto is_sub = [&tr](const std::string& str) -> bool { - return tr.text.find(str) != std::string::npos; - }; - return std::find_if(m_required.cbegin(), m_required.cend(), is_sub) != m_required.cend(); - }; - preds_vec.emplace_back(required_search); - } - } - - preds_vec.emplace_back(m_pred); - - TextRectProc all_pred = [&](TextRect& tr) -> bool { - for (auto pred : preds_vec) { - if (pred && !pred(tr)) { - return false; - } - } - return true; - }; - m_ocr_result = Resrc.ocr().recognize(m_image, m_roi, all_pred, m_without_det); - //log.trace("ocr result", m_ocr_result); - return !m_ocr_result.empty(); -} +#include "OcrImageAnalyzer.h" + +#include "AsstUtils.hpp" +#include "Logger.hpp" +#include "Resource.h" + +bool asst::OcrImageAnalyzer::analyze() +{ + m_ocr_result.clear(); + + std::vector preds_vec; + + if (!m_replace.empty()) { + TextRectProc text_replace = [&](TextRect& tr) -> bool { + for (const auto& [old_str, new_str] : m_replace) { + tr.text = utils::string_replace_all(tr.text, old_str, new_str); + } + return true; + }; + preds_vec.emplace_back(text_replace); + } + + if (!m_required.empty()) { + if (m_full_match) { + TextRectProc required_match = [&](TextRect& tr) -> bool { + return std::find(m_required.cbegin(), m_required.cend(), tr.text) != m_required.cend(); + }; + preds_vec.emplace_back(required_match); + } + else { + TextRectProc required_search = [&](TextRect& tr) -> bool { + auto is_sub = [&tr](const std::string& str) -> bool { + return tr.text.find(str) != std::string::npos; + }; + return std::find_if(m_required.cbegin(), m_required.cend(), is_sub) != m_required.cend(); + }; + preds_vec.emplace_back(required_search); + } + } + + preds_vec.emplace_back(m_pred); + + TextRectProc all_pred = [&](TextRect& tr) -> bool { + for (auto pred : preds_vec) { + if (pred && !pred(tr)) { + return false; + } + } + return true; + }; + m_ocr_result = Resrc.ocr().recognize(m_image, m_roi, all_pred, m_without_det); + //log.trace("ocr result", m_ocr_result); + return !m_ocr_result.empty(); +} diff --git a/src/MeoAssistance/OcrImageAnalyzer.h b/src/MeoAssistant/OcrImageAnalyzer.h similarity index 96% rename from src/MeoAssistance/OcrImageAnalyzer.h rename to src/MeoAssistant/OcrImageAnalyzer.h index 38c7ea3532..9eb18a1346 100644 --- a/src/MeoAssistance/OcrImageAnalyzer.h +++ b/src/MeoAssistant/OcrImageAnalyzer.h @@ -1,64 +1,64 @@ -#pragma once -#include "AbstractImageAnalyzer.h" - -#include -#include -#include - -#include "AsstDef.h" - -namespace asst -{ - class OcrImageAnalyzer : public AbstractImageAnalyzer - { - public: - using AbstractImageAnalyzer::AbstractImageAnalyzer; - virtual ~OcrImageAnalyzer() = default; - - virtual bool analyze() override; - - void set_required(std::vector required, bool full_match = false) noexcept - { - m_required = std::move(required); - m_full_match = full_match; - } - void set_replace(std::unordered_map replace) noexcept - { - m_replace = std::move(replace); - } - void set_task_info(OcrTaskInfo task_info) noexcept - { - m_required = std::move(task_info.text); - m_full_match = task_info.need_full_match; - m_replace = std::move(task_info.replace_map); - - set_roi(task_info.roi); - correct_roi(); - auto& cache_roi = task_info.region_of_appeared; - if (task_info.cache && !cache_roi.empty()) { - m_roi = cache_roi; - m_without_det = true; - } - else { - m_without_det = false; - } - } - - void set_pred(const TextRectProc& pred) - { - m_pred = pred; - } - const std::vector& get_result() const noexcept - { - return m_ocr_result; - } - - protected: - std::vector m_ocr_result; - std::vector m_required; - bool m_full_match = false; - std::unordered_map m_replace; - TextRectProc m_pred = nullptr; - bool m_without_det = false; - }; -} +#pragma once +#include "AbstractImageAnalyzer.h" + +#include +#include +#include + +#include "AsstDef.h" + +namespace asst +{ + class OcrImageAnalyzer : public AbstractImageAnalyzer + { + public: + using AbstractImageAnalyzer::AbstractImageAnalyzer; + virtual ~OcrImageAnalyzer() = default; + + virtual bool analyze() override; + + void set_required(std::vector required, bool full_match = false) noexcept + { + m_required = std::move(required); + m_full_match = full_match; + } + void set_replace(std::unordered_map replace) noexcept + { + m_replace = std::move(replace); + } + void set_task_info(OcrTaskInfo task_info) noexcept + { + m_required = std::move(task_info.text); + m_full_match = task_info.need_full_match; + m_replace = std::move(task_info.replace_map); + + set_roi(task_info.roi); + correct_roi(); + auto& cache_roi = task_info.region_of_appeared; + if (task_info.cache && !cache_roi.empty()) { + m_roi = cache_roi; + m_without_det = true; + } + else { + m_without_det = false; + } + } + + void set_pred(const TextRectProc& pred) + { + m_pred = pred; + } + const std::vector& get_result() const noexcept + { + return m_ocr_result; + } + + protected: + std::vector m_ocr_result; + std::vector m_required; + bool m_full_match = false; + std::unordered_map m_replace; + TextRectProc m_pred = nullptr; + bool m_without_det = false; + }; +} diff --git a/src/MeoAssistance/OcrPack.cpp b/src/MeoAssistant/OcrPack.cpp similarity index 100% rename from src/MeoAssistance/OcrPack.cpp rename to src/MeoAssistant/OcrPack.cpp diff --git a/src/MeoAssistance/OcrPack.h b/src/MeoAssistant/OcrPack.h similarity index 100% rename from src/MeoAssistance/OcrPack.h rename to src/MeoAssistant/OcrPack.h diff --git a/src/MeoAssistance/PenguinPack.cpp b/src/MeoAssistant/PenguinPack.cpp similarity index 100% rename from src/MeoAssistance/PenguinPack.cpp rename to src/MeoAssistant/PenguinPack.cpp diff --git a/src/MeoAssistance/PenguinPack.h b/src/MeoAssistant/PenguinPack.h similarity index 100% rename from src/MeoAssistance/PenguinPack.h rename to src/MeoAssistant/PenguinPack.h diff --git a/src/MeoAssistance/PenguinUploader.cpp b/src/MeoAssistant/PenguinUploader.cpp similarity index 96% rename from src/MeoAssistance/PenguinUploader.cpp rename to src/MeoAssistant/PenguinUploader.cpp index 8bc3ef9f73..cd1c4692f9 100644 --- a/src/MeoAssistance/PenguinUploader.cpp +++ b/src/MeoAssistant/PenguinUploader.cpp @@ -28,14 +28,14 @@ std::string asst::PenguinUploader::cvt_json(const std::string& rec_res) auto& opt = Resrc.cfg().get_options(); body["server"] = opt.penguin_report_server; body["stageId"] = rec["stage"]["stageId"]; - // To fix: https://github.com/MistEO/MeoAssistance-Arknights/issues/40 + // To fix: https://github.com/MistEO/MeoAssistantArknights/issues/40 body["drops"] = json::array(); for (auto&& drop : rec["drops"].as_array()) { if (!drop["itemId"].as_string().empty()) { body["drops"].as_array().emplace_back(drop); } } - body["source"] = "MeoAssistance"; + body["source"] = "MeoAssistant"; body["version"] = Version; return body.to_string(); @@ -96,4 +96,4 @@ bool asst::PenguinUploader::request_penguin(const std::string& body) ::CloseHandle(pipe_read); ::CloseHandle(pipe_child_write); return true; -} \ No newline at end of file +} diff --git a/src/MeoAssistance/PenguinUploader.h b/src/MeoAssistant/PenguinUploader.h similarity index 100% rename from src/MeoAssistance/PenguinUploader.h rename to src/MeoAssistant/PenguinUploader.h diff --git a/src/MeoAssistance/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp similarity index 100% rename from src/MeoAssistance/ProcessTask.cpp rename to src/MeoAssistant/ProcessTask.cpp diff --git a/src/MeoAssistance/ProcessTask.h b/src/MeoAssistant/ProcessTask.h similarity index 100% rename from src/MeoAssistance/ProcessTask.h rename to src/MeoAssistant/ProcessTask.h diff --git a/src/MeoAssistance/ProcessTaskImageAnalyzer.cpp b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/ProcessTaskImageAnalyzer.cpp rename to src/MeoAssistant/ProcessTaskImageAnalyzer.cpp diff --git a/src/MeoAssistance/ProcessTaskImageAnalyzer.h b/src/MeoAssistant/ProcessTaskImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/ProcessTaskImageAnalyzer.h rename to src/MeoAssistant/ProcessTaskImageAnalyzer.h diff --git a/src/MeoAssistance/README.md b/src/MeoAssistant/README.md similarity index 98% rename from src/MeoAssistance/README.md rename to src/MeoAssistant/README.md index 41611c31ef..bf33df259d 100644 --- a/src/MeoAssistance/README.md +++ b/src/MeoAssistant/README.md @@ -1,4 +1,4 @@ -# MeoAssistance +# MeoAssistant 辅助的底层C++模块 diff --git a/src/MeoAssistance/RecruitConfiger.cpp b/src/MeoAssistant/RecruitConfiger.cpp similarity index 100% rename from src/MeoAssistance/RecruitConfiger.cpp rename to src/MeoAssistant/RecruitConfiger.cpp diff --git a/src/MeoAssistance/RecruitConfiger.h b/src/MeoAssistant/RecruitConfiger.h similarity index 100% rename from src/MeoAssistance/RecruitConfiger.h rename to src/MeoAssistant/RecruitConfiger.h diff --git a/src/MeoAssistance/RecruitImageAnalyzer.cpp b/src/MeoAssistant/RecruitImageAnalyzer.cpp similarity index 100% rename from src/MeoAssistance/RecruitImageAnalyzer.cpp rename to src/MeoAssistant/RecruitImageAnalyzer.cpp diff --git a/src/MeoAssistance/RecruitImageAnalyzer.h b/src/MeoAssistant/RecruitImageAnalyzer.h similarity index 100% rename from src/MeoAssistance/RecruitImageAnalyzer.h rename to src/MeoAssistant/RecruitImageAnalyzer.h diff --git a/src/MeoAssistance/RecruitTask.cpp b/src/MeoAssistant/RecruitTask.cpp similarity index 100% rename from src/MeoAssistance/RecruitTask.cpp rename to src/MeoAssistant/RecruitTask.cpp diff --git a/src/MeoAssistance/RecruitTask.h b/src/MeoAssistant/RecruitTask.h similarity index 100% rename from src/MeoAssistance/RecruitTask.h rename to src/MeoAssistant/RecruitTask.h diff --git a/src/MeoAssistance/Resource.cpp b/src/MeoAssistant/Resource.cpp similarity index 100% rename from src/MeoAssistance/Resource.cpp rename to src/MeoAssistant/Resource.cpp diff --git a/src/MeoAssistance/Resource.h b/src/MeoAssistant/Resource.h similarity index 100% rename from src/MeoAssistance/Resource.h rename to src/MeoAssistant/Resource.h diff --git a/src/MeoAssistance/RuntimeStatus.cpp b/src/MeoAssistant/RuntimeStatus.cpp similarity index 100% rename from src/MeoAssistance/RuntimeStatus.cpp rename to src/MeoAssistant/RuntimeStatus.cpp diff --git a/src/MeoAssistance/RuntimeStatus.h b/src/MeoAssistant/RuntimeStatus.h similarity index 100% rename from src/MeoAssistance/RuntimeStatus.h rename to src/MeoAssistant/RuntimeStatus.h diff --git a/src/MeoAssistance/TaskData.cpp b/src/MeoAssistant/TaskData.cpp similarity index 97% rename from src/MeoAssistance/TaskData.cpp rename to src/MeoAssistant/TaskData.cpp index bea0e55e00..7ebd1c8934 100644 --- a/src/MeoAssistance/TaskData.cpp +++ b/src/MeoAssistant/TaskData.cpp @@ -1,203 +1,203 @@ -#include "TaskData.h" - -#include - -#include - -#include "AsstDef.h" -#include "GeneralConfiger.h" -#include "TemplResource.h" - -const std::shared_ptr asst::TaskData::get(const std::string& name) const noexcept -{ - if (auto iter = m_all_tasks_info.find(name); - iter != m_all_tasks_info.cend()) { - return iter->second; - } - else { - return nullptr; - } -} - -const std::unordered_set& asst::TaskData::get_templ_required() const noexcept -{ - return m_templ_required; -} - -std::shared_ptr asst::TaskData::get(std::string name) -{ - return m_all_tasks_info[std::move(name)]; -} - -void asst::TaskData::clear_cache() noexcept -{ - for (auto&& [name, ptr] : m_all_tasks_info) { - ptr->region_of_appeared = Rect(); - } -} - -bool asst::TaskData::parse(const json::value& json) -{ - for (const auto& [name, task_json] : json.as_object()) { - std::string algorithm_str = task_json.get("algorithm", "matchtemplate"); - std::transform(algorithm_str.begin(), algorithm_str.end(), algorithm_str.begin(), ::tolower); - AlgorithmType algorithm = AlgorithmType::Invaild; - if (algorithm_str == "matchtemplate") { - algorithm = AlgorithmType::MatchTemplate; - } - else if (algorithm_str == "justreturn") { - algorithm = AlgorithmType::JustReturn; - } - else if (algorithm_str == "ocrdetect") { - algorithm = AlgorithmType::OcrDetect; - } - // CompareHist是MatchTemplate的衍生算法,不应作为单独的配置参数出现 - // else if (algorithm_str == "comparehist") {} - else { - m_last_error = "algorithm error " + algorithm_str; - return false; - } - - std::shared_ptr task_info_ptr = nullptr; - switch (algorithm) { - case AlgorithmType::JustReturn: - task_info_ptr = std::make_shared(); - break; - case AlgorithmType::MatchTemplate: { - auto match_task_info_ptr = std::make_shared(); - match_task_info_ptr->templ_name = task_json.get("template", name + ".png"); - m_templ_required.emplace(match_task_info_ptr->templ_name); - - match_task_info_ptr->templ_threshold = task_json.get( - "templThreshold", TemplThresholdDefault); - match_task_info_ptr->special_threshold = task_json.get( - "specialThreshold", 0); - if (task_json.exist("maskRange")) { - match_task_info_ptr->mask_range = std::make_pair( - task_json.at("maskRange")[0].as_integer(), - task_json.at("maskRange")[1].as_integer()); - } - - task_info_ptr = match_task_info_ptr; - } break; - case AlgorithmType::OcrDetect: { - auto ocr_task_info_ptr = std::make_shared(); - for (const json::value& text : task_json.at("text").as_array()) { - ocr_task_info_ptr->text.emplace_back(text.as_string()); - } - ocr_task_info_ptr->need_full_match = task_json.get("need_match", false); - if (task_json.exist("ocrReplace")) { - for (const json::value& rep : task_json.at("ocrReplace").as_array()) { - ocr_task_info_ptr->replace_map.emplace(rep.as_array()[0].as_string(), rep.as_array()[1].as_string()); - } - } - task_info_ptr = ocr_task_info_ptr; - } break; - } - task_info_ptr->cache = task_json.get("cache", true); - task_info_ptr->algorithm = algorithm; - task_info_ptr->name = name; - std::string action = task_json.get("action", std::string()); - std::transform(action.begin(), action.end(), action.begin(), ::tolower); - if (action == "clickself") { - task_info_ptr->action = ProcessTaskAction::ClickSelf; - } - else if (action == "clickrand") { - task_info_ptr->action = ProcessTaskAction::ClickRand; - } - else if (action == "donothing" || action.empty()) { - task_info_ptr->action = ProcessTaskAction::DoNothing; - } - else if (action == "stop") { - task_info_ptr->action = ProcessTaskAction::Stop; - } - else if (action == "clickrect") { - task_info_ptr->action = ProcessTaskAction::ClickRect; - const json::value& rect_json = task_json.at("specificRect"); - task_info_ptr->specific_rect = Rect( - rect_json[0].as_integer(), - rect_json[1].as_integer(), - rect_json[2].as_integer(), - rect_json[3].as_integer()); - } - else if (action == "stagedrops") { - task_info_ptr->action = ProcessTaskAction::StageDrops; - } - else if (action == "swipetotheleft") { - task_info_ptr->action = ProcessTaskAction::SwipeToTheLeft; - } - else if (action == "swipetotheright") { - task_info_ptr->action = ProcessTaskAction::SwipeToTheRight; - } - else { - m_last_error = "Task: " + name + " error: " + action; - return false; - } - - task_info_ptr->max_times = task_json.get("maxTimes", INT_MAX); - if (task_json.exist("exceededNext")) { - const json::array& excceed_next_arr = task_json.at("exceededNext").as_array(); - for (const json::value& excceed_next : excceed_next_arr) { - task_info_ptr->exceeded_next.emplace_back(excceed_next.as_string()); - } - } - else { - task_info_ptr->exceeded_next.emplace_back("Stop"); - } - task_info_ptr->pre_delay = task_json.get("preDelay", 0); - task_info_ptr->rear_delay = task_json.get("rearDelay", 0); - if (task_json.exist("reduceOtherTimes")) { - const json::array& reduce_arr = task_json.at("reduceOtherTimes").as_array(); - for (const json::value& reduce : reduce_arr) { - task_info_ptr->reduce_other_times.emplace_back(reduce.as_string()); - } - } - if (task_json.exist("roi")) { - const json::array& area_arr = task_json.at("roi").as_array(); - int x = area_arr[0].as_integer(); - int y = area_arr[1].as_integer(); - int width = area_arr[2].as_integer(); - int height = area_arr[3].as_integer(); -#ifdef LOG_TRACE - if (x + width > WindowWidthDefault || y + height > WindowHeightDefault) { - m_last_error = name + " roi is out of bounds"; - return false; - } -#endif - task_info_ptr->roi = Rect(x, y, width, height); - } - else { - task_info_ptr->roi = Rect(); - } - - if (task_json.exist("next")) { - for (const json::value& next : task_json.at("next").as_array()) { - task_info_ptr->next.emplace_back(next.as_string()); - } - } - if (task_json.exist("rectMove")) { - const json::array& move_arr = task_json.at("rectMove").as_array(); - task_info_ptr->rect_move = Rect( - move_arr[0].as_integer(), - move_arr[1].as_integer(), - move_arr[2].as_integer(), - move_arr[3].as_integer()); - } - else { - task_info_ptr->rect_move = Rect(); - } - - m_all_tasks_info.emplace(name, task_info_ptr); - } -#ifdef LOG_TRACE - for (const auto& [name, task] : m_all_tasks_info) { - for (const auto& next : task->next) { - if (m_all_tasks_info.find(next) == m_all_tasks_info.cend()) { - m_last_error = name + "'s next " + next + " is null"; - return false; - } - } - } -#endif - return true; +#include "TaskData.h" + +#include + +#include + +#include "AsstDef.h" +#include "GeneralConfiger.h" +#include "TemplResource.h" + +const std::shared_ptr asst::TaskData::get(const std::string& name) const noexcept +{ + if (auto iter = m_all_tasks_info.find(name); + iter != m_all_tasks_info.cend()) { + return iter->second; + } + else { + return nullptr; + } +} + +const std::unordered_set& asst::TaskData::get_templ_required() const noexcept +{ + return m_templ_required; +} + +std::shared_ptr asst::TaskData::get(std::string name) +{ + return m_all_tasks_info[std::move(name)]; +} + +void asst::TaskData::clear_cache() noexcept +{ + for (auto&& [name, ptr] : m_all_tasks_info) { + ptr->region_of_appeared = Rect(); + } +} + +bool asst::TaskData::parse(const json::value& json) +{ + for (const auto& [name, task_json] : json.as_object()) { + std::string algorithm_str = task_json.get("algorithm", "matchtemplate"); + std::transform(algorithm_str.begin(), algorithm_str.end(), algorithm_str.begin(), ::tolower); + AlgorithmType algorithm = AlgorithmType::Invaild; + if (algorithm_str == "matchtemplate") { + algorithm = AlgorithmType::MatchTemplate; + } + else if (algorithm_str == "justreturn") { + algorithm = AlgorithmType::JustReturn; + } + else if (algorithm_str == "ocrdetect") { + algorithm = AlgorithmType::OcrDetect; + } + // CompareHist是MatchTemplate的衍生算法,不应作为单独的配置参数出现 + // else if (algorithm_str == "comparehist") {} + else { + m_last_error = "algorithm error " + algorithm_str; + return false; + } + + std::shared_ptr task_info_ptr = nullptr; + switch (algorithm) { + case AlgorithmType::JustReturn: + task_info_ptr = std::make_shared(); + break; + case AlgorithmType::MatchTemplate: { + auto match_task_info_ptr = std::make_shared(); + match_task_info_ptr->templ_name = task_json.get("template", name + ".png"); + m_templ_required.emplace(match_task_info_ptr->templ_name); + + match_task_info_ptr->templ_threshold = task_json.get( + "templThreshold", TemplThresholdDefault); + match_task_info_ptr->special_threshold = task_json.get( + "specialThreshold", 0); + if (task_json.exist("maskRange")) { + match_task_info_ptr->mask_range = std::make_pair( + task_json.at("maskRange")[0].as_integer(), + task_json.at("maskRange")[1].as_integer()); + } + + task_info_ptr = match_task_info_ptr; + } break; + case AlgorithmType::OcrDetect: { + auto ocr_task_info_ptr = std::make_shared(); + for (const json::value& text : task_json.at("text").as_array()) { + ocr_task_info_ptr->text.emplace_back(text.as_string()); + } + ocr_task_info_ptr->need_full_match = task_json.get("need_match", false); + if (task_json.exist("ocrReplace")) { + for (const json::value& rep : task_json.at("ocrReplace").as_array()) { + ocr_task_info_ptr->replace_map.emplace(rep.as_array()[0].as_string(), rep.as_array()[1].as_string()); + } + } + task_info_ptr = ocr_task_info_ptr; + } break; + } + task_info_ptr->cache = task_json.get("cache", true); + task_info_ptr->algorithm = algorithm; + task_info_ptr->name = name; + std::string action = task_json.get("action", std::string()); + std::transform(action.begin(), action.end(), action.begin(), ::tolower); + if (action == "clickself") { + task_info_ptr->action = ProcessTaskAction::ClickSelf; + } + else if (action == "clickrand") { + task_info_ptr->action = ProcessTaskAction::ClickRand; + } + else if (action == "donothing" || action.empty()) { + task_info_ptr->action = ProcessTaskAction::DoNothing; + } + else if (action == "stop") { + task_info_ptr->action = ProcessTaskAction::Stop; + } + else if (action == "clickrect") { + task_info_ptr->action = ProcessTaskAction::ClickRect; + const json::value& rect_json = task_json.at("specificRect"); + task_info_ptr->specific_rect = Rect( + rect_json[0].as_integer(), + rect_json[1].as_integer(), + rect_json[2].as_integer(), + rect_json[3].as_integer()); + } + else if (action == "stagedrops") { + task_info_ptr->action = ProcessTaskAction::StageDrops; + } + else if (action == "swipetotheleft") { + task_info_ptr->action = ProcessTaskAction::SwipeToTheLeft; + } + else if (action == "swipetotheright") { + task_info_ptr->action = ProcessTaskAction::SwipeToTheRight; + } + else { + m_last_error = "Task: " + name + " error: " + action; + return false; + } + + task_info_ptr->max_times = task_json.get("maxTimes", INT_MAX); + if (task_json.exist("exceededNext")) { + const json::array& excceed_next_arr = task_json.at("exceededNext").as_array(); + for (const json::value& excceed_next : excceed_next_arr) { + task_info_ptr->exceeded_next.emplace_back(excceed_next.as_string()); + } + } + else { + task_info_ptr->exceeded_next.emplace_back("Stop"); + } + task_info_ptr->pre_delay = task_json.get("preDelay", 0); + task_info_ptr->rear_delay = task_json.get("rearDelay", 0); + if (task_json.exist("reduceOtherTimes")) { + const json::array& reduce_arr = task_json.at("reduceOtherTimes").as_array(); + for (const json::value& reduce : reduce_arr) { + task_info_ptr->reduce_other_times.emplace_back(reduce.as_string()); + } + } + if (task_json.exist("roi")) { + const json::array& area_arr = task_json.at("roi").as_array(); + int x = area_arr[0].as_integer(); + int y = area_arr[1].as_integer(); + int width = area_arr[2].as_integer(); + int height = area_arr[3].as_integer(); +#ifdef LOG_TRACE + if (x + width > WindowWidthDefault || y + height > WindowHeightDefault) { + m_last_error = name + " roi is out of bounds"; + return false; + } +#endif + task_info_ptr->roi = Rect(x, y, width, height); + } + else { + task_info_ptr->roi = Rect(); + } + + if (task_json.exist("next")) { + for (const json::value& next : task_json.at("next").as_array()) { + task_info_ptr->next.emplace_back(next.as_string()); + } + } + if (task_json.exist("rectMove")) { + const json::array& move_arr = task_json.at("rectMove").as_array(); + task_info_ptr->rect_move = Rect( + move_arr[0].as_integer(), + move_arr[1].as_integer(), + move_arr[2].as_integer(), + move_arr[3].as_integer()); + } + else { + task_info_ptr->rect_move = Rect(); + } + + m_all_tasks_info.emplace(name, task_info_ptr); + } +#ifdef LOG_TRACE + for (const auto& [name, task] : m_all_tasks_info) { + for (const auto& next : task->next) { + if (m_all_tasks_info.find(next) == m_all_tasks_info.cend()) { + m_last_error = name + "'s next " + next + " is null"; + return false; + } + } + } +#endif + return true; } \ No newline at end of file diff --git a/src/MeoAssistance/TaskData.h b/src/MeoAssistant/TaskData.h similarity index 98% rename from src/MeoAssistance/TaskData.h rename to src/MeoAssistant/TaskData.h index 3b8869dbf5..c487cfeb59 100644 --- a/src/MeoAssistance/TaskData.h +++ b/src/MeoAssistant/TaskData.h @@ -12,31 +12,31 @@ namespace asst class TaskData : public AbstractConfiger { - public: - TaskData(const TaskData&) = delete; - TaskData(TaskData&&) = delete; + public: + TaskData(const TaskData&) = delete; + TaskData(TaskData&&) = delete; + + virtual ~TaskData() = default; - virtual ~TaskData() = default; - static TaskData& get_instance() { - static TaskData unique_instance; + static TaskData unique_instance; return unique_instance; } const std::shared_ptr get(const std::string& name) const noexcept; const std::unordered_set& get_templ_required() const noexcept; - std::shared_ptr get(std::string name); + std::shared_ptr get(std::string name); void clear_cache() noexcept; - protected: - TaskData() = default; + protected: + TaskData() = default; virtual bool parse(const json::value& json); std::unordered_map> m_all_tasks_info; std::unordered_set m_templ_required; - }; - + }; + static auto& task = TaskData::get_instance(); } diff --git a/src/MeoAssistance/TemplResource.cpp b/src/MeoAssistant/TemplResource.cpp similarity index 99% rename from src/MeoAssistance/TemplResource.cpp rename to src/MeoAssistant/TemplResource.cpp index 042a745212..482d5afa3b 100644 --- a/src/MeoAssistance/TemplResource.cpp +++ b/src/MeoAssistant/TemplResource.cpp @@ -48,4 +48,4 @@ const cv::Mat& asst::TemplResource::get_templ(const std::string& key) const noex void asst::TemplResource::emplace_templ(std::string key, cv::Mat templ) { m_templs.emplace(std::move(key), std::move(templ)); -} +} diff --git a/src/MeoAssistance/TemplResource.h b/src/MeoAssistant/TemplResource.h similarity index 100% rename from src/MeoAssistance/TemplResource.h rename to src/MeoAssistant/TemplResource.h diff --git a/src/MeoAssistance/UserConfiger.cpp b/src/MeoAssistant/UserConfiger.cpp similarity index 100% rename from src/MeoAssistance/UserConfiger.cpp rename to src/MeoAssistant/UserConfiger.cpp diff --git a/src/MeoAssistance/UserConfiger.h b/src/MeoAssistant/UserConfiger.h similarity index 100% rename from src/MeoAssistance/UserConfiger.h rename to src/MeoAssistant/UserConfiger.h diff --git a/src/MeoAssistance/Version.h b/src/MeoAssistant/Version.h similarity index 100% rename from src/MeoAssistance/Version.h rename to src/MeoAssistant/Version.h diff --git a/src/MeoAsstGui/.editorconfig b/src/MeoAsstGui/.editorconfig index 93a48124b8..34b1a3159e 100644 --- a/src/MeoAsstGui/.editorconfig +++ b/src/MeoAsstGui/.editorconfig @@ -150,7 +150,7 @@ dotnet_diagnostic.RS2008.severity = none # IDE0073: File header dotnet_diagnostic.IDE0073.severity = warning -file_header_template = MeoAssistanceGui - A part of the MeoAssistance-Arknight project\nCopyright (C) 2021 MistEO and Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\nany later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see . +file_header_template = MeoAsstGui - A part of the MeoAssistantArknights project\nCopyright (C) 2021 MistEO and Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\nany later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see . # IDE0035: Remove unreachable code dotnet_diagnostic.IDE0035.severity = warning diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index 4440af7100..aca15873fa 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -16,37 +16,37 @@ namespace MeoAsstGui private delegate void ProcCallbckMsg(AsstMsg msg, JObject detail); - [DllImport("MeoAssistance.dll")] private static extern IntPtr AsstCreate(string dirname); + [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstCreate(string dirname); - [DllImport("MeoAssistance.dll")] private static extern IntPtr AsstCreateEx(string dirname, CallbackDelegate callback, IntPtr custom_arg); + [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstCreateEx(string dirname, CallbackDelegate callback, IntPtr custom_arg); - [DllImport("MeoAssistance.dll")] private static extern void AsstDestroy(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern void AsstDestroy(IntPtr ptr); - [DllImport("MeoAssistance.dll")] private static extern bool AsstCatchDefault(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern bool AsstCatchDefault(IntPtr ptr); - [DllImport("MeoAssistance.dll")] private static extern bool AsstCatchCustom(IntPtr ptr, string address); + [DllImport("MeoAssistant.dll")] private static extern bool AsstCatchCustom(IntPtr ptr, string address); - [DllImport("MeoAssistance.dll")] private static extern bool AsstAppendFight(IntPtr ptr, int max_medicine, int max_stone, int max_times); + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendFight(IntPtr ptr, int max_medicine, int max_stone, int max_times); - [DllImport("MeoAssistance.dll")] private static extern bool AsstAppendAward(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendAward(IntPtr ptr); - [DllImport("MeoAssistance.dll")] private static extern bool AsstAppendVisit(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendVisit(IntPtr ptr); - [DllImport("MeoAssistance.dll")] private static extern bool AsstAppendMall(IntPtr ptr, bool with_shopping); + [DllImport("MeoAssistant.dll")] private static extern bool AsstAppendMall(IntPtr ptr, bool with_shopping); - [DllImport("MeoAssistance.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 AsstAppendInfrast(IntPtr ptr, int work_mode, string[] order, int order_len, string uses_of_drones, double dorm_threshold); - [DllImport("MeoAssistance.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 AsstAppendRecruit(IntPtr ptr, int max_times, int[] select_level, int required_len, int[] confirm_level, int confirm_len, bool need_refresh); - [DllImport("MeoAssistance.dll")] private static extern bool AsstStartRecruitCalc(IntPtr ptr, int[] select_level, int required_len, bool set_time); + [DllImport("MeoAssistant.dll")] private static extern bool AsstStartRecruitCalc(IntPtr ptr, int[] select_level, int required_len, bool set_time); - [DllImport("MeoAssistance.dll")] private static extern bool AsstStart(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern bool AsstStart(IntPtr ptr); - [DllImport("MeoAssistance.dll")] private static extern bool AsstStop(IntPtr ptr); + [DllImport("MeoAssistant.dll")] private static extern bool AsstStop(IntPtr ptr); - [DllImport("MeoAssistance.dll")] private static extern bool AsstSetPenguinId(IntPtr p_asst, string id); + [DllImport("MeoAssistant.dll")] private static extern bool AsstSetPenguinId(IntPtr p_asst, string id); - //[DllImport("MeoAssistance.dll")] private static extern bool AsstSetParam(IntPtr p_asst, string type, string param, string value); + //[DllImport("MeoAssistant.dll")] private static extern bool AsstSetParam(IntPtr p_asst, string type, string param, string value); private CallbackDelegate _callback; diff --git a/src/MeoAsstGui/Helper/AutoScroll.cs b/src/MeoAsstGui/Helper/AutoScroll.cs index 41c7235489..626cf0e31d 100644 --- a/src/MeoAsstGui/Helper/AutoScroll.cs +++ b/src/MeoAsstGui/Helper/AutoScroll.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/Helper/CombData.cs b/src/MeoAsstGui/Helper/CombData.cs index ad11e740de..c4c744ecda 100644 --- a/src/MeoAsstGui/Helper/CombData.cs +++ b/src/MeoAsstGui/Helper/CombData.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/Helper/DragItemViewModel.cs b/src/MeoAsstGui/Helper/DragItemViewModel.cs index 1054eeb31c..223751ff21 100644 --- a/src/MeoAsstGui/Helper/DragItemViewModel.cs +++ b/src/MeoAsstGui/Helper/DragItemViewModel.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/Helper/FlowDocumentPagePadding.cs b/src/MeoAsstGui/Helper/FlowDocumentPagePadding.cs index 31098a62c0..23d73e45c4 100644 --- a/src/MeoAsstGui/Helper/FlowDocumentPagePadding.cs +++ b/src/MeoAsstGui/Helper/FlowDocumentPagePadding.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/Helper/LogItemViewModel.cs b/src/MeoAsstGui/Helper/LogItemViewModel.cs index 5537839d57..fbea85de6d 100644 --- a/src/MeoAsstGui/Helper/LogItemViewModel.cs +++ b/src/MeoAsstGui/Helper/LogItemViewModel.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/Helper/ScrollViewerBinding.cs b/src/MeoAsstGui/Helper/ScrollViewerBinding.cs index 17b56b9ae2..57f661030c 100644 --- a/src/MeoAsstGui/Helper/ScrollViewerBinding.cs +++ b/src/MeoAsstGui/Helper/ScrollViewerBinding.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/MeoAsstGui.csproj b/src/MeoAsstGui/MeoAsstGui.csproj index d180809902..35c58ea3af 100644 --- a/src/MeoAsstGui/MeoAsstGui.csproj +++ b/src/MeoAsstGui/MeoAsstGui.csproj @@ -28,11 +28,11 @@ false false true - https://github.com/MistEO/MeoAssistance-Arknights - https://github.com/MistEO/MeoAssistance-Arknights/issues + https://github.com/MistEO/MeoAssistantArknights + https://github.com/MistEO/MeoAssistantArknights/issues Meo明日方舟辅助 MistEO - MeoAssistance + MeoAssistant 0 2.0.0.0 false diff --git a/src/MeoAsstGui/UserControl/AutoRecruitSettingsUserControl.xaml.cs b/src/MeoAsstGui/UserControl/AutoRecruitSettingsUserControl.xaml.cs index b74256231f..c60e0eb103 100644 --- a/src/MeoAsstGui/UserControl/AutoRecruitSettingsUserControl.xaml.cs +++ b/src/MeoAsstGui/UserControl/AutoRecruitSettingsUserControl.xaml.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/UserControl/ConnectSettingsUserControl.xaml.cs b/src/MeoAsstGui/UserControl/ConnectSettingsUserControl.xaml.cs index 57b7e0a89d..878e485c83 100644 --- a/src/MeoAsstGui/UserControl/ConnectSettingsUserControl.xaml.cs +++ b/src/MeoAsstGui/UserControl/ConnectSettingsUserControl.xaml.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml.cs b/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml.cs index b344dc6fed..a70e44eef1 100644 --- a/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml.cs +++ b/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/UserControl/MallSettingsUserControl.xaml.cs b/src/MeoAsstGui/UserControl/MallSettingsUserControl.xaml.cs index 68fb57a1bf..9d4b9b2834 100644 --- a/src/MeoAsstGui/UserControl/MallSettingsUserControl.xaml.cs +++ b/src/MeoAsstGui/UserControl/MallSettingsUserControl.xaml.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/UserControl/PenguinReportSettingsUserControl.xaml.cs b/src/MeoAsstGui/UserControl/PenguinReportSettingsUserControl.xaml.cs index 2aa6829222..9ee038e331 100644 --- a/src/MeoAsstGui/UserControl/PenguinReportSettingsUserControl.xaml.cs +++ b/src/MeoAsstGui/UserControl/PenguinReportSettingsUserControl.xaml.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml.cs b/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml.cs index 88d55ea268..40332f1d77 100644 --- a/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml.cs +++ b/src/MeoAsstGui/UserControl/VersionUpdateSettingsUserControl.xaml.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify diff --git a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs index a4619e2919..4c60e1420b 100644 --- a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs +++ b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs @@ -1,4 +1,4 @@ -// MeoAssistanceGui - A part of the MeoAssistance-Arknight project +// MeoAsstGui - A part of the MeoAssistantArknights project // Copyright (C) 2021 MistEO and Contributors // // This program is free software: you can redistribute it and/or modify @@ -24,7 +24,7 @@ namespace MeoAsstGui private IWindowManager _windowManager; private IContainer _container; - [DllImport("MeoAssistance.dll")] private static extern IntPtr AsstGetVersion(); + [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstGetVersion(); private string _versionInfo = "版本号:" + Marshal.PtrToStringAnsi(AsstGetVersion()); @@ -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 a86bdd7ccd..9999164e82 100644 --- a/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs +++ b/src/MeoAsstGui/ViewModels/VersionUpdateViewModel.cs @@ -1,103 +1,103 @@ -using System; +using System; using System.Collections.Generic; using StyletIoC; 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; -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; - } - - [DllImport("MeoAssistance.dll")] private static extern IntPtr AsstGetVersion(); - - private string _curVersion = Marshal.PtrToStringAnsi(AsstGetVersion()); - private string _latestVersion; - + _windowManager = windowManager; + } + + [DllImport("MeoAssistant.dll")] private static extern IntPtr AsstGetVersion(); + + 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/MeoAssistance-Arknights/releases/latest"; - private const string _requestBetaUrl = "https://api.github.com/repos/MistEO/MeoAssistance-Arknights/releases"; + 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 @@ -110,9 +110,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(); // 复制新版本的所有文件到当前路径下 @@ -162,33 +162,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; + // 下载压缩包 + const int downloadRetryMaxTimes = 2; + string downloadTempFilename = UpdatePackageName + ".tmp"; + bool downloaded = false; for (int i = 0; i != downloadRetryMaxTimes; ++i) { if (DownloadFile(_downloadUrl.Replace("github.com", "hub.fastgit.org"), downloadTempFilename) @@ -197,32 +197,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) @@ -237,11 +237,11 @@ namespace MeoAsstGui { break; } - } - if (response.Length == 0) - { - return false; - } + } + if (response.Length == 0) + { + return false; + } try { @@ -266,7 +266,7 @@ namespace MeoAsstGui foreach (JObject asset in json["assets"]) { string downUrl = asset["browser_download_url"].ToString(); - if (downUrl.IndexOf("MeoAssistance") != -1) + if (downUrl.IndexOf("MeoAssistantArknights") != -1) { _downloadUrl = downUrl; _lastestJson = json; @@ -278,9 +278,9 @@ namespace MeoAsstGui { return false; } - return false; - } - + return false; + } + private string RequestApi(string url) { HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); @@ -348,8 +348,8 @@ namespace MeoAsstGui public bool ResourceOTA() { - const string req_base_url = "https://api.github.com/repos/MistEO/MeoAssistance-Arknights/commits?path="; - const string down_base_url = "https://cdn.jsdelivr.net/gh/MistEO/MeoAssistance-Arknights@"; + const string req_base_url = "https://api.github.com/repos/MistEO/MeoAssistantArknights/commits?path="; + const string down_base_url = "https://cdn.jsdelivr.net/gh/MistEO/MeoAssistantArknights@"; var update_dict = new Dictionary() { { "3rdparty/resource/penguin-stats-recognize/json/stages.json" , "resource/penguin-stats-recognize/json/stages.json"}, @@ -444,6 +444,6 @@ namespace MeoAsstGui IsFirstBootAfterUpdate = false; UpdateTag = ""; UpdateInfo = ""; - } - } + } + } } diff --git a/src/Python/interface.py b/src/Python/interface.py index 0e8b180e86..e1c8132cff 100644 --- a/src/Python/interface.py +++ b/src/Python/interface.py @@ -24,7 +24,7 @@ class Asst: ``callback``: 回调函数 ``arg``: 自定义参数 """ - self.__dllpath = pathlib.Path(dirname) / 'MeoAssistance.dll' + self.__dllpath = pathlib.Path(dirname) / 'MeoAssistant.dll' self.__dll = ctypes.WinDLL(str(self.__dllpath)) self.__dll.AsstCreateEx.restype = ctypes.c_void_p diff --git a/tools/TestCaller/TestCaller.vcxproj b/tools/TestCaller/TestCaller.vcxproj index 6464ec7e66..4268e9ebf1 100644 --- a/tools/TestCaller/TestCaller.vcxproj +++ b/tools/TestCaller/TestCaller.vcxproj @@ -75,7 +75,7 @@ true true true - MeoAssistance.lib;%(AdditionalDependencies) + MeoAssistant.lib;%(AdditionalDependencies) $(TargetDir);%(AdditionalLibraryDirectories) @@ -97,7 +97,7 @@ true true true - MeoAssistance.lib;%(AdditionalDependencies) + MeoAssistant.lib;%(AdditionalDependencies) $(TargetDir);%(AdditionalLibraryDirectories) diff --git a/tools/TransparentImageCvt/TransparentImageCvt.vcxproj b/tools/TransparentImageCvt/TransparentImageCvt.vcxproj index d3883104df..d7ef4b1991 100644 --- a/tools/TransparentImageCvt/TransparentImageCvt.vcxproj +++ b/tools/TransparentImageCvt/TransparentImageCvt.vcxproj @@ -1,18 +1,10 @@ - - Debug - Win32 - Release Win32 - - Debug - x64 - Release x64 @@ -26,12 +18,6 @@ 10.0 - - Application - true - v142 - Unicode - Application false @@ -39,12 +25,6 @@ true Unicode - - Application - true - v142 - Unicode - Application false @@ -57,47 +37,21 @@ - - - - - - - - true - false - - true - $(SolutionDir)3rdparty\include;$(VC_IncludePath);$(WindowsSDK_IncludePath) - $(SolutionDir)3rdparty\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64) - false $(SolutionDir)3rdparty\include;$(VC_IncludePath);$(WindowsSDK_IncludePath) $(SolutionDir)3rdparty\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64) - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - Level3 @@ -114,21 +68,6 @@ true - - - Level3 - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - MultiThreadedDLL - - - Console - true - opencv_world453.lib;%(AdditionalDependencies) - - Level3 diff --git a/tools/TransparentImageCvt/main.cpp b/tools/TransparentImageCvt/main.cpp index 2aaf75ed48..a59baea310 100644 --- a/tools/TransparentImageCvt/main.cpp +++ b/tools/TransparentImageCvt/main.cpp @@ -8,8 +8,9 @@ int main() { - std::string input_dir = R"(D:\Code\MeoAssistance\resource\infrast)"; - std::string output_dir = R"(D:\Code\MeoAssistance\resource\infrast\cvt\)"; + auto solution_dir = std::filesystem::current_path().parent_path().parent_path(); + auto input_dir = solution_dir / "resource" / "infrast"; + auto output_dir = solution_dir / "resource" / "infrast" / "cvt"; for (auto&& entry : std::filesystem::directory_iterator(input_dir)) { if (entry.path().extension() != ".png") { @@ -27,7 +28,7 @@ int main() } } } - std::string out_file = output_dir + entry.path().filename().u8string(); + std::string out_file = (output_dir / entry.path().filename()).u8string(); cv::imwrite(out_file, cvt); } diff --git a/tools/build_release.bat b/tools/build_release.bat index 4d2e240ffa..d00a174d11 100644 --- a/tools/build_release.bat +++ b/tools/build_release.bat @@ -1,2 +1,2 @@ -MSBuild.exe ..\MeoAssistance.sln /p:Configuration=Release /p:Platform=x64 /t:Rebuild +MSBuild.exe ..\MeoAssistantArknights.sln /p:Configuration=Release /p:Platform=x64 /t:Rebuild sh zip_release.sh \ No newline at end of file diff --git a/tools/zip_release.sh b/tools/zip_release.sh index f71ac6f915..7d78a3e60b 100644 --- a/tools/zip_release.sh +++ b/tools/zip_release.sh @@ -1,6 +1,6 @@ TargetDir="../x64/Release" LatestTag=$(git describe --tags $(git rev-list --tags --max-count=1)) -Package="../x64/MeoAssistance_"$LatestTag".zip" +Package="../x64/MeoAssistantArknights_"$LatestTag".zip" cp ./*.url $TargetDir 7z.exe a $Package $TargetDir/resource $TargetDir/*.dll $TargetDir/aria2c.exe $TargetDir/MeoAsstGui.exe $TargetDir/*.url \ No newline at end of file diff --git a/tools/使用说明.url b/tools/使用说明.url index a467b530af..00bff04f26 100644 --- a/tools/使用说明.url +++ b/tools/使用说明.url @@ -1,2 +1,2 @@ [InternetShortcut] -URL=https://github.com/MistEO/MeoAssistance-Arknights/blob/master/README.md +URL=https://github.com/MistEO/MeoAssistantArknights/blob/master/README.md diff --git a/tools/问题反馈.url b/tools/问题反馈.url index 4cf932e0c1..40d2c43106 100644 --- a/tools/问题反馈.url +++ b/tools/问题反馈.url @@ -1,2 +1,2 @@ [InternetShortcut] -URL=https://github.com/MistEO/MeoAssistance-Arknights/issues +URL=https://github.com/MistEO/MeoAssistantArknights/issues