screeps-online/energy.harvest.roundrobin.js
2019-11-29 15:19:38 +01:00

33 lines
1 KiB
JavaScript

var get_source = function(creep) {
var sources = creep.room.find(FIND_SOURCES);
var minSource = null;
var minSourceCount = null;
for(let source of sources) {
var amount_at_source = Memory.rooms[creep.room.name].sources[source.id] - Memory.rooms[creep.room.name].sources_spots[source.id];
if (minSourceCount == null || amount_at_source < minSourceCount) {
minSourceCount = amount_at_source;
minSource = source;
}
}
Memory.rooms[creep.room.name].sources[minSource.id] += 1;
creep.memory.source_id = minSource.id;
return minSource;
}
var release_source = function(creep) {
if(creep.memory.source_id) {
if(Memory.rooms[creep.room.name].sources[creep.memory.source_id] > 0){
Memory.rooms[creep.room.name].sources[creep.memory.source_id] -= 1;
}
delete creep.memory.source_id;
}
}
var roundRobinHarvester = {
get_source: get_source,
release_source: release_source
}
module.exports = roundRobinHarvester;