#ifndef DOUWCO_HIVEMIND_CREEPBASE_HPP #define DOUWCO_HIVEMIND_CREEPBASE_HPP #include namespace Screeps{ class RoomPosition; class RoomObject; class PathStep; } namespace DouwcoHivemind { enum CreepRole { UNEMPLOYED, SUPPLIER, UPGRADER, BUILDER, MAINTAINER }; class CreepBase { public: CreepRole role; std::string target_id; protected: Screeps::Creep creep; JSON memory; public: CreepBase(Screeps::Creep crp); virtual ~CreepBase(); virtual void loop() {} bool isNearTo(const Screeps::RoomPosition &pos, int dist); protected: void moveToTarget(int dist = 1); std::unique_ptr getRoomObjectTarget(); }; } #endif // DOUWCO_HIVEMIND_CREEPBASE_HPP