TsarBot/role.dispatcher.js
2025-06-03 21:10:14 -07:00

48 lines
1.2 KiB
JavaScript

var roleHarvester = require('role.harvester');
var roleUpgrader = require('role.upgrader');
var roleBuilder = require('role.builder');
var roleRepairer = require('role.repairer');
var roleGuard = require('role.guard');
const roleMap = {
harvester: roleHarvester,
upgrader: roleUpgrader,
builder: roleBuilder,
repairer: roleRepairer,
streltsy: roleGuard
};
var creepCounts = {
"harvester" : 3,
"builder" : 1,
"upgrader" : 2,
"repairer" : 1,
"streltsy" : 2
};
function runRole(creep){
const role = roleMap[creep.memory.role];
if(role && typeof role.run === 'function'){
role.run(creep);
} else {
console.log('Unknown or undefined role: ' + creep.memory.role);
}
}
function spawnCreeps(spawn){
for(const [role, count] of Object.entries(creepCounts)){
var roleCreeps = _.filter(Game.creeps, (creep) => creep.memory.role == role);
if(roleCreeps.length < count && !spawn.spawning) {
var newName = role + Game.time;
console.log(spawn.spawnCreep(roleMap[role].body, newName,
{memory: {role: role}}));
break;
}
}
}
module.exports = { runRole, spawnCreeps, creepCounts};