screep/harvester.js

68 lines
1.8 KiB
JavaScript
Raw Normal View History

2020-10-26 16:15:52 +08:00
/* eslint-disable no-undef */
/* eslint-disable camelcase */
const path = require("path");
2020-10-24 15:24:24 +08:00
function harvester_job(creep) {
2020-10-26 16:45:02 +08:00
if (creep.carry.energy < creep.carryCapacity) {
const { working_target_id } = creep;
const working_target = Game.getObjectById(working_target_id);
if (creep.harvest(working_target) === ERR_NOT_IN_RANGE) {
creep.moveTo(working_target);
path.visualPath(creep.pos, working_target.pos);
}
} else if (
creep.transfer(Game.spawns.Spawn1, RESOURCE_ENERGY) === ERR_NOT_IN_RANGE
) {
creep.moveTo(Game.spawns.Spawn1);
path.visualPath(creep.pos, Game.spawns.Spawn1.pos);
2020-10-24 15:24:24 +08:00
}
}
function picker_job(creep) {
2020-10-26 16:45:02 +08:00
if (Game.spawns.Spawn1.store.getFreeCapacity(RESOURCE_ENERGY) === 0) {
creep.say("SB");
return;
}
const { working_target_id } = creep;
if (!working_target_id) {
creep.say("SB");
}
const working_target = Game.getObjectById(working_target_id);
const Re_code = creep.harvest(working_target);
if (Re_code === ERR_NOT_IN_RANGE) {
creep.moveTo(working_target);
} else if (OK === Re_code) {
creep.harvest(working_target);
creep.drop(RESOURCE_ENERGY);
}
2020-10-24 15:24:24 +08:00
}
function change_status() {
2020-10-26 16:45:02 +08:00
if (
_(Game.creeps)
.filter({ memory: { role: "transfer" } })
.size() > 0
) {
return "picker";
}
return "harvester";
2020-10-26 16:15:52 +08:00
}
module.exports = {
2020-10-26 16:45:02 +08:00
run(creep) {
const status = change_status();
switch (status) {
case "harvester":
creep.say("hv");
harvester_job(creep);
break;
case "picker":
creep.say("pc");
picker_job(creep);
break;
default:
break;
}
},
2020-10-26 16:15:52 +08:00
};