37 lines
767 B
C++
37 lines
767 B
C++
#ifndef DOUWCO_HIVEMIND_CREEPBASE_HPP
|
|
#define DOUWCO_HIVEMIND_CREEPBASE_HPP
|
|
|
|
#include <Screeps/Creep.hpp>
|
|
|
|
namespace Screeps {
|
|
class RoomPosition;
|
|
class RoomObject;
|
|
class PathStep;
|
|
} // namespace Screeps
|
|
|
|
namespace DouwcoHivemind {
|
|
enum CreepRole { UNEMPLOYED, SUPPLIER, UPGRADER, BUILDER, MAINTAINER, MINER };
|
|
|
|
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<Screeps::RoomObject> getRoomObjectTarget();
|
|
};
|
|
} // namespace DouwcoHivemind
|
|
|
|
#endif // DOUWCO_HIVEMIND_CREEPBASE_HPP
|