Created a base engine class and let it handle all creeps.

This commit is contained in:
douwe
2025-08-21 14:13:32 +02:00
parent c9ce09ba1a
commit 1e9e696b1e
16 changed files with 221 additions and 91 deletions

58
include/Engine.hpp Normal file
View File

@@ -0,0 +1,58 @@
#ifndef DOUWCO_HIVEMIND_ENGINE_HPP
#define DOUWCO_HIVEMIND_ENGINE_HPP
#include <vector>
#include <Screeps/JS.hpp>
#include <Screeps/Game.hpp>
#include <Screeps/Creep.hpp>
#include "Constants.hpp"
#include "Creeps/Harvester.hpp"
namespace DouwcoHivemind
{
class Creep;
class Structure;
class Engine
{
private:
std::vector<std::unique_ptr<Creep>> creeps;
// std::vector<std::unique_ptr<Structure>> structure;
public:
Engine()
{
ReadOutCreeps();
}
~Engine() {}
void loop() {
for(auto &creep : creeps){
creep->loop();
}
}
private:
void ReadOutCreeps()
{
auto src_creeps = Screeps::Game.creeps();
for (auto &creep : src_creeps)
{
Roles role = creep.second.memory()["role"];
switch (role)
{
case Roles::HARVESTER:
creeps.push_back(std::make_unique<HarvesterRole>(creep.second));
break;
case Roles::UNEMPLOYED:
default:
EM_ASM({console.log('Undefined role for creep' + $0)}, creep.first.c_str());
break;
}
}
}
};
}
#endif // DOUWCO_HIVEMIND_ENGINE_HPP