全局范围内清楚无效的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')
|
const mount = require('mount')
|
||||||
module.exports.loop = function () {
|
module.exports.loop = function () {
|
||||||
//clean creeps
|
//clean creeps
|
||||||
cleanCreeps()
|
|
||||||
init.init();
|
init.init();
|
||||||
mount.mount()
|
mount.mount()
|
||||||
|
cleanCreeps()
|
||||||
|
cleanUnusedMemoryItem()
|
||||||
|
cleanTargetMemory()
|
||||||
assign_harvester_picker_to_enery_source();
|
assign_harvester_picker_to_enery_source();
|
||||||
assign_transfer_to_picker()
|
assign_transfer_to_picker()
|
||||||
assign_builder_to_controller();
|
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() {
|
function assign_transfer_to_picker() {
|
||||||
//判断有多少个picker的transfer为0
|
//判断有多少个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
|
Memory.WorkingTarget.push({ id: picker.id, working_creep_names: [], cate: 'picker' })//在Memory.WorkingTarget加入需要creep的Picker
|
||||||
})
|
})
|
||||||
//先移除已经失效的creep
|
//先移除已经失效的creep
|
||||||
let picker_mem=_.filter(Memory.WorkingTarget,{cate:'picker'})
|
// let picker_mem=_.filter(Memory.WorkingTarget,{cate:'picker'})
|
||||||
_.each(picker_mem, function (m) {
|
// _.each(picker_mem, function (m) {
|
||||||
_.remove(m.working_creep_names, creep_name => !Game.creeps[creep_name])//如果一个creep已经不存在了,就从列表中移除
|
// _.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)
|
let picker_memories = _.filter(Memory.WorkingTarget, picker_memory => picker_memory.working_creep_names.length == 0)
|
||||||
if (picker_memories.length > 0) {
|
if (picker_memories.length > 0) {
|
||||||
let available_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer'))
|
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) {
|
_.each(builder_has_no_creep, function (builder) {
|
||||||
Memory.WorkingTarget.push({ id: builder.id, working_creep_names: [], cate: 'builder' })//在Memory.WorkingTarget加入需要creep的builder
|
Memory.WorkingTarget.push({ id: builder.id, working_creep_names: [], cate: 'builder' })//在Memory.WorkingTarget加入需要creep的builder
|
||||||
})
|
})
|
||||||
//先移除已经失效的creep
|
// //先移除已经失效的creep
|
||||||
let bulder_mem=_.filter(Memory.WorkingTarget,{cate:'builder'})
|
// let bulder_mem=_.filter(Memory.WorkingTarget,{cate:'builder'})
|
||||||
_.each(bulder_mem, function (m) {
|
// _.each(bulder_mem, function (m) {
|
||||||
_.remove(m.working_creep_names, creep_name => !Game.creeps[creep_name])//如果一个creep已经不存在了,就从列表中移除
|
// _.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)
|
let builder_memories = _.filter(Memory.WorkingTarget, builder_memory => builder_memory.working_creep_names.length == 0)
|
||||||
if (builder_memories.length > 0) {
|
if (builder_memories.length > 0) {
|
||||||
let available_transfer = _.filter(Game.creeps, creep => !creep.working_target_id && (creep.memory.role == 'transfer'))
|
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中已经不存在的工作对象
|
//清理Memory中已经不存在的工作对象
|
||||||
let available_working_target_id_array = [];//还存在的target
|
_.remove(Memory.WorkingTarget, function (r) {
|
||||||
_.remove(memory, function (r) {
|
|
||||||
if (Game.getObjectById(r.id) === undefined || Game.getObjectById(r.id) === null)
|
if (Game.getObjectById(r.id) === undefined || Game.getObjectById(r.id) === null)
|
||||||
return true
|
return true
|
||||||
else {
|
else {
|
||||||
available_working_target_id_array.push(r.id)
|
return false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return memory
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function assign_creeps(opt) {
|
function assign_creeps(opt) {
|
||||||
let memory = opt.memory
|
let memory = opt.memory
|
||||||
let creep_name_to_assgin_array = opt.creep_name_to_assgin_array//需要分配工作的creeps
|
let creep_name_to_assgin_array = opt.creep_name_to_assgin_array//需要分配工作的creeps
|
||||||
//清理Memory中已经不存在的工作对象
|
//清理Memory中已经不存在的工作对象
|
||||||
removeUnusedMemoryItem(memory)
|
// removeUnusedMemoryItem(memory)
|
||||||
//清理Memroy中已经不存在的creep
|
//清理Memroy中已经不存在的creep
|
||||||
_.each(memory, function (m) {
|
_.each(memory, function (m) {
|
||||||
_.remove(m.working_creep_names, name => Game.creeps[name] === undefined || Game.creeps[name] === null)
|
_.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' });
|
all_memory.push({ 'id': id, 'working_creep_names': [], "cate": 'ENERGY_SOURCE' });
|
||||||
}
|
}
|
||||||
}//向Memory.WorkingTarget里添加所有的Energy Source
|
}//向Memory.WorkingTarget里添加所有的Energy Source
|
||||||
removeUnusedMemoryItem(all_memory)//移除已经不存在的target
|
// removeUnusedMemoryItem(all_memory)//移除已经不存在的target
|
||||||
//寻找Energy Source的Memory
|
//寻找Energy Source的Memory
|
||||||
let energy_memory = _.filter(all_memory, { cate: 'ENERGY_SOURCE' })
|
let energy_memory = _.filter(all_memory, { cate: 'ENERGY_SOURCE' })
|
||||||
//检查一下是否每一个energy至少有一个creep
|
//检查一下是否每一个energy至少有一个creep
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue