修复bug
This commit is contained in:
parent
98b97cbca6
commit
aeecf8c287
40
main.js
40
main.js
|
|
@ -37,7 +37,8 @@ function cleanInvalidMemoryCreep() {
|
|||
}
|
||||
|
||||
function cleanTargetMemory() {
|
||||
_.each(Object.keys(Memory.WorkingTarget), function (target) {
|
||||
_.each(Object.keys(Memory.WorkingTarget), function (target_key) {
|
||||
const target = Memory.WorkingTarget[target_key];
|
||||
if (!Game.getObjectById(target.id)) {
|
||||
console.log(
|
||||
`target ${target.id} is invalid, removed from Memory.WorkingTarget.Set their creep to idle`
|
||||
|
|
@ -45,7 +46,7 @@ function cleanTargetMemory() {
|
|||
_.each(target.working_creep_names, (creep_name) => {
|
||||
Game.creeps[creep_name].working_target_id = undefined;
|
||||
});
|
||||
delete Memory.WorkingTarget[i];
|
||||
delete Memory.WorkingTarget[target_key];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -162,11 +163,13 @@ function assign_transfer_to_builder() {
|
|||
(memory) =>
|
||||
memory.working_creep_names.length === 0 && memory.cate === "builder"
|
||||
); // 需要安排creep的builder
|
||||
if (assign_transfer(builder_needs_creep_memory) === -1) {
|
||||
console.log(
|
||||
`no enough transfer to builder. Try to create a new one autmatically`
|
||||
);
|
||||
createBuilderCreep();
|
||||
if (builder_needs_creep_memory.length > 0) {
|
||||
if (assign_transfer(builder_needs_creep_memory) === -1) {
|
||||
console.log(
|
||||
`no enough transfer to builder. Try to create a new one autmatically`
|
||||
);
|
||||
createBuilderCreep();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -204,21 +207,14 @@ function assign_builder_to_construction(construction_id) {
|
|||
);
|
||||
createBuilderCreep();
|
||||
}
|
||||
// //开始给建造constrction的每个creep安排transfer
|
||||
// _.each(Memory.WorkingTarget[constuction_key].working_creep_names,function(builder_creep_name){
|
||||
// if(!Memory.WorkingTarget[builder_creep_name]){
|
||||
// Memory.WorkingTarget[builder_creep_name]={id:Game.creeps[builder_creep_name].id,working_creep_names: [], cate: 'builder'}
|
||||
// }
|
||||
// })
|
||||
}
|
||||
|
||||
function assign_harvester_to_enery_source() {
|
||||
function assign_harvester_to_energy_source() {
|
||||
const sources = Game.spawns.Spawn1.room.find(FIND_SOURCES_ACTIVE);
|
||||
const all_memory = Memory.WorkingTarget;
|
||||
_.each(Object.keys(sources), function (source) {
|
||||
const { id } = source;
|
||||
_.each(Object.keys(sources), function (source_key) {
|
||||
const { id } = sources[source_key];
|
||||
const key = `Energy_${id}`;
|
||||
if (!Memory.WorkingTarget[key]) {
|
||||
if (!_.find(Memory.WorkingTarget, (target) => target.id === id)) {
|
||||
Memory.WorkingTarget[key] = {
|
||||
id,
|
||||
working_creep_names: [],
|
||||
|
|
@ -228,7 +224,9 @@ function assign_harvester_to_enery_source() {
|
|||
});
|
||||
// 向Memory.WorkingTarget里添加所有的Energy Source
|
||||
// 寻找Energy Source的Memory
|
||||
const energy_memory = _.filter(all_memory, { cate: "ENERGY_SOURCE" });
|
||||
const energy_memory = _.filter(Memory.WorkingTarget, {
|
||||
cate: "ENERGY_SOURCE",
|
||||
});
|
||||
// 寻找creep为0的energy source
|
||||
const energy_source_need_creep_array = _.filter(
|
||||
energy_memory,
|
||||
|
|
@ -344,14 +342,14 @@ function createTransferCreep() {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports.loop = function _() {
|
||||
module.exports.loop = function () {
|
||||
extra();
|
||||
init.init();
|
||||
mount.mount();
|
||||
cleanCreeps();
|
||||
cleanInvalidMemoryCreep();
|
||||
cleanTargetMemory();
|
||||
assign_harvester_to_enery_source();
|
||||
assign_harvester_to_energy_source();
|
||||
assign_transfer_to_harvester();
|
||||
assign_builder_to_controller();
|
||||
assign_transfer_to_builder();
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@ module.exports = {
|
|||
const working_target = Game.getObjectById(working_target_id);
|
||||
// TODO:处理transfer的对象消失的情况
|
||||
if (!working_target) {
|
||||
// _.each(Memery.WorkingTarget[creep.name].working_creep_names,creep_name=>Game.creeps[creep_name].working_target_id=undefined)
|
||||
// delete Memery.WorkingTarget[creep.name]
|
||||
Game.creeps[creep.name].working_target_id = undefined;
|
||||
return;
|
||||
}
|
||||
const working_target_pos = working_target.pos;
|
||||
|
|
@ -33,10 +32,6 @@ module.exports = {
|
|||
}
|
||||
if (working_target.memory.role === "harvester") {
|
||||
if (creep.store.energy < creep.store.getCapacity()) {
|
||||
if (!working_target) {
|
||||
// console.log(`${creep.name} working target vanished. Turn to unassigned.`)
|
||||
return;
|
||||
}
|
||||
if (utils.distance(working_target_pos, my_pos) > 1.5) {
|
||||
// 在附近就是1或者1.414
|
||||
creep.moveTo(working_target_pos, {
|
||||
|
|
@ -45,6 +40,7 @@ module.exports = {
|
|||
path.visualPath(creep.pos, working_target_pos);
|
||||
} else {
|
||||
// find dropped source
|
||||
|
||||
const found = creep.room.lookForAt(
|
||||
LOOK_ENERGY,
|
||||
working_target_pos
|
||||
|
|
|
|||
Loading…
Reference in New Issue