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