33 lines
1 KiB
JavaScript
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; |