diff --git a/main.js b/main.js index ba7c1e4..7c6d0c1 100644 --- a/main.js +++ b/main.js @@ -2,14 +2,23 @@ var roleHarvester = require('role.harvester'); var roleUpgrader = require('role.upgrader'); var roleBuilder = require('role.builder'); -var _defaultBodyParts = [WORK, CARRY, MOVE]; -var _roleNames = ["harvester", "builder", "upgrader"]; -var _minimums = { - harvester: 4, - builder: 2, - upgrader: 2 -}; - +var creepsConfig = { + harvester: { + bodyParts: [WORK, CARRY, MOVE], + minimumCreeps: 4, + run: roleHarvester.run + }, + builder:{ + bodyParts: [WORK, CARRY, MOVE], + minimumCreeps: 2, + run: roleBuilder.run + }, + upgrader: { + bodyParts: [WORK, CARRY, MOVE], + minimumCreeps: 2, + run: roleUpgrader.run + } +} module.exports.loop = function(){ // Cleanup Creeps for (var name in Memory.creeps){ @@ -18,31 +27,20 @@ module.exports.loop = function(){ console.log("Clearning non-existing creep memory: ", name); } } - // Refactor some similar behavior for all roles - _roleNames.forEach(function(roleName){ + for (var roleName in creepsConfig){ var creepsOfKind = _.filter(Game.creeps, (creep) => creep.memory.role == roleName); - if (creepsOfKind.length < _minimums[roleName]){ - var newName = Game.spawns.Spawn1.createCreep(_defaultBodyParts, undefined, {role: roleName}); + if (creepsOfKind.length < creepsConfig[roleName].minimumCreeps){ + var newName = Game.spawns.Spawn1.createCreep(creepsConfig[roleName].bodyParts, undefined, {role: roleName}); console.log("Spawning new ", roleName, ": ", newName); } - }); + }; // Run stuff for each creep for (var name in Game.creeps){ var creep = Game.creeps[name]; - if (creep.memory.role == 'harvester'){ - roleHarvester.run(creep); - } - - if (creep.memory.role == 'upgrader'){ - roleUpgrader.run(creep); - } - - if (creep.memory.role == 'builder'){ - roleBuilder.run(creep); - } - + var role = creep.memory.role; + creepsConfig[role].run(creep); } } \ No newline at end of file