const utils = require('utils') const path = require('path') // const harvester = require("./harvester"); module.exports = { run(creep) { creep.say('transfer') let working_target_id = creep.working_target_id if(!working_target_id){ creep.say('Standby') return } let working_target = Game.getObjectById(working_target_id) //TODO:处理transfer的对象消失的情况 if(!working_target){ creep.working_target_id=null return } let working_target_pos = working_target.pos let my_pos = creep.pos; if(!working_target.memory){ console.log(`check ${creep.name} working target`) return } if (working_target.memory.role == 'harvester') { if (creep.store.energy < creep.store.getCapacity()) { if (!working_target) { // console.log(`${creep.name} working target vanished. Turn to unassigned.`) return } if (utils.distance(working_target_pos, my_pos) > 1.5) {//在附近就是1或者1.414 creep.moveTo(working_target_pos); path.visualPath(creep.pos, working_target_pos); } else { //find dropped source let found = creep.room.lookForAt(LOOK_ENERGY, working_target_pos); if (found.length > 0) { creep.pickup(found[0]) } } } 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); } } } if (working_target.memory.role == 'builder') { if (creep.store.energy > 0) { if (utils.distance(working_target_pos, my_pos) > 1.5) {//在附近就是1或者1.414 creep.moveTo(working_target_pos); path.visualPath(creep.pos, working_target_pos); } else { creep.drop(RESOURCE_ENERGY) } } else { if (creep.withdraw(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) { creep.moveTo(Game.spawns['Spawn1']); path.visualPath(creep.pos, Game.spawns['Spawn1'].pos); } } } } }