|
|
@@ -20,6 +20,8 @@ |
|
|
|
|
|
|
|
|
const constexpr int num_of_grid_per_cell = 1000; |
|
|
const constexpr int num_of_grid_per_cell = 1000; |
|
|
|
|
|
|
|
|
|
|
|
class IAI; |
|
|
|
|
|
|
|
|
class ILogic |
|
|
class ILogic |
|
|
{ |
|
|
{ |
|
|
// API中依赖Logic的部分 |
|
|
// API中依赖Logic的部分 |
|
|
@@ -86,7 +88,7 @@ public: |
|
|
|
|
|
|
|
|
// 获取视野内可见的人类/屠夫的信息 |
|
|
// 获取视野内可见的人类/屠夫的信息 |
|
|
[[nodiscard]] virtual std::vector<std::shared_ptr<const THUAI6::Human>> GetHuman() const = 0; |
|
|
[[nodiscard]] virtual std::vector<std::shared_ptr<const THUAI6::Human>> GetHuman() const = 0; |
|
|
[[nodiscard]] virtual std::vector<std::shared_ptr<const THUAI6::Buthcer>> GetButcher() const = 0; |
|
|
|
|
|
|
|
|
[[nodiscard]] virtual std::vector<std::shared_ptr<const THUAI6::Butcher>> GetButcher() const = 0; |
|
|
|
|
|
|
|
|
// 获取视野内可见的道具信息 |
|
|
// 获取视野内可见的道具信息 |
|
|
[[nodiscard]] virtual std::vector<std::shared_ptr<const THUAI6::Prop>> GetProps() const = 0; |
|
|
[[nodiscard]] virtual std::vector<std::shared_ptr<const THUAI6::Prop>> GetProps() const = 0; |
|
|
@@ -101,6 +103,24 @@ public: |
|
|
// 获取游戏目前所进行的帧数 |
|
|
// 获取游戏目前所进行的帧数 |
|
|
[[nodiscard]] virtual int GetFrameCount() const = 0; |
|
|
[[nodiscard]] virtual int GetFrameCount() const = 0; |
|
|
|
|
|
|
|
|
|
|
|
/*****选手可能用的辅助函数*****/ |
|
|
|
|
|
|
|
|
|
|
|
// 获取指定格子中心的坐标 |
|
|
|
|
|
[[nodiscard]] static inline int CellToGrid(int cell) noexcept |
|
|
|
|
|
{ |
|
|
|
|
|
return cell * num_of_grid_per_cell + num_of_grid_per_cell / 2; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 获取指定坐标点所位于的格子的 X 序号 |
|
|
|
|
|
[[nodiscard]] static inline int GridToCell(int grid) noexcept |
|
|
|
|
|
{ |
|
|
|
|
|
return grid / num_of_grid_per_cell; |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class IHumanAPI : public IAPI |
|
|
|
|
|
{ |
|
|
|
|
|
public: |
|
|
/*****人类阵营的特定函数*****/ |
|
|
/*****人类阵营的特定函数*****/ |
|
|
|
|
|
|
|
|
virtual std::future<bool> StartFixMachine() = 0; |
|
|
virtual std::future<bool> StartFixMachine() = 0; |
|
|
@@ -110,138 +130,453 @@ public: |
|
|
virtual std::future<bool> EndSaveHuman() = 0; |
|
|
virtual std::future<bool> EndSaveHuman() = 0; |
|
|
virtual std::future<bool> GetSaveStatus() = 0; |
|
|
virtual std::future<bool> GetSaveStatus() = 0; |
|
|
virtual std::future<bool> Escape() = 0; |
|
|
virtual std::future<bool> Escape() = 0; |
|
|
[[nodiscard]] virtual std::shared_ptr<const THUAI6::Human> HumanGetSelfInfo() const = 0; |
|
|
|
|
|
|
|
|
[[nodiscard]] virtual std::shared_ptr<const THUAI6::Human> GetSelfInfo() const = 0; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class IButcherAPI : public IAPI |
|
|
|
|
|
{ |
|
|
|
|
|
public: |
|
|
/*****屠夫阵营的特定函数*****/ |
|
|
/*****屠夫阵营的特定函数*****/ |
|
|
|
|
|
|
|
|
virtual std::future<bool> Attack(double angleInRadian) = 0; |
|
|
virtual std::future<bool> Attack(double angleInRadian) = 0; |
|
|
virtual std::future<bool> CarryHuman() = 0; |
|
|
virtual std::future<bool> CarryHuman() = 0; |
|
|
virtual std::future<bool> ReleaseHuman() = 0; |
|
|
virtual std::future<bool> ReleaseHuman() = 0; |
|
|
virtual std::future<bool> HangHuman() = 0; |
|
|
virtual std::future<bool> HangHuman() = 0; |
|
|
[[nodiscard]] virtual std::shared_ptr<const THUAI6::Buthcer> ButcherGetSelfInfo() const = 0; |
|
|
|
|
|
|
|
|
[[nodiscard]] virtual std::shared_ptr<const THUAI6::Butcher> GetSelfInfo() const = 0; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
/*****选手可能用的辅助函数*****/ |
|
|
|
|
|
|
|
|
class IGameTimer |
|
|
|
|
|
{ |
|
|
|
|
|
public: |
|
|
|
|
|
virtual void StartTimer() = 0; |
|
|
|
|
|
virtual void EndTimer() = 0; |
|
|
|
|
|
virtual void Play(IAI& ai) = 0; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
// 获取指定格子中心的坐标 |
|
|
|
|
|
[[nodiscard]] static inline int CellToGrid(int cell) noexcept |
|
|
|
|
|
|
|
|
class HumanAPI : public IHumanAPI, public IGameTimer |
|
|
|
|
|
{ |
|
|
|
|
|
public: |
|
|
|
|
|
HumanAPI(ILogic& logic) : |
|
|
|
|
|
logic(logic) |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void StartTimer() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void EndTimer() override |
|
|
{ |
|
|
{ |
|
|
return cell * num_of_grid_per_cell + num_of_grid_per_cell / 2; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
void Play(IAI& ai) override; |
|
|
|
|
|
|
|
|
// 获取指定坐标点所位于的格子的 X 序号 |
|
|
|
|
|
[[nodiscard]] static inline int GridToCell(int grid) noexcept |
|
|
|
|
|
|
|
|
std::future<bool> Move(uint32_t timeInMilliseconds, double angleInRadian) override |
|
|
{ |
|
|
{ |
|
|
return grid / num_of_grid_per_cell; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
IAPI(ILogic& logic) : |
|
|
|
|
|
logic(logic) |
|
|
|
|
|
|
|
|
[[nodiscard]] int GetFrameCount() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> MoveRight(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveUp(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveLeft(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveDown(uint32_t timeInMilliseconds) override |
|
|
{ |
|
|
{ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
virtual ~IAPI() |
|
|
|
|
|
|
|
|
std::future<bool> PickProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseSkill() override |
|
|
{ |
|
|
{ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
protected: |
|
|
|
|
|
|
|
|
std::future<bool> SendMessage(int, std::string) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<bool> HaveMessage() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<std::pair<int, 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::Prop>> GetProps() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] std::array<std::array<THUAI6::PlaceType, 50>, 50> 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> 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 |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
ILogic& logic; |
|
|
ILogic& logic; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
// 给Logic使用的IAPI接口,为了保证面向对象的设计模式 |
|
|
|
|
|
class IAPIForLogic : public IAPI |
|
|
|
|
|
|
|
|
class ButcherAPI : public IButcherAPI, public IGameTimer |
|
|
{ |
|
|
{ |
|
|
public: |
|
|
public: |
|
|
IAPIForLogic(ILogic& logic) : |
|
|
|
|
|
IAPI(logic) |
|
|
|
|
|
|
|
|
ButcherAPI(ILogic& logic) : |
|
|
|
|
|
logic(logic) |
|
|
{ |
|
|
{ |
|
|
} |
|
|
} |
|
|
virtual void StartTimer() = 0; |
|
|
|
|
|
virtual void EndTimer() = 0; |
|
|
|
|
|
|
|
|
void StartTimer() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void EndTimer() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void Play(IAI& ai) override; |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> Move(uint32_t timeInMilliseconds, double angleInRadian) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] int GetFrameCount() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> MoveRight(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveUp(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveLeft(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveDown(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> PickProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseSkill() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> SendMessage(int, std::string) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<bool> HaveMessage() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<std::pair<int, 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::Prop>> GetProps() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] std::array<std::array<THUAI6::PlaceType, 50>, 50> 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 |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
ILogic& logic; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
class HumanAPI : public IAPIForLogic |
|
|
|
|
|
|
|
|
class HumanDebugAPI : public IHumanAPI, public IGameTimer |
|
|
{ |
|
|
{ |
|
|
public: |
|
|
public: |
|
|
HumanAPI(ILogic& logic) : |
|
|
|
|
|
IAPIForLogic(logic) |
|
|
|
|
|
|
|
|
HumanDebugAPI(ILogic& logic) : |
|
|
|
|
|
logic(logic) |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void StartTimer() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void EndTimer() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void Play(IAI& ai) override; |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> Move(uint32_t timeInMilliseconds, double angleInRadian) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] int GetFrameCount() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> MoveRight(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveUp(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveLeft(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveDown(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> PickProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseSkill() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> SendMessage(int, std::string) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<bool> HaveMessage() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<std::pair<int, 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::Prop>> GetProps() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] std::array<std::array<THUAI6::PlaceType, 50>, 50> 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> 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 |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
ILogic& logic; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
class ButcherAPI : public IAPIForLogic |
|
|
|
|
|
|
|
|
class ButcherDebugAPI : public IButcherAPI, public IGameTimer |
|
|
{ |
|
|
{ |
|
|
public: |
|
|
public: |
|
|
ButcherAPI(ILogic& logic) : |
|
|
|
|
|
IAPIForLogic(logic) |
|
|
|
|
|
|
|
|
ButcherDebugAPI(ILogic& logic) : |
|
|
|
|
|
logic(logic) |
|
|
{ |
|
|
{ |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
|
|
|
void StartTimer() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void EndTimer() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
void Play(IAI& ai) override; |
|
|
|
|
|
|
|
|
// class IHumanAPI : public IAPIForLogic |
|
|
|
|
|
// { |
|
|
|
|
|
// public: |
|
|
|
|
|
// IHumanAPI(ILogic& logic) : |
|
|
|
|
|
// IAPIForLogic(logic) |
|
|
|
|
|
// { |
|
|
|
|
|
// } |
|
|
|
|
|
// virtual std::future<bool> StartFixMachine() = 0; |
|
|
|
|
|
// virtual std::future<bool> EndFixMachine() = 0; |
|
|
|
|
|
// virtual std::future<bool> GetFixStatus() = 0; |
|
|
|
|
|
// virtual std::future<bool> StartSaveHuman() = 0; |
|
|
|
|
|
// virtual std::future<bool> 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; |
|
|
|
|
|
// }; |
|
|
|
|
|
|
|
|
|
|
|
// class IButcherAPI : public IAPIForLogic |
|
|
|
|
|
// { |
|
|
|
|
|
// public: |
|
|
|
|
|
// IButcherAPI(Logic& logic) : |
|
|
|
|
|
// IAPIForLogic(logic) |
|
|
|
|
|
// { |
|
|
|
|
|
// } |
|
|
|
|
|
// virtual std::future<bool> Attack(double angleInRadian) = 0; |
|
|
|
|
|
// virtual std::future<bool> CarryHuman() = 0; |
|
|
|
|
|
// virtual std::future<bool> ReleaseHuman() = 0; |
|
|
|
|
|
// virtual std::future<bool> HangHuman() = 0; |
|
|
|
|
|
// [[nodiscard]] virtual std::shared_ptr<const THUAI6::Buthcer> GetSelfInfo() const = 0; |
|
|
|
|
|
// }; |
|
|
|
|
|
|
|
|
|
|
|
// class HumanAPI : public IHumanAPI |
|
|
|
|
|
// { |
|
|
|
|
|
// public: |
|
|
|
|
|
// HumanAPI(Logic& logic) : |
|
|
|
|
|
// IHumanAPI(logic) |
|
|
|
|
|
// { |
|
|
|
|
|
// } |
|
|
|
|
|
// }; |
|
|
|
|
|
|
|
|
|
|
|
// class DebugHumanAPI : public IHumanAPI |
|
|
|
|
|
// { |
|
|
|
|
|
// public: |
|
|
|
|
|
// DebugHumanAPI(Logic& logic) : |
|
|
|
|
|
// IHumanAPI(logic) |
|
|
|
|
|
// { |
|
|
|
|
|
// } |
|
|
|
|
|
// }; |
|
|
|
|
|
|
|
|
|
|
|
// class ButhcerAPI : public IButcherAPI |
|
|
|
|
|
// { |
|
|
|
|
|
// public: |
|
|
|
|
|
// ButhcerAPI(Logic& logic) : |
|
|
|
|
|
// IButcherAPI(logic) |
|
|
|
|
|
// { |
|
|
|
|
|
// } |
|
|
|
|
|
// }; |
|
|
|
|
|
|
|
|
|
|
|
// class DebugButcherAPI : public IButcherAPI |
|
|
|
|
|
// { |
|
|
|
|
|
// public: |
|
|
|
|
|
// DebugButcherAPI(Logic& logic) : |
|
|
|
|
|
// IButcherAPI(logic) |
|
|
|
|
|
// { |
|
|
|
|
|
// } |
|
|
|
|
|
// }; |
|
|
|
|
|
|
|
|
std::future<bool> Move(uint32_t timeInMilliseconds, double angleInRadian) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] int GetFrameCount() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> MoveRight(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveUp(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveLeft(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> MoveDown(uint32_t timeInMilliseconds) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> PickProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseProp() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
std::future<bool> UseSkill() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::future<bool> SendMessage(int, std::string) override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<bool> HaveMessage() override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
[[nodiscard]] std::future<std::pair<int, 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::Prop>> GetProps() const override |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[[nodiscard]] std::array<std::array<THUAI6::PlaceType, 50>, 50> 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 |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
ILogic& logic; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
#endif |
|
|
#endif |