Added structure handling in engine as well.

This commit is contained in:
douwe
2025-08-22 01:13:09 +02:00
parent 0381ea6873
commit cd1464cc94
8 changed files with 53 additions and 20 deletions

View File

@@ -103,6 +103,11 @@
"__sso_allocator": "cpp",
"__std_stream": "cpp",
"__threading_support": "cpp",
"__tuple": "cpp"
"__tuple": "cpp",
"csignal": "cpp",
"coroutine": "cpp",
"source_location": "cpp",
"stdfloat": "cpp",
"typeindex": "cpp"
}
}

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -7,7 +7,10 @@
#include <Screeps/Creep.hpp>
#include "Constants.hpp"
#include "Creeps/Creep.hpp"
#include "Creeps/Harvester.hpp"
#include "Structures/Structure.hpp"
#include "Structures/Spawn.hpp"
namespace DouwcoHivemind
{
@@ -18,19 +21,23 @@ namespace DouwcoHivemind
{
private:
std::vector<std::unique_ptr<Creep>> creeps;
// std::vector<std::unique_ptr<Structure>> structure;
std::vector<std::unique_ptr<Structure>> structures;
public:
Engine()
{
ReadOutCreeps();
ReadOutStructures();
}
~Engine() {}
void loop() {
for(auto &creep : creeps){
void loop()
{
for (auto &creep : creeps)
creep->loop();
}
for (auto &structure : structures)
structure->loop();
}
private:
@@ -52,6 +59,15 @@ namespace DouwcoHivemind
}
}
}
void ReadOutStructures()
{
auto spawns = Screeps::Game.spawns();
for (auto &spawn : spawns)
{
structures.push_back(std::make_unique<Spawn>(spawn.second));
}
}
};
}

View File

@@ -3,17 +3,21 @@
#include <Screeps/StructureSpawn.hpp>
#include "Structures/Structure.hpp"
namespace DouwcoHivemind
{
class Spawn
class Spawn : public Structure
{
private:
Screeps::StructureSpawn *structure;
Screeps::StructureSpawn spawn;
public:
Spawn(Screeps::StructureSpawn *structure_pntr) { structure = structure_pntr; }
Spawn(Screeps::StructureSpawn spwn) : spawn(spwn),
Structure() {}
~Spawn() {}
void process();
void loop() override;
};
}

View File

@@ -0,0 +1,15 @@
#ifndef DOUWCO_HIVEMIND_STRUCTURE_HPP
#define DOUWCO_HIVEMIND_STRUCTURE_HPP
#include <Screeps/Structure.hpp>
namespace DouwcoHivemind
{
class Structure
{
public:
virtual void loop(){}
};
}
#endif // DOUWCO_HIVEMIND_STRUCTURE_HPP

View File

@@ -15,13 +15,6 @@ extern "C" void loop()
{
Screeps::Context::update();
// Structures
for (auto &spawn_entry : Screeps::Game.spawns())
{
auto spawn = DouwcoHivemind::Spawn(&spawn_entry.second);
spawn.process();
}
JS::console.log(std::string("\n\n\n\n\n\n\n\n\n"));
JS::console.log(std::string("Processing tick:\t") + std::to_string(Screeps::Game.time()));

View File

@@ -8,9 +8,9 @@
#include "Constants.hpp"
#include "Structures/Spawn.hpp"
void DouwcoHivemind::Spawn::process()
void DouwcoHivemind::Spawn::loop()
{
int creepcount = structure->room().find(Screeps::FIND_MY_CREEPS).size();
int creepcount = spawn.room().find(Screeps::FIND_MY_CREEPS).size();
if (creepcount > 10)
{
EM_ASM({ console.log('To much creeps in this room'); });
@@ -21,7 +21,7 @@ void DouwcoHivemind::Spawn::process()
JSON opts;
opts["memory"]["role"] = Roles::HARVESTER;
int resp = structure->spawnCreep(
int resp = spawn.spawnCreep(
{"work", "carry", "move"},
"harvester" + std::to_string(Screeps::Game.time()),
opts);