全局范围内清楚无效的memory

This commit is contained in:
facat 2020-10-23 22:28:40 +08:00
parent 8ee9e44e1e
commit a5843fb90d
1 changed files with 21 additions and 17 deletions

38
main.js
View File

@ -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