Browse Source

feat(CAPI): complete most communication functions, test required

tags/0.1.0
DragonAura 3 years ago
parent
commit
3937ad00af
7 changed files with 400 additions and 220 deletions
  1. +37
    -82
      CAPI/API/include/API.h
  2. +20
    -1
      CAPI/API/include/Communication.h
  3. +14
    -33
      CAPI/API/include/logic.h
  4. +8
    -0
      CAPI/API/include/utils.hpp
  5. +142
    -16
      CAPI/API/src/API.cpp
  6. +122
    -4
      CAPI/API/src/Communication.cpp
  7. +57
    -84
      CAPI/API/src/logic.cpp

+ 37
- 82
CAPI/API/include/API.h View File

@@ -34,6 +34,7 @@ public:
virtual std::shared_ptr<const THUAI6::Butcher> ButcherGetSelfInfo() const = 0;

virtual std::vector<std::vector<THUAI6::PlaceType>> GetFullMap() const = 0;
virtual THUAI6::PlaceType GetPlaceType(int32_t CellX, int32_t CellY) const = 0;

// 供IAPI使用的操作相关的部分
virtual bool Move(int64_t time, double angle) = 0;
@@ -42,17 +43,17 @@ public:
virtual bool UseSkill() = 0;
virtual bool SendMessage(int64_t toID, std::string message) = 0;
virtual bool HaveMessage() = 0;
virtual std::pair<std::string, int64_t> GetMessage() = 0;
virtual std::pair<int64_t, std::string> GetMessage() = 0;

virtual bool Escape() = 0;

// 说明:双向stream由三个函数共同实现,两个记录开始和结束,结果由Logic里的私有的成员变量记录,获得返回值则另调函数
virtual bool StartFixMachine() = 0;
virtual bool EndFixMachine() = 0;
virtual void StartFixMachine() = 0;
virtual void EndFixMachine() = 0;
virtual bool GetFixStatus() = 0;

virtual bool StartSaveHuman() = 0;
virtual bool EndSaveHuman() = 0;
virtual void StartSaveHuman() = 0;
virtual void EndSaveHuman() = 0;
virtual bool GetSaveStatus() = 0;

virtual bool Attack(double angle) = 0;
@@ -128,11 +129,11 @@ class IHumanAPI : public IAPI
public:
/*****人类阵营的特定函数*****/

virtual std::future<bool> StartFixMachine() = 0;
virtual std::future<bool> EndFixMachine() = 0;
virtual void StartFixMachine() = 0;
virtual void EndFixMachine() = 0;
virtual std::future<bool> GetFixStatus() = 0;
virtual std::future<bool> StartSaveHuman() = 0;
virtual std::future<bool> EndSaveHuman() = 0;
virtual void StartSaveHuman() = 0;
virtual void EndSaveHuman() = 0;
virtual std::future<bool> GetSaveStatus() = 0;
virtual std::future<bool> Escape() = 0;
[[nodiscard]] virtual std::shared_ptr<const THUAI6::Human> GetSelfInfo() const = 0;
@@ -189,12 +190,8 @@ public:
std::future<bool> UseSkill() override;

std::future<bool> SendMessage(int64_t, std::string) override;
[[nodiscard]] std::future<bool> HaveMessage() override
{
}
[[nodiscard]] std::future<std::pair<int64_t, std::string>> GetMessage() override
{
}
[[nodiscard]] std::future<bool> HaveMessage() override;
[[nodiscard]] std::future<std::pair<int64_t, std::string>> GetMessage() override;

std::future<bool> Wait() override
{
@@ -206,38 +203,20 @@ public:
[[nodiscard]] std::vector<std::shared_ptr<const THUAI6::Prop>> GetProps() const override;

[[nodiscard]] std::vector<std::vector<THUAI6::PlaceType>> GetFullMap() const override;
[[nodiscard]] THUAI6::PlaceType GetPlaceType(int32_t CellX, int32_t CellY) const override
{
}
[[nodiscard]] THUAI6::PlaceType GetPlaceType(int32_t CellX, int32_t CellY) const override;

[[nodiscard]] const std::vector<int64_t> GetPlayerGUIDs() const override
{
}

std::future<bool> StartFixMachine() override
{
}
std::future<bool> EndFixMachine() override
{
}
std::future<bool> GetFixStatus() override
{
}
std::future<bool> StartSaveHuman() override
{
}
std::future<bool> EndSaveHuman() override
{
}
std::future<bool> GetSaveStatus() override
{
}
std::future<bool> Escape() override
{
}
[[nodiscard]] virtual std::shared_ptr<const THUAI6::Human> GetSelfInfo() const override
{
}
void StartFixMachine() override;
void EndFixMachine() override;
std::future<bool> GetFixStatus() override;
void StartSaveHuman() override;
void EndSaveHuman() override;
std::future<bool> GetSaveStatus() override;
std::future<bool> Escape() override;
[[nodiscard]] std::shared_ptr<const THUAI6::Human> GetSelfInfo() const override;

private:
ILogic& logic;
@@ -273,54 +252,30 @@ public:
std::future<bool> UseSkill() override;

std::future<bool> SendMessage(int64_t, std::string) override;
[[nodiscard]] std::future<bool> HaveMessage() override
{
}
[[nodiscard]] std::future<std::pair<int64_t, std::string>> GetMessage() override
{
}
[[nodiscard]] std::future<bool> HaveMessage() override;
[[nodiscard]] std::future<std::pair<int64_t, std::string>> GetMessage() override;

std::future<bool> Wait() override
{
}

[[nodiscard]] std::vector<std::shared_ptr<const THUAI6::Human>> GetHuman() const override
{
}
[[nodiscard]] std::vector<std::shared_ptr<const THUAI6::Butcher>> GetButcher() const override
{
}
[[nodiscard]] std::vector<std::shared_ptr<const THUAI6::Human>> GetHuman() const override;
[[nodiscard]] std::vector<std::shared_ptr<const THUAI6::Butcher>> GetButcher() const override;

[[nodiscard]] std::vector<std::shared_ptr<const THUAI6::Prop>> GetProps() const override
{
}
[[nodiscard]] std::vector<std::shared_ptr<const THUAI6::Prop>> GetProps() const override;

[[nodiscard]] std::vector<std::vector<THUAI6::PlaceType>> GetFullMap() const override
{
}
[[nodiscard]] THUAI6::PlaceType GetPlaceType(int32_t CellX, int32_t CellY) const override
{
}
[[nodiscard]] std::vector<std::vector<THUAI6::PlaceType>> GetFullMap() const override;
[[nodiscard]] THUAI6::PlaceType GetPlaceType(int32_t CellX, int32_t CellY) const override;

[[nodiscard]] const std::vector<int64_t> GetPlayerGUIDs() const override
{
}

std::future<bool> Attack(double angleInRadian) override
{
}
std::future<bool> CarryHuman() override
{
}
std::future<bool> ReleaseHuman() override
{
}
std::future<bool> HangHuman() override
{
}
[[nodiscard]] std::shared_ptr<const THUAI6::Butcher> GetSelfInfo() const override
{
}
std::future<bool> Attack(double angleInRadian) override;
std::future<bool> CarryHuman() override;
std::future<bool> ReleaseHuman() override;
std::future<bool> HangHuman() override;
[[nodiscard]] std::shared_ptr<const THUAI6::Butcher> GetSelfInfo() const override;

private:
ILogic& logic;
@@ -408,19 +363,19 @@ public:
{
}

std::future<bool> StartFixMachine() override
void StartFixMachine() override
{
}
std::future<bool> EndFixMachine() override
void EndFixMachine() override
{
}
std::future<bool> GetFixStatus() override
{
}
std::future<bool> StartSaveHuman() override
void StartSaveHuman() override
{
}
std::future<bool> EndSaveHuman() override
void EndSaveHuman() override
{
}
std::future<bool> GetSaveStatus() override


+ 20
- 1
CAPI/API/include/Communication.h View File

@@ -8,6 +8,7 @@
#include "Services.pb.h"
#include <grpcpp/grpcpp.h>
#include "structures.h"
#include <thread>

class Logic;

@@ -24,17 +25,35 @@ public:
bool UseSkill(int64_t playerID);
bool SendMessage(int64_t toID, std::string message, int64_t playerID);
bool HaveMessage(int64_t playerID);
std::pair<std::string, int64_t> GetMessage(int64_t playerID);
std::pair<int64_t, std::string> GetMessage(int64_t playerID);
bool Escape(int64_t playerID);

void StartFixMachine(int64_t playerID);
void EndFixMachine();
bool GetFixStatus();
void StartSaveHuman(int64_t playerID);
void EndSaveHuman();
bool GetSaveStatus();

bool Attack(double angle, int64_t playerID);

bool CarryHuman(int64_t playerID);
bool ReleaseHuman(int64_t playerID);
bool HangHuman(int64_t playerID);

bool TryConnection(int64_t playerID);
protobuf::MessageToClient GetMessage2Client();
bool HaveMessage2Client();
void AddPlayer(int64_t playerID, THUAI6::PlayerType playerType, THUAI6::HumanType humanType, THUAI6::ButcherType butcherType);

private:
void FixMachine(int64_t playerID);
void SaveHuman(int64_t playerID);
std::unique_ptr<protobuf::AvailableService::Stub> THUAI6Stub;
bool haveNewMessage = false;
protobuf::MessageToClient message2Client;
bool isFixing = false;
bool isSaving = false;
};

#endif

+ 14
- 33
CAPI/API/include/logic.h View File

@@ -90,6 +90,7 @@ private:
std::shared_ptr<const THUAI6::Butcher> ButcherGetSelfInfo() const override;

std::vector<std::vector<THUAI6::PlaceType>> GetFullMap() const override;
THUAI6::PlaceType GetPlaceType(int32_t CellX, int32_t CellY) const override;

// 供IAPI使用的操作相关的部分
bool Move(int64_t time, double angle) override;
@@ -98,43 +99,23 @@ private:
bool UseSkill() override;
bool SendMessage(int64_t toID, std::string message) override;
bool HaveMessage() override;
std::pair<std::string, int64_t> GetMessage() override;
std::pair<int64_t, std::string> GetMessage() override;

bool Escape() override;

// 说明:双向stream由三个函数共同实现,两个记录开始和结束,结果由Logic里的私有的成员变量记录,获得返回值则另调函数
bool StartFixMachine() override
{
}
bool EndFixMachine() override
{
}
bool GetFixStatus() override
{
}

bool StartSaveHuman() override
{
}
bool EndSaveHuman() override
{
}
bool GetSaveStatus() override
{
}

bool Attack(double angle) override
{
}
bool CarryHuman() override
{
}
bool ReleaseHuman() override
{
}
bool HangHuman() override
{
}
void StartFixMachine() override;
void EndFixMachine() override;
bool GetFixStatus() override;

void StartSaveHuman() override;
void EndSaveHuman() override;
bool GetSaveStatus() override;

bool Attack(double angle) override;
bool CarryHuman() override;
bool ReleaseHuman() override;
bool HangHuman() override;

bool WaitThread() override
{


+ 8
- 0
CAPI/API/include/utils.hpp View File

@@ -272,6 +272,14 @@ namespace THUAI62Proto
sendMsg.set_player_id(id);
return sendMsg;
}

inline protobuf::AttackMsg THUAI62ProtobufAttack(double angle, int64_t id)
{
protobuf::AttackMsg attackMsg;
attackMsg.set_angle(angle);
attackMsg.set_player_id(id);
return attackMsg;
}
} // namespace THUAI62Proto

#endif

+ 142
- 16
CAPI/API/src/API.cpp View File

@@ -10,26 +10,22 @@ std::future<bool> HumanAPI::Move(int64_t timeInMilliseconds, double angleInRadia

std::future<bool> HumanAPI::MoveDown(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, 0); });
return Move(timeInMilliseconds, 0);
}

std::future<bool> HumanAPI::MoveRight(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, PI * 0.5); });
return Move(timeInMilliseconds, PI * 0.5);
}

std::future<bool> HumanAPI::MoveUp(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, PI); });
return Move(timeInMilliseconds, PI);
}

std::future<bool> HumanAPI::MoveLeft(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, PI * 1.5); });
return Move(timeInMilliseconds, PI * 1.5);
}

std::future<bool> ButcherAPI::Move(int64_t timeInMilliseconds, double angleInRadian)
@@ -40,26 +36,22 @@ std::future<bool> ButcherAPI::Move(int64_t timeInMilliseconds, double angleInRad

std::future<bool> ButcherAPI::MoveDown(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, 0); });
return Move(timeInMilliseconds, 0);
}

std::future<bool> ButcherAPI::MoveRight(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, PI * 0.5); });
return Move(timeInMilliseconds, PI * 0.5);
}

std::future<bool> ButcherAPI::MoveUp(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, PI); });
return Move(timeInMilliseconds, PI);
}

std::future<bool> ButcherAPI::MoveLeft(int64_t timeInMilliseconds)
{
return std::async(std::launch::async, [&]()
{ return logic.Move(timeInMilliseconds, PI * 1.5); });
return Move(timeInMilliseconds, PI * 1.5);
}

std::future<bool> HumanAPI::PickProp(THUAI6::PropType prop)
@@ -110,6 +102,30 @@ std::future<bool> ButcherAPI::SendMessage(int64_t toID, std::string message)
{ return logic.SendMessage(toID, message); });
}

std::future<bool> HumanAPI::HaveMessage()
{
return std::async(std::launch::async, [&]()
{ return logic.HaveMessage(); });
}

std::future<bool> ButcherAPI::HaveMessage()
{
return std::async(std::launch::async, [&]()
{ return logic.HaveMessage(); });
}

std::future<std::pair<int64_t, std::string>> HumanAPI::GetMessage()
{
return std::async(std::launch::async, [&]()
{ return logic.GetMessage(); });
}

std::future<std::pair<int64_t, std::string>> ButcherAPI::GetMessage()
{
return std::async(std::launch::async, [&]()
{ return logic.GetMessage(); });
}

std::vector<std::shared_ptr<const THUAI6::Butcher>> HumanAPI::GetButcher() const
{
return logic.GetButchers();
@@ -120,16 +136,126 @@ std::vector<std::shared_ptr<const THUAI6::Human>> HumanAPI::GetHuman() const
return logic.GetHumans();
}

std::vector<std::shared_ptr<const THUAI6::Butcher>> ButcherAPI::GetButcher() const
{
return logic.GetButchers();
}

std::vector<std::shared_ptr<const THUAI6::Human>> ButcherAPI::GetHuman() const
{
return logic.GetHumans();
}

std::vector<std::shared_ptr<const THUAI6::Prop>> HumanAPI::GetProps() const
{
return logic.GetProps();
}

std::vector<std::shared_ptr<const THUAI6::Prop>> ButcherAPI::GetProps() const
{
return logic.GetProps();
}

std::vector<std::vector<THUAI6::PlaceType>> HumanAPI::GetFullMap() const
{
return logic.GetFullMap();
}

THUAI6::PlaceType HumanAPI::GetPlaceType(int32_t CellX, int32_t CellY) const
{
return logic.GetPlaceType(CellX, CellY);
}

THUAI6::PlaceType ButcherAPI::GetPlaceType(int32_t CellX, int32_t CellY) const
{
return logic.GetPlaceType(CellX, CellY);
}

std::vector<std::vector<THUAI6::PlaceType>> ButcherAPI::GetFullMap() const
{
return logic.GetFullMap();
}

void HumanAPI::StartFixMachine()
{
std::thread([&]()
{ logic.StartFixMachine(); })
.detach();
}

void HumanAPI::EndFixMachine()
{
std::thread([&]()
{ logic.EndFixMachine(); })
.detach();
}

std::future<bool> HumanAPI::GetFixStatus()
{
return std::async(std::launch::async, [&]()
{ return logic.GetFixStatus(); });
}

void HumanAPI::StartSaveHuman()
{
std::thread([&]()
{ logic.StartSaveHuman(); })
.detach();
}

void HumanAPI::EndSaveHuman()
{
std::thread([&]()
{ logic.EndSaveHuman(); })
.detach();
}

std::future<bool> HumanAPI::GetSaveStatus()
{
return std::async(std::launch::async, [&]()
{ return logic.GetSaveStatus(); });
}

std::future<bool> HumanAPI::Escape()
{
return std::async(std::launch::async, [&]()
{ return logic.Escape(); });
}

std::shared_ptr<const THUAI6::Human> HumanAPI::GetSelfInfo() const
{
return logic.HumanGetSelfInfo();
}

std::future<bool> ButcherAPI::Attack(double angleInRadian)
{
return std::async(std::launch::async, [&]()
{ return logic.Attack(angleInRadian); });
}

std::future<bool> ButcherAPI::CarryHuman()
{
return std::async(std::launch::async, [&]()
{ return logic.CarryHuman(); });
}

std::future<bool> ButcherAPI::ReleaseHuman()
{
return std::async(std::launch::async, [&]()
{ return logic.ReleaseHuman(); });
}

std::future<bool> ButcherAPI::HangHuman()
{
return std::async(std::launch::async, [&]()
{ return logic.HangHuman(); });
}

std::shared_ptr<const THUAI6::Butcher> ButcherAPI::GetSelfInfo() const
{
return logic.ButcherGetSelfInfo();
}

void HumanAPI::Play(IAI& ai)
{
ai.play(*this);


+ 122
- 4
CAPI/API/src/Communication.cpp View File

@@ -85,7 +85,7 @@ bool Communication::HaveMessage(int64_t playerID)
return false;
}

std::pair<std::string, int64_t> Communication::GetMessage(int64_t playerID)
std::pair<int64_t, std::string> Communication::GetMessage(int64_t playerID)
{
protobuf::MsgRes getMessageResult;
ClientContext context;
@@ -94,12 +94,12 @@ std::pair<std::string, int64_t> Communication::GetMessage(int64_t playerID)
if (status.ok())
{
if (getMessageResult.have_message())
return std::make_pair(getMessageResult.message_received(), getMessageResult.from_player_id());
return std::make_pair(getMessageResult.from_player_id(), getMessageResult.message_received());
else
return std::make_pair("", -1);
return std::make_pair(-1, "");
}
else
return std::make_pair("", -1);
return std::make_pair(-1, "");
}

bool Communication::Escape(int64_t playerID)
@@ -114,6 +114,124 @@ bool Communication::Escape(int64_t playerID)
return false;
}

void Communication::FixMachine(int64_t playerID)
{
protobuf::BoolRes fixMachineResult;
auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
ClientContext context;
while (isFixing)
{
auto fixStream = THUAI6Stub->FixMachine(&context);
fixStream->Write(request);
fixStream->Read(&fixMachineResult);
if (!fixMachineResult.act_success())
{
isFixing = false;
break;
}
std::this_thread::sleep_for(std::chrono::milliseconds(10)); // 防止巨量发信
}
}

void Communication::StartFixMachine(int64_t playerID)
{
isFixing = true;
FixMachine(playerID);
}

void Communication::EndFixMachine()
{
isFixing = false;
}

bool Communication::GetFixStatus()
{
return isFixing;
}

void Communication::SaveHuman(int64_t playerID)
{
protobuf::BoolRes saveHumanResult;
auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
ClientContext context;
while (isSaving)
{
auto saveStream = THUAI6Stub->SaveHuman(&context);
saveStream->Write(request);
saveStream->Read(&saveHumanResult);
if (!saveHumanResult.act_success())
{
isSaving = false;
break;
}
std::this_thread::sleep_for(std::chrono::milliseconds(10)); // 防止巨量发信
}
}

void Communication::StartSaveHuman(int64_t playerID)
{
isSaving = true;
SaveHuman(playerID);
}

void Communication::EndSaveHuman()
{
isSaving = false;
}

bool Communication::GetSaveStatus()
{
return isSaving;
}

bool Communication::Attack(double angle, int64_t playerID)
{
protobuf::BoolRes attackResult;
ClientContext context;
auto request = THUAI62Proto::THUAI62ProtobufAttack(angle, playerID);
auto status = THUAI6Stub->Attack(&context, request, &attackResult);
if (status.ok())
return attackResult.act_success();
else
return false;
}

bool Communication::CarryHuman(int64_t playerID)
{
protobuf::BoolRes carryHumanResult;
ClientContext context;
auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
auto status = THUAI6Stub->CarryHuman(&context, request, &carryHumanResult);
if (status.ok())
return carryHumanResult.act_success();
else
return false;
}

bool Communication::ReleaseHuman(int64_t playerID)
{
protobuf::BoolRes releaseHumanResult;
ClientContext context;
auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
auto status = THUAI6Stub->ReleaseHuman(&context, request, &releaseHumanResult);
if (status.ok())
return releaseHumanResult.act_success();
else
return false;
}

bool Communication::HangHuman(int64_t playerID)
{
protobuf::BoolRes hangHumanResult;
ClientContext context;
auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
auto status = THUAI6Stub->HangHuman(&context, request, &hangHumanResult);
if (status.ok())
return hangHumanResult.act_success();
else
return false;
}

bool Communication::TryConnection(int64_t playerID)
{
protobuf::BoolRes reply;


+ 57
- 84
CAPI/API/src/logic.cpp View File

@@ -62,121 +62,102 @@ std::vector<std::vector<THUAI6::PlaceType>> Logic::GetFullMap() const
return currentState->gamemap;
}

THUAI6::PlaceType Logic::GetPlaceType(int32_t CellX, int32_t CellY) const
{
std::lock_guard<std::mutex> lock(mtxState);
return currentState->gamemap[CellX][CellY];
}

bool Logic::Move(int64_t time, double angle)
{
// protobuf::MoveRes moveResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufMove(time, angle, playerID);
// auto status = THUAI6Stub->Move(&context, request, &moveResult);
// if (status.ok())
// return moveResult.act_success();
// else
// return false;
return pComm->Move(time, angle, playerID);
}

bool Logic::PickProp(THUAI6::PropType prop)
{
// protobuf::BoolRes pickPropResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufPick(prop, playerID);
// auto status = THUAI6Stub->PickProp(&context, request, &pickPropResult);
// if (status.ok())
// return pickPropResult.act_success();
// else
// return false;

return pComm->PickProp(prop, playerID);
}

bool Logic::UseProp()
{
// protobuf::BoolRes usePropResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
// auto status = THUAI6Stub->UseProp(&context, request, &usePropResult);
// if (status.ok())
// return usePropResult.act_success();
// else
// return false;
return pComm->UseProp(playerID);
}

bool Logic::UseSkill()
{
// protobuf::BoolRes useSkillResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
// auto status = THUAI6Stub->UseSkill(&context, request, &useSkillResult);
// if (status.ok())
// return useSkillResult.act_success();
// else
// return false;

return pComm->UseSkill(playerID);
}

bool Logic::SendMessage(int64_t toID, std::string message)
{
// protobuf::BoolRes sendMessageResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufSend(message, toID, playerID);
// auto status = THUAI6Stub->SendMessage(&context, request, &sendMessageResult);
// if (status.ok())
// return sendMessageResult.act_success();
// else
// return false;

return pComm->SendMessage(toID, message, playerID);
}

bool Logic::HaveMessage()
{
// protobuf::BoolRes haveMessageResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
// auto status = THUAI6Stub->HaveMessage(&context, request, &haveMessageResult);
// if (status.ok())
// return haveMessageResult.act_success();
// else
// return false;

return pComm->HaveMessage(playerID);
}

std::pair<std::string, int64_t> Logic::GetMessage()
std::pair<int64_t, std::string> Logic::GetMessage()
{
// protobuf::MsgRes getMessageResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
// auto status = THUAI6Stub->GetMessage(&context, request, &getMessageResult);
// if (status.ok())
// {
// if (getMessageResult.have_message())
// return std::make_pair(getMessageResult.message_received(), getMessageResult.from_player_id());
// else
// return std::make_pair("", -1);
// }
// else
// return std::make_pair("", -1);

return pComm->GetMessage(playerID);
}

bool Logic::Escape()
{
// protobuf::BoolRes escapeResult;
// ClientContext context;
// auto request = THUAI62Proto::THUAI62ProtobufID(playerID);
// auto status = THUAI6Stub->Escape(&context, request, &escapeResult);
// if (status.ok())
// return escapeResult.act_success();
// else
// return false;

return pComm->Escape(playerID);
}

void Logic::StartFixMachine()
{
pComm->StartFixMachine(playerID);
}

void Logic::EndFixMachine()
{
pComm->EndFixMachine();
}

bool Logic::GetFixStatus()
{
return pComm->GetFixStatus();
}

void Logic::StartSaveHuman()
{
pComm->StartSaveHuman(playerID);
}

void Logic::EndSaveHuman()
{
pComm->EndSaveHuman();
}

bool Logic::GetSaveStatus()
{
return pComm->GetSaveStatus();
}

bool Logic::Attack(double angle)
{
return pComm->Attack(angle, playerID);
}

bool Logic::CarryHuman()
{
return pComm->CarryHuman(playerID);
}

bool Logic::ReleaseHuman()
{
return pComm->ReleaseHuman(playerID);
}

bool Logic::HangHuman()
{
return pComm->HangHuman(playerID);
}

void Logic::ProcessMessage()
{
auto messageThread = [&]()
@@ -268,14 +249,6 @@ void Logic::PlayerWrapper(std::function<void()> player)

bool Logic::TryConnection()
{
// IDMsg request = THUAI62Proto::THUAI62ProtobufID(playerID);
// BoolRes reply;
// ClientContext context;
// auto status = THUAI6Stub->TryConnection(&context, request, &reply);
// if (status.ok())
// return true;
// else
// return false;
return pComm->TryConnection(playerID);
}



Loading…
Cancel
Save