diff --git a/include/Screeps/Memory.hpp b/include/Screeps/Memory.hpp index 448fac9..c80b14c 100644 --- a/include/Screeps/Memory.hpp +++ b/include/Screeps/Memory.hpp @@ -3,12 +3,17 @@ #include "Object.hpp" +#include + namespace Screeps { class MemoryObject : public Object { public: MemoryObject(); + + JSON operator[](const std::string_view& key); + void set(const std::string_view& key, const JSON& value); }; extern MemoryObject Memory; diff --git a/src/Game.cpp b/src/Game.cpp index ddaddce..290f00d 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -17,7 +17,7 @@ convertObjectToMap(const JS::Value& object) { std::map map; for (const auto& pair : JS::jsObjectToMap(object)) - map.emplace(pair.first, T{pair.second}); + map.insert(std::make_pair(pair.first, T{pair.second})); return map; } @@ -107,6 +107,11 @@ int GameObject::time() const return value()["time"].as(); } +double GameObject::cpuGetUsed() +{ + return value()["cpu"].call("getUsed"); +} + int GameObject::cpuGeneratePixel() { return value()["cpu"].call("generatePixel"); diff --git a/src/Memory.cpp b/src/Memory.cpp index cfd2305..5795502 100644 --- a/src/Memory.cpp +++ b/src/Memory.cpp @@ -1,9 +1,21 @@ #include "Memory.hpp" +#include + namespace Screeps { MemoryObject Memory; MemoryObject::MemoryObject() = default; +JSON MemoryObject::operator[](const std::string_view& key) +{ + return JS::toJSON(value()[key.data()]); +} + +void MemoryObject::set(const std::string_view& key, const JSON& value) +{ + this->value().set(key.data(), JS::fromJSON(value)); +} + } // namespace Screeps