Browse Source

Merge branch 'eesast:dev' into new

tags/v0.1.0
shangfengh GitHub 2 years ago
parent
commit
ba94fe2ef5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 28 additions and 24 deletions
  1. +1
    -1
      CAPI/README.md
  2. +4
    -0
      CAPI/cpp/API/API.vcxproj
  3. +2
    -2
      CAPI/cpp/API/include/constants.h
  4. +2
    -2
      CAPI/cpp/API/include/utils.hpp
  5. +8
    -8
      CAPI/cpp/API/src/API.cpp
  6. +1
    -1
      CAPI/cpp/API/src/Communication.cpp
  7. +8
    -8
      CAPI/cpp/API/src/DebugAPI.cpp
  8. +1
    -1
      CAPI/cpp/API/src/logic.cpp
  9. +1
    -1
      CAPI/cpp/README.md

+ 1
- 1
CAPI/README.md View File

@@ -2,4 +2,4 @@

## 简介

通信组件与选手接口
通信组件与选手接口。开发文档和规范参见 `cpp` 和 `python` 内的 `README.md`

+ 4
- 0
CAPI/cpp/API/API.vcxproj View File

@@ -93,6 +93,7 @@
<AdditionalIncludeDirectories>..\spdlog\include;..\tclap\include;..\grpc\include;..\proto;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/source-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -114,6 +115,7 @@
<AdditionalIncludeDirectories>..\spdlog\include;..\tclap\include;..\grpc\include;..\proto;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/source-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -135,6 +137,7 @@
<AdditionalIncludeDirectories>..\spdlog\include;..\tclap\include;..\grpc\include;..\proto;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/source-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -156,6 +159,7 @@
<AdditionalIncludeDirectories>..\spdlog\include;..\tclap\include;..\grpc\include;..\proto;include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/source-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>


+ 2
- 2
CAPI/cpp/API/include/constants.h View File

@@ -166,9 +166,9 @@ namespace Constants
struct Robot
{
SCCI int moveSpeed = basicStudentSpeed * 9 / 10;
SCCI int maxHp = basicHp * 0.3;
SCCI int maxHp = basicHp * 3 / 10;
SCCI int maxAddiction = basicMaxGamingAddiction * 0;
SCCI int fixSpeed = (int)(basicFixSpeed * 0.7);
SCCI int fixSpeed = basicFixSpeed * 7 / 10;
SCCI int encourageSpeed = 0;
SCCI double concealment = 0.8;
SCCI int alertnessRadius = 0;


+ 2
- 2
CAPI/cpp/API/include/utils.hpp View File

@@ -472,9 +472,9 @@ namespace THUAI62Proto
{
protobuf::SendMsg sendMsg;
if (binary)
sendMsg.set_binary_message(msg);
sendMsg.set_binary_message(std::move(msg));
else
sendMsg.set_text_message(msg);
sendMsg.set_text_message(std::move(msg));
sendMsg.set_to_player_id(toID);
sendMsg.set_player_id(id);
return sendMsg;


+ 8
- 8
CAPI/cpp/API/src/API.cpp View File

@@ -192,26 +192,26 @@ std::future<bool> TrickerAPI::EndAllAction()

std::future<bool> StudentAPI::SendTextMessage(int64_t toID, std::string message)
{
return std::async(std::launch::async, [=]()
{ return logic.SendMessage(toID, message, false); });
return std::async(std::launch::async, [=, message = std::move(message)]()
{ return logic.SendMessage(toID, std::move(message), false); });
}

std::future<bool> TrickerAPI::SendTextMessage(int64_t toID, std::string message)
{
return std::async(std::launch::async, [=]()
{ return logic.SendMessage(toID, message, false); });
return std::async(std::launch::async, [=, message = std::move(message)]()
{ return logic.SendMessage(toID, std::move(message), false); });
}

std::future<bool> StudentAPI::SendBinaryMessage(int64_t toID, std::string message)
{
return std::async(std::launch::async, [=]()
{ return logic.SendMessage(toID, message, false); });
return std::async(std::launch::async, [=, message = std::move(message)]()
{ return logic.SendMessage(toID, std::move(message), false); });
}

std::future<bool> TrickerAPI::SendBinaryMessage(int64_t toID, std::string message)
{
return std::async(std::launch::async, [=]()
{ return logic.SendMessage(toID, message, false); });
return std::async(std::launch::async, [=, message = std::move(message)]()
{ return logic.SendMessage(toID, std::move(message), false); });
}

bool StudentAPI::HaveMessage()


+ 1
- 1
CAPI/cpp/API/src/Communication.cpp View File

@@ -119,7 +119,7 @@ bool Communication::SendMessage(int64_t toID, std::string message, bool binary,
}
protobuf::BoolRes sendMessageResult;
ClientContext context;
auto request = THUAI62Proto::THUAI62ProtobufSend(message, toID, binary, playerID);
auto request = THUAI62Proto::THUAI62ProtobufSend(std::move(message), toID, binary, playerID);
auto status = THUAI6Stub->SendMessage(&context, request, &sendMessageResult);
if (status.ok())
return sendMessageResult.act_success();


+ 8
- 8
CAPI/cpp/API/src/DebugAPI.cpp View File

@@ -355,8 +355,8 @@ std::future<bool> TrickerDebugAPI::EndAllAction()
std::future<bool> StudentDebugAPI::SendTextMessage(int64_t toID, std::string message)
{
logger->info("SendTextMessage: toID = {}, message = {}, called at {}ms", toID, message, Time::TimeSinceStart(startPoint));
return std::async(std::launch::async, [=]()
{ auto result = logic.SendMessage(toID, message, false);
return std::async(std::launch::async, [=, message = std::move(message)]()
{ auto result = logic.SendMessage(toID, std::move(message), false);
if (!result)
logger->warn("SendTextMessage: failed at {}ms", Time::TimeSinceStart(startPoint));
return result; });
@@ -365,8 +365,8 @@ std::future<bool> StudentDebugAPI::SendTextMessage(int64_t toID, std::string mes
std::future<bool> TrickerDebugAPI::SendTextMessage(int64_t toID, std::string message)
{
logger->info("SendTextMessage: toID = {}, message = {}, called at {}ms", toID, message, Time::TimeSinceStart(startPoint));
return std::async(std::launch::async, [=]()
{ auto result = logic.SendMessage(toID, message, false);
return std::async(std::launch::async, [=, message = std::move(message)]()
{ auto result = logic.SendMessage(toID, std::move(message), false);
if (!result)
logger->warn("SendTextMessage: failed at {}ms", Time::TimeSinceStart(startPoint));
return result; });
@@ -375,8 +375,8 @@ std::future<bool> TrickerDebugAPI::SendTextMessage(int64_t toID, std::string mes
std::future<bool> StudentDebugAPI::SendBinaryMessage(int64_t toID, std::string message)
{
logger->info("SendBinaryMessage: toID = {}, message = {}, called at {}ms", toID, message, Time::TimeSinceStart(startPoint));
return std::async(std::launch::async, [=]()
{ auto result = logic.SendMessage(toID, message, true);
return std::async(std::launch::async, [=, message = std::move(message)]()
{ auto result = logic.SendMessage(toID, std::move(message), true);
if (!result)
logger->warn("SendBinaryMessage: failed at {}ms", Time::TimeSinceStart(startPoint));
return result; });
@@ -385,8 +385,8 @@ std::future<bool> StudentDebugAPI::SendBinaryMessage(int64_t toID, std::string m
std::future<bool> TrickerDebugAPI::SendBinaryMessage(int64_t toID, std::string message)
{
logger->info("SendBinaryMessage: toID = {}, message = {}, called at {}ms", toID, message, Time::TimeSinceStart(startPoint));
return std::async(std::launch::async, [=]()
{ auto result = logic.SendMessage(toID, message, true);
return std::async(std::launch::async, [=, message = std::move(message)]()
{ auto result = logic.SendMessage(toID, std::move(message), true);
if (!result)
logger->warn("SendBinaryMessage: failed at {}ms", Time::TimeSinceStart(startPoint));
return result; });


+ 1
- 1
CAPI/cpp/API/src/logic.cpp View File

@@ -217,7 +217,7 @@ bool Logic::UseSkill(int32_t skill, int32_t skillParam)
bool Logic::SendMessage(int64_t toID, std::string message, bool binary)
{
logger->debug("Called SendMessage");
return pComm->SendMessage(toID, message, binary, playerID);
return pComm->SendMessage(toID, std::move(message), binary, playerID);
}

bool Logic::HaveMessage()


+ 1
- 1
CAPI/cpp/README.md View File

@@ -74,7 +74,7 @@ C++ 通信组件与选手接口
- 将之前提取的 Debug 和 Release 的 `.lib` 分别放在项目中的单独的文件夹里(THUAI6 使用的是 `CAPI\cpp\lib\debug` 和 `CAPI\cpp\lib\release`),并[使用 `.gitignore` 忽略掉](https://github.com/eesast/THUAI6/blob/c8e1fbe299c67a6e101fa02e85bcc971acd0f48b/CAPI/cpp/.gitignore#L502)
- 在项目属性的“链接器”的首页的“附加库目录”中分别配置 Debug 和 Release 的 [`.lib` 文件的相应路径](https://github.com/eesast/THUAI6/blob/c8e1fbe299c67a6e101fa02e85bcc971acd0f48b/CAPI/cpp/API/API.vcxproj#L166)
- 在项目属性中的“链接器”的“输入”的“附加依赖库”中分别配置 Debug 和 Release [所需要链接的库的文件名](https://github.com/eesast/THUAI6/blob/c8e1fbe299c67a6e101fa02e85bcc971acd0f48b/CAPI/cpp/API/API.vcxproj#L165)。注意 Debug 和 Release 链接的库可能并不完全相同,建议在 cmd 中使用 `dir /b` 将其自动列举并复制。还需要注意需要手动指定链接一些 Windows 自带的 `lib`,例如 `Ws2_32.lib`、`Crypt32.lib`、`Iphlpapi.lib` 等。如果生成过程中不通过,表示找不到一些函数,则在 Google 中搜索该函数,如果发现是 Windows 系统的 API 函数则会搜到[微软官方文档](https://learn.microsoft.com) 的对应链接的页面,则在页面最下方会表明它所在的 `.lib`(例如 [`CreateProcessA` 的页面](https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa#requirements)),加进去即可
- 然后进行生成解决方案。如果感觉编译的速度过慢,可以在项目属性的 `C/C++` 的“所有选项”中搜索并行编译,并开启之(`/Qpar`)。不过由于 THUAI6 的疏忽,忘记开启了并行编译
- 然后进行生成解决方案。如果感觉编译的速度过慢,可以在项目属性的 `C/C++` 的“所有选项”中搜索多处理器编译,并[开启(`/MP`)](https://github.com/eesast/THUAI6/blob/ad4db599f97449786e6c910940bf4f69224d5408/CAPI/cpp/API/API.vcxproj#L162)
- 然后开始运行。如果提示缺少一些 DLL,可以把之前保存的 `.dll` 文件(如果有的话)放在与 `.exe` 相同的目录下。该目录为**与 `.sln` 相同目录的**(不是与 `.vcxproj` 相同目录的)`x64\Debug` 和 `x64\Release`
- 如果 x64 的 Debug 和 x64 的 Release 均生成成功,那么找一台没配过的电脑再试一次
- 随便写点 AI 代码,重新生成解决方案,确认成功后发布选手包


Loading…
Cancel
Save