#include "RoomPosition.hpp" #include "RoomObject.hpp" #include namespace Screeps { RoomPosition::RoomPosition(JS::Value value) : Object(std::move(value)) { } RoomPosition::RoomPosition(const std::string& roomName, int x, int y) : Object(JS::getGlobal("RoomPosition").new_(x, y, roomName)) { } std::string RoomPosition::roomName() const { return value()["roomName"].as(); } void RoomPosition::setRoomName(const std::string& name) { value().set("roomName", name); } int RoomPosition::x() const { return value()["x"].as(); } void RoomPosition::setX(int x) { value().set("x", x); } int RoomPosition::y() const { return value()["y"].as(); } void RoomPosition::setY(int y) { value().set("y", y); } std::unique_ptr RoomPosition::findClosestByPath(const std::vector>& objects) { std::vector values; values.reserve(objects.size()); for (const auto& object : objects) values.push_back(object->value()); auto object = findClosestByPath(values); if (object) return createRoomObject(std::move(*object)); else return nullptr; } std::optional RoomPosition::findClosestByPath(const std::vector& objects) { auto array = JS::vectorToJSArray(objects); auto object = value().call("findClosestByPath", array); if (object.isUndefined()) return std::nullopt; else return object; } } // namespace Screeps