const utils = require('utils'); module.exports = { run(creep) { if (creep.working_target_id) { let working_target_id = creep.working_target_id; let working_target = Game.getObjectById(working_target_id); if(!working_target){ // creep.working_target_id=undefined//目标已经完成,转为空闲状态 // _.each(Memery.WorkingTarget[creep.name].working_creep_names,creep_name=>Game.creeps[creep_name].working_target_id=undefined) // delete Memery.WorkingTarget[creep.name] return } if (working_target.structureType == STRUCTURE_CONTROLLER) { creep.say('ug') upgradeController_job(creep) return } creep.say('bd') build_construction(creep) }else{ creep.say('SB') } } } function upgradeController_job(creep) { let working_target_id = creep.working_target_id; let working_target = Game.getObjectById(working_target_id); if (utils.distance(creep.pos, working_target.pos) > 1.5) { creep.moveTo(working_target); } else { let all_dropped_resource = creep.room.find(FIND_DROPPED_RESOURCES) let nearest_dropped_enengy = _.filter(all_dropped_resource, function (energy) { return energy.resourceType == RESOURCE_ENERGY & utils.distance(energy.pos, creep.pos) < 1.5 }) if (nearest_dropped_enengy.length > 0) { let Re_code_pickup = creep.pickup(nearest_dropped_enengy[0]); if (OK == Re_code_pickup || ERR_FULL == Re_code_pickup) { //TODO:需要适应不同的建筑 let Re_code = creep.upgradeController(working_target) if (OK == Re_code) { } else if (Re_code != ERR_NOT_ENOUGH_RESOURCES && Re_code != ERR_NOT_IN_RANGE) { console.log(`${creep.name} failed to upgrade room controller:err ${Re_code}`) } } else { console.log(`${creep.name} failed to pickup: err ${Re_code_pickup}`) } } } } function build_construction(creep) { let working_target_id = creep.working_target_id; let working_target = Game.getObjectById(working_target_id); if (utils.distance(creep.pos, working_target.pos) > 1.5) { creep.moveTo(working_target); } else { let all_dropped_resource = creep.room.find(FIND_DROPPED_RESOURCES) let nearest_dropped_enengy = _.filter(all_dropped_resource, function (energy) { return energy.resourceType == RESOURCE_ENERGY & utils.distance(energy.pos, creep.pos) < 1.5 }) if (nearest_dropped_enengy.length > 0) { let Re_code_pickup = creep.pickup(nearest_dropped_enengy[0]); if (OK == Re_code_pickup || ERR_FULL == Re_code_pickup) { //TODO:需要适应不同的建筑 let Re_code = creep.build(working_target) if (OK == Re_code) { } else if (Re_code != ERR_NOT_ENOUGH_RESOURCES && Re_code != ERR_NOT_IN_RANGE) { console.log(`${creep.name} failed to build:err ${Re_code}`) } } else { console.log(`${creep.name} failed to pickup: err ${Re_code_pickup}`) } } } }