#include "library.h" namespace py = pybind11; PYBIND11_MODULE(library, m) { m.doc() = "Python API for playing Starcraft II"; define_typeenums(m); define_unit(m); define_unittype(m); define_util(m); py::class_<Coordinator>(m, "Coordinator") .def(py::init()) .def("SetParticipants", &sc2::Coordinator::SetParticipants) .def("LaunchStarcraft", &sc2::Coordinator::LaunchStarcraft) .def("StartGame", &sc2::Coordinator::StartGame) .def("Update", &sc2::Coordinator::Update); py::enum_<sc2::Race>(m, "Race") .value("Terran", sc2::Race::Terran) .value("Zerg", sc2::Race::Zerg) .value("Protoss", sc2::Race::Protoss) .value("Random", sc2::Race::Random); py::class_<sc2::Agent>(m, "Agent") .def(py::init()); // IDABot is a specialization of Agent py::class_<IDABot, PyIDABot, sc2::Agent>(m, "IDABot") .def(py::init()) .def("OnGameStart", &IDABot::OnGameStart) .def("OnStep", &IDABot::OnStep) .def("OnStep_UpdateIDABot", &IDABot::OnStep_UpdateIDABot) .def("GetAllUnits", &IDABot::GetAllUnits) .def("GetMyUnits", &IDABot::GetMyUnits); py::class_<sc2::PlayerSetup>(m, "PlayerSetup"); py::enum_<sc2::Difficulty>(m, "Difficulty") .value("VeryEasy", sc2::Difficulty::VeryEasy) .value("Easy", sc2::Difficulty::Easy) .value("Medium", sc2::Difficulty::Medium) .value("MediumHard", sc2::Difficulty::MediumHard) .value("Hard", sc2::Difficulty::Hard) .value("HardVeryHard", sc2::Difficulty::HardVeryHard) .value("VeryHard", sc2::Difficulty::VeryHard) .value("CheatVision", sc2::Difficulty::CheatVision) .value("CheatMoney", sc2::Difficulty::CheatMoney) .value("CheatInsane", sc2::Difficulty::CheatInsane); m.def("CreateParticipant", &sc2::CreateParticipant, "Create participant from agent"); m.def("CreateComputer", &sc2::CreateComputer, "Create participant from built-in Starcraft computer"); }