全局范围内清楚无效的memory
This commit is contained in:
parent
8ee9e44e1e
commit
a5843fb90d
38
main.js
38
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue