From a5843fb90df419796de37974e593a0fb3f824298 Mon Sep 17 00:00:00 2001 From: facat Date: Fri, 23 Oct 2020 22:28:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E5=B1=80=E8=8C=83=E5=9B=B4=E5=86=85?= =?UTF-8?q?=E6=B8=85=E6=A5=9A=E6=97=A0=E6=95=88=E7=9A=84memory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/main.js b/main.js index fb83390..44d2a91 100644 --- a/main.js +++ b/main.js @@ -3,9 +3,11 @@ const util = require('utils'); const mount = require('mount') module.exports.loop = function () { //clean creeps - cleanCreeps() init.init(); mount.mount() + cleanCreeps() + cleanUnusedMemoryItem() + cleanTargetMemory() assign_harvester_picker_to_enery_source(); assign_transfer_to_picker() assign_builder_to_controller(); @@ -47,6 +49,10 @@ function cleanCreeps() { } } +function cleanTargetMemory(){ + _.each(Memory.WorkingTarget,target=>_.remove(target.working_creep_names,name=>!Game.creeps[name])) +} + function assign_transfer_to_picker() { //判断有多少个picker的transfer为0 @@ -58,10 +64,10 @@ function assign_transfer_to_picker() { Memory.WorkingTarget.push({ id: picker.id, working_creep_names: [], cate: 'picker' })//在Memory.WorkingTarget加入需要creep的Picker }) //先移除已经失效的creep - let picker_mem=_.filter(Memory.WorkingTarget,{cate:'picker'}) - _.each(picker_mem, function (m) { - _.remove(m.working_creep_names, creep_name => !Game.creeps[creep_name])//如果一个creep已经不存在了,就从列表中移除 - }) + // let picker_mem=_.filter(Memory.WorkingTarget,{cate:'picker'}) + // _.each(picker_mem, function (m) { + // _.remove(m.working_creep_names, creep_name => !Game.creeps[creep_name])//如果一个creep已经不存在了,就从列表中移除 + // }) let picker_memories = _.filter(Memory.WorkingTarget, picker_memory => picker_memory.working_creep_names.length == 0) if (picker_memories.length > 0) { let available_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer')) @@ -92,11 +98,11 @@ function assign_transfer_to_builder() { _.each(builder_has_no_creep, function (builder) { Memory.WorkingTarget.push({ id: builder.id, working_creep_names: [], cate: 'builder' })//在Memory.WorkingTarget加入需要creep的builder }) - //先移除已经失效的creep - let bulder_mem=_.filter(Memory.WorkingTarget,{cate:'builder'}) - _.each(bulder_mem, function (m) { - _.remove(m.working_creep_names, creep_name => !Game.creeps[creep_name])//如果一个creep已经不存在了,就从列表中移除 - }) + // //先移除已经失效的creep + // let bulder_mem=_.filter(Memory.WorkingTarget,{cate:'builder'}) + // _.each(bulder_mem, function (m) { + // _.remove(m.working_creep_names, creep_name => !Game.creeps[creep_name])//如果一个creep已经不存在了,就从列表中移除 + // }) let builder_memories = _.filter(Memory.WorkingTarget, builder_memory => builder_memory.working_creep_names.length == 0) if (builder_memories.length > 0) { let available_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer')) @@ -110,24 +116,22 @@ function assign_transfer_to_builder() { } } -function removeUnusedMemoryItem(memory) { +function cleanUnusedMemoryItem() { //清理Memory中已经不存在的工作对象 - let available_working_target_id_array = [];//还存在的target - _.remove(memory, function (r) { + _.remove(Memory.WorkingTarget, function (r) { if (Game.getObjectById(r.id) === undefined || Game.getObjectById(r.id) === null) return true else { - available_working_target_id_array.push(r.id) + return false } }) - return memory } function assign_creeps(opt) { let memory = opt.memory let creep_name_to_assgin_array = opt.creep_name_to_assgin_array//需要分配工作的creeps //清理Memory中已经不存在的工作对象 - removeUnusedMemoryItem(memory) + // removeUnusedMemoryItem(memory) //清理Memroy中已经不存在的creep _.each(memory, function (m) { _.remove(m.working_creep_names, name => Game.creeps[name] === undefined || Game.creeps[name] === null) @@ -155,7 +159,7 @@ function assign_harvester_picker_to_enery_source() { all_memory.push({ 'id': id, 'working_creep_names': [], "cate": 'ENERGY_SOURCE' }); } }//向Memory.WorkingTarget里添加所有的Energy Source - removeUnusedMemoryItem(all_memory)//移除已经不存在的target + // removeUnusedMemoryItem(all_memory)//移除已经不存在的target //寻找Energy Source的Memory let energy_memory = _.filter(all_memory, { cate: 'ENERGY_SOURCE' }) //检查一下是否每一个energy至少有一个creep