diff --git a/main.js b/main.js index 9971b43..e098e19 100644 --- a/main.js +++ b/main.js @@ -2,13 +2,14 @@ const init = require('init') const util = require('utils'); const mount = require('mount') module.exports.loop = function () { + extra() init.init(); mount.mount() cleanCreeps() cleanInvalidMemoryCreep() cleanTargetMemory() assign_harvester_to_enery_source(); - assign_transfer_to_picker() + assign_transfer_to_harvester() assign_builder_to_controller(); assign_transfer_to_builder(); let isSpawning = false @@ -41,6 +42,11 @@ module.exports.loop = function () { } +function extra(){ + // Game.map.visual.circle(Game.getObjectById('5f9423c48004fbeff0f4d965').pos) + // console.log(Game.getObjectById('5f9423c48004fbeff0f4d965').pos) +} + function cleanCreeps() { for (let i in Memory.creeps) { if (!Game.creeps[i]) { @@ -61,24 +67,23 @@ function cleanTargetMemory() { } -function assign_transfer_to_picker() { +function assign_transfer_to_harvester() { //判断有多少个picker的transfer为0 - let all_picker = _.filter(Game.creeps, { memory: { role: 'harvester' } }) - let picker_has_no_creep = _.filter(all_picker, function (picker) { - return !_.find(Memory.WorkingTarget, target => target.id == picker.id)//Memory.WorkingTarget中没有这个picker目标 + let harvester_without_creep = _.filter(Game.creeps, function (creep) { + return !Memory.WorkingTarget[creep.name] && creep.memory.role=='harvester'//Memory.WorkingTarget中没有这个picker目标 }) - _.each(picker_has_no_creep, function (picker) { - Memory.WorkingTarget[picker.name] = { id: picker.id, working_creep_names: [], cate: 'harvester' }//在Memory.WorkingTarget加入需要creep的Picker + _.each(harvester_without_creep, function (harvester_creep) { + Memory.WorkingTarget[harvester_creep.name] = { id: harvester_creep.id, working_creep_names: [], cate: 'harvester' }//在Memory.WorkingTarget加入需要creep的Picker }) - let picker_memories = _.filter(Memory.WorkingTarget, memory => memory.working_creep_names.length == 0 && memory.cate=='harvester') - if (picker_memories.length > 0) { - let available_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer')) - if (available_transfer.length > 0) {//一次只安排一个creep + let harvester_needs_creep_memory = _.filter(Memory.WorkingTarget, memory => memory.working_creep_names.length == 0 && memory.cate=='harvester') + if (harvester_needs_creep_memory.length > 0) { + let idle_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer')) + if (idle_transfer.length > 0) {//一次只安排一个creep let opt = { - memory: picker_memories, - creep_name_to_assgin_array: [available_transfer[0].name] + memory: harvester_needs_creep_memory, + creep_name_to_assgin_array: [idle_transfer[0].name] } - assign_creeps(opt) + assign_creeps(opt) } } } @@ -93,20 +98,19 @@ function assign_task() { function assign_transfer_to_builder() { //判断有多少个picker的transfer为0 - let all_builder = _.filter(Game.creeps, { memory: { role: 'builder' } }) - let builder_has_no_creep = _.filter(all_builder, function (builder) { - return !_.find(Memory.WorkingTarget, target => target.id == builder.id)//Memory.WorkingTarget中没有这个builder目标 + let builder_without_creep = _.filter(Game.creeps, function (creep) { + return !Memory.WorkingTarget[creep.name] && creep.memory.role=='builder'//Memory.WorkingTarget中没有这个picker目标 }) - _.each(builder_has_no_creep, function (builder) { + _.each(builder_without_creep, function (builder) { Memory.WorkingTarget[builder.name] = { id: builder.id, working_creep_names: [], cate: 'builder' }//在Memory.WorkingTarget加入需要creep的builder }) - let builder_memories = _.filter(Memory.WorkingTarget, memory => memory.working_creep_names.length == 0 && memory.cate=='builder') - if (builder_memories.length > 0) { - let available_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer')) - if (available_transfer.length > 0) {//一次只安排一个creep + let builder_needs_creep_memory = _.filter(Memory.WorkingTarget, memory => memory.working_creep_names.length == 0 && memory.cate=='builder') + if (builder_needs_creep_memory.length > 0) { + let idle_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer')) + if (idle_transfer.length > 0) {//一次只安排一个creep let opt = { - memory: builder_memories, - creep_name_to_assgin_array: [available_transfer[0].name] + memory: builder_needs_creep_memory, + creep_name_to_assgin_array: [idle_transfer[0].name] } assign_creeps(opt) } @@ -160,7 +164,6 @@ function assign_harvester_to_enery_source() { for (let source of sources) { let id = source.id if (!_.find(all_memory,f => f['id'] == id)) { - // console.log(`add id ${id}`) all_memory[`Energy_${id}`] = { 'id': id, 'working_creep_names': [], "cate": 'ENERGY_SOURCE' }; } }//向Memory.WorkingTarget里添加所有的Energy Source diff --git a/transfer.js b/transfer.js index d1c5209..2f05262 100644 --- a/transfer.js +++ b/transfer.js @@ -20,7 +20,7 @@ module.exports = { let working_target_pos = working_target.pos let my_pos = creep.pos; if(!working_target.memory){ - console.log(`check ${creep.name} working target`) + console.log(`check ${creep.name}, working target memory ${JSON.stringify(working_target)}`) return } if (working_target.memory.role == 'harvester') {