From d47489b38ebc3e7c0e0e9209b02b7cf5a70d3b20 Mon Sep 17 00:00:00 2001 From: Kirill Kirilenko Date: Tue, 19 Apr 2022 20:20:03 +0300 Subject: [PATCH] Add class StructureTerminal. --- include/Screeps/StructureTerminal.hpp | 28 +++++++++++++++++++++++++ src/RoomObject.cpp | 3 +++ src/StructureTerminal.cpp | 30 +++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 include/Screeps/StructureTerminal.hpp create mode 100644 src/StructureTerminal.cpp diff --git a/include/Screeps/StructureTerminal.hpp b/include/Screeps/StructureTerminal.hpp new file mode 100644 index 0000000..3bc69f7 --- /dev/null +++ b/include/Screeps/StructureTerminal.hpp @@ -0,0 +1,28 @@ +#ifndef SCREEPS_STRUCTURE_TERMINAL_HPP +#define SCREEPS_STRUCTURE_TERMINAL_HPP + +#include "OwnedStructure.hpp" +#include "Store.hpp" + +#include + +namespace Screeps { + +class StructureTerminal : public OwnedStructure +{ +public: + explicit StructureTerminal(JS::Value value); + + int cooldown() const; + + Store store() const; + + int send(const std::string& resourceType, + int amount, + const std::string& destination, + std::optional description = std::nullopt); +}; + +} // namespace Screeps + +#endif // SCREEPS_STRUCTURE_TERMINAL_HPP diff --git a/src/RoomObject.cpp b/src/RoomObject.cpp index 31dfcd3..1aca55b 100644 --- a/src/RoomObject.cpp +++ b/src/RoomObject.cpp @@ -19,6 +19,7 @@ #include "StructureRoad.hpp" #include "StructureSpawn.hpp" #include "StructureStorage.hpp" +#include "StructureTerminal.hpp" #include "StructureTower.hpp" #include "StructureWall.hpp" @@ -88,6 +89,8 @@ std::unique_ptr createRoomObject(JS::Value object) return std::make_unique(std::move(object)); else if (type == Screeps::STRUCTURE_EXTRACTOR) return std::make_unique(std::move(object)); + else if (type == Screeps::STRUCTURE_TERMINAL) + return std::make_unique(std::move(object)); else return nullptr; } diff --git a/src/StructureTerminal.cpp b/src/StructureTerminal.cpp new file mode 100644 index 0000000..3093f69 --- /dev/null +++ b/src/StructureTerminal.cpp @@ -0,0 +1,30 @@ +#include "StructureTerminal.hpp" + +namespace Screeps { + +StructureTerminal::StructureTerminal(JS::Value value) : OwnedStructure(std::move(value)) +{ +} + +int StructureTerminal::cooldown() const +{ + return value()["cooldown"].as(); +} + +Store StructureTerminal::store() const +{ + return Store(value()["store"]); +} + +int StructureTerminal::send(const std::string& resourceType, + int amount, + const std::string& destination, + std::optional description) +{ + if (description) + return value().call("send", resourceType, amount, destination, description); + else + return value().call("send", resourceType, amount, destination); +} + +} // namespace Screeps