Miner not working properly but implementation is close.
This commit is contained in:
@@ -4,70 +4,76 @@
|
||||
#include "Creeps/CreepBase.hpp"
|
||||
#include "Structures/Spawn.hpp"
|
||||
|
||||
void DouwcoHivemind::Spawn::loop()
|
||||
{
|
||||
// Only run every 50 ticks
|
||||
if (Screeps::Game.time() % 50 != 0)
|
||||
return;
|
||||
void DouwcoHivemind::Spawn::loop() {
|
||||
// Only run every 50 ticks
|
||||
if (Screeps::Game.time() % 50 != 0)
|
||||
return;
|
||||
|
||||
int energyAvailable = spawn.room().energyAvailable();
|
||||
int energyCapacityAvailable = spawn.room().energyCapacityAvailable();
|
||||
|
||||
int required_upgraders = 1;
|
||||
int required_suppliers = 1;
|
||||
int required_maintainers = spawn.room().find(Screeps::FIND_STRUCTURES).size() <= 2 ? 0 : 1;;
|
||||
int required_builders = spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0 : 1;
|
||||
for (auto &creep : Screeps::Game.creeps())
|
||||
{
|
||||
CreepRole role = creep.second.memory()["role"];
|
||||
int energyAvailable = spawn.room().energyAvailable();
|
||||
int energyCapacityAvailable = spawn.room().energyCapacityAvailable();
|
||||
|
||||
if (role == CreepRole::SUPPLIER)
|
||||
required_suppliers--;
|
||||
else if (role == CreepRole::UPGRADER)
|
||||
required_upgraders--;
|
||||
else if (role == CreepRole::MAINTAINER)
|
||||
required_maintainers--;
|
||||
else if (role == CreepRole::BUILDER)
|
||||
required_builders--;
|
||||
}
|
||||
int required_upgraders = 1;
|
||||
int required_suppliers = 1;
|
||||
int required_maintainers =
|
||||
spawn.room().find(Screeps::FIND_STRUCTURES).size() <= 2 ? 0 : 1;
|
||||
;
|
||||
int required_builders =
|
||||
spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0
|
||||
: 1;
|
||||
int required_miners = 1; //spawn.room().memory()["sourceContainers"].size();
|
||||
for (auto &creep : Screeps::Game.creeps()) {
|
||||
CreepRole role = creep.second.memory()["role"];
|
||||
|
||||
// if (energyAvailable < energyCapacityAvailable && 3 < Screeps::Game.creeps().size())
|
||||
// return;
|
||||
std::string name;
|
||||
JSON opts;
|
||||
if (required_suppliers > 0)
|
||||
{
|
||||
opts["memory"]["role"] = CreepRole::SUPPLIER;
|
||||
name = "Supplier: ";
|
||||
}
|
||||
else if (required_upgraders > 0)
|
||||
{
|
||||
opts["memory"]["role"] = CreepRole::UPGRADER;
|
||||
name = "Upgrader: ";
|
||||
}
|
||||
else if (required_builders > 0)
|
||||
{
|
||||
opts["memory"]["role"] = CreepRole::BUILDER;
|
||||
name = "Builder: ";
|
||||
}
|
||||
else if (required_maintainers > 0)
|
||||
{
|
||||
opts["memory"]["role"] = CreepRole::MAINTAINER;
|
||||
name = "Maintainer: ";
|
||||
}
|
||||
else
|
||||
return;
|
||||
if (role == CreepRole::SUPPLIER)
|
||||
required_suppliers--;
|
||||
else if (role == CreepRole::UPGRADER)
|
||||
required_upgraders--;
|
||||
else if (role == CreepRole::MAINTAINER)
|
||||
required_maintainers--;
|
||||
else if (role == CreepRole::BUILDER)
|
||||
required_builders--;
|
||||
else if (role == CreepRole::MINER)
|
||||
required_miners--;
|
||||
}
|
||||
|
||||
std::vector<std::string> body;
|
||||
for (int i = 0; i < energyAvailable / 200; i++)
|
||||
{
|
||||
body.push_back("work");
|
||||
body.push_back("carry");
|
||||
body.push_back("move");
|
||||
}
|
||||
// if (energyAvailable < energyCapacityAvailable && 3 <
|
||||
// Screeps::Game.creeps().size())
|
||||
// return;
|
||||
std::string name;
|
||||
JSON opts;
|
||||
if (required_upgraders > 0) {
|
||||
opts["memory"]["role"] = CreepRole::UPGRADER;
|
||||
name = "Upgrader: ";
|
||||
} else if (required_miners > 0) {
|
||||
opts["memory"]["role"] = CreepRole::MINER;
|
||||
opts["memory"]["target_id"] =
|
||||
spawn.room().memory()["sourceContainers"][0]; // make logic for more
|
||||
name = "Miner: ";
|
||||
} else if (required_suppliers > 0) {
|
||||
opts["memory"]["role"] = CreepRole::SUPPLIER;
|
||||
name = "Supplier: ";
|
||||
} else if (required_builders > 0) {
|
||||
opts["memory"]["role"] = CreepRole::BUILDER;
|
||||
name = "Builder: ";
|
||||
} else if (required_maintainers > 0) {
|
||||
opts["memory"]["role"] = CreepRole::MAINTAINER;
|
||||
name = "Maintainer: ";
|
||||
} else
|
||||
return;
|
||||
|
||||
spawn.spawnCreep(
|
||||
body,
|
||||
name + std::to_string(Screeps::Game.time()),
|
||||
opts);
|
||||
std::vector<std::string> body;
|
||||
if (opts["memory"]["role"] == CreepRole::MINER) {
|
||||
body.push_back("move");
|
||||
for (int i = 0; i < (energyAvailable - 50) / 100 && i < 5; i++) {
|
||||
body.push_back("work");
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < energyAvailable / 200; i++) {
|
||||
body.push_back("work");
|
||||
body.push_back("carry");
|
||||
body.push_back("move");
|
||||
}
|
||||
}
|
||||
|
||||
spawn.spawnCreep(body, name + std::to_string(Screeps::Game.time()), opts);
|
||||
}
|
||||
Reference in New Issue
Block a user