#include #include "AI.h" #include "API.h" #define PI 3.14159265358979323846 int HumanAPI::GetFrameCount() const { return logic.GetCounter(); } int ButcherAPI::GetFrameCount() const { return logic.GetCounter(); } std::future HumanAPI::Move(int64_t timeInMilliseconds, double angleInRadian) { return std::async(std::launch::async, [&]() { return logic.Move(timeInMilliseconds, angleInRadian); }); } std::future HumanAPI::MoveDown(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, 0); } std::future HumanAPI::MoveRight(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, PI * 0.5); } std::future HumanAPI::MoveUp(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, PI); } std::future HumanAPI::MoveLeft(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, PI * 1.5); } std::future ButcherAPI::Move(int64_t timeInMilliseconds, double angleInRadian) { return std::async(std::launch::async, [&]() { return logic.Move(timeInMilliseconds, angleInRadian); }); } std::future ButcherAPI::MoveDown(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, 0); } std::future ButcherAPI::MoveRight(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, PI * 0.5); } std::future ButcherAPI::MoveUp(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, PI); } std::future ButcherAPI::MoveLeft(int64_t timeInMilliseconds) { return Move(timeInMilliseconds, PI * 1.5); } std::future HumanAPI::PickProp(THUAI6::PropType prop) { return std::async(std::launch::async, [&]() { return logic.PickProp(prop); }); } std::future HumanAPI::UseProp() { return std::async(std::launch::async, [&]() { return logic.UseProp(); }); } std::future ButcherAPI::PickProp(THUAI6::PropType prop) { return std::async(std::launch::async, [&]() { return logic.PickProp(prop); }); } std::future ButcherAPI::UseProp() { return std::async(std::launch::async, [&]() { return logic.UseProp(); }); } std::future HumanAPI::UseSkill() { return std::async(std::launch::async, [&]() { return logic.UseSkill(); }); } std::future ButcherAPI::UseSkill() { return std::async(std::launch::async, [&]() { return logic.UseSkill(); }); } std::future HumanAPI::SendMessage(int64_t toID, std::string message) { return std::async(std::launch::async, [&]() { return logic.SendMessage(toID, message); }); } std::future ButcherAPI::SendMessage(int64_t toID, std::string message) { return std::async(std::launch::async, [&]() { return logic.SendMessage(toID, message); }); } std::future HumanAPI::HaveMessage() { return std::async(std::launch::async, [&]() { return logic.HaveMessage(); }); } std::future ButcherAPI::HaveMessage() { return std::async(std::launch::async, [&]() { return logic.HaveMessage(); }); } std::future>> HumanAPI::GetMessage() { return std::async(std::launch::async, [&]() { return logic.GetMessage(); }); } std::future>> ButcherAPI::GetMessage() { return std::async(std::launch::async, [&]() { return logic.GetMessage(); }); } std::future HumanAPI::Wait() { if (logic.GetCounter() == -1) return std::async(std::launch::async, [&]() { return false; }); else return std::async(std::launch::async, [&]() { return logic.WaitThread(); }); } std::future ButcherAPI::Wait() { if (logic.GetCounter() == -1) return std::async(std::launch::async, [&]() { return false; }); else return std::async(std::launch::async, [&]() { return logic.WaitThread(); }); } std::vector> HumanAPI::GetButchers() const { return logic.GetButchers(); } std::vector> HumanAPI::GetHumans() const { return logic.GetHumans(); } std::vector> ButcherAPI::GetButchers() const { return logic.GetButchers(); } std::vector> ButcherAPI::GetHumans() const { return logic.GetHumans(); } std::vector> HumanAPI::GetProps() const { return logic.GetProps(); } std::vector> ButcherAPI::GetProps() const { return logic.GetProps(); } std::vector> 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> ButcherAPI::GetFullMap() const { return logic.GetFullMap(); } const std::vector HumanAPI::GetPlayerGUIDs() const { return logic.GetPlayerGUIDs(); } const std::vector ButcherAPI::GetPlayerGUIDs() const { return logic.GetPlayerGUIDs(); } std::future HumanAPI::StartFixMachine() { return std::async(std::launch::async, [&]() { return logic.StartFixMachine(); }); } std::future HumanAPI::EndFixMachine() { return std::async(std::launch::async, [&]() { return logic.EndFixMachine(); }); } std::future HumanAPI::StartSaveHuman() { return std::async(std::launch::async, [&]() { return logic.StartSaveHuman(); }); } std::future HumanAPI::EndSaveHuman() { return std::async(std::launch::async, [&]() { return logic.EndSaveHuman(); }); } std::future HumanAPI::Escape() { return std::async(std::launch::async, [&]() { return logic.Escape(); }); } std::shared_ptr HumanAPI::GetSelfInfo() const { return logic.HumanGetSelfInfo(); } std::future ButcherAPI::Attack(double angleInRadian) { return std::async(std::launch::async, [&]() { return logic.Attack(angleInRadian); }); } std::future ButcherAPI::CarryHuman() { return std::async(std::launch::async, [&]() { return logic.CarryHuman(); }); } std::future ButcherAPI::ReleaseHuman() { return std::async(std::launch::async, [&]() { return logic.ReleaseHuman(); }); } std::future ButcherAPI::HangHuman() { return std::async(std::launch::async, [&]() { return logic.HangHuman(); }); } std::shared_ptr ButcherAPI::GetSelfInfo() const { return logic.ButcherGetSelfInfo(); } void HumanAPI::Play(IAI& ai) { ai.play(*this); } void ButcherAPI::Play(IAI& ai) { ai.play(*this); }