-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprototype.link.js
58 lines (57 loc) · 2.24 KB
/
prototype.link.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// create a new function for StructureTower
StructureLink.prototype.findLinkType = function() {
let isMinerLink = this.pos.findInRange(FIND_SOURCES, 2)[0];
if (isMinerLink != undefined) {
if (this.energy == this.energyCapacity && this.cooldown == 0) {
var controllerLink = this.findControllerLink();
if (controllerLink != undefined || controllerLink.energy == storageLink.energyCapacity ){
var availableStorageSpace = controllerLink.energyCapacity - controllerLink.energy;
this.transferEnergy(controllerLink, availableStorageSpace);
}
else{
var storageLink = this.findStorageLink();
if (storageLink != undefined) {
var availableStorageSpace = storageLink.energyCapacity - storageLink.energy;
this.transferEnergy(storageLink, availableStorageSpace);
}
}
}
} else {
let isStorageLink = this.pos.findInRange(FIND_STRUCTURES, 2, {
filter: s => s.structureType == STRUCTURE_STORAGE
})[0];
if (isStorageLink != undefined) {
if (this.room.energyAvailable == this.room.energyCapacityAvailable && this.energy > 0 && this.cooldown == 0) {
var controllerLink = this.findControllerLink();
if (controllerLink != undefined) {
var availableStorageSpace = controllerLink.energyCapacity - controllerLink.energy;
this.transferEnergy(controllerLink, availableStorageSpace);
}
}
}
}
};
StructureLink.prototype.findStorageLink = function() {
var links = _.filter(this.room.find(FIND_STRUCTURES), s => s.structureType == STRUCTURE_LINK);
// for each link in the room
for (let link of links) {
let isStorageLink = link.pos.findInRange(FIND_STRUCTURES, 2, {
filter: s => s.structureType == STRUCTURE_STORAGE
})[0];
if (isStorageLink != undefined) {
return link
}
}
};
StructureLink.prototype.findControllerLink = function() {
var links = _.filter(this.room.find(FIND_STRUCTURES), s => s.structureType == STRUCTURE_LINK);
// for each link in the room
for (let link of links) {
let isControllerLink = link.pos.findInRange(FIND_STRUCTURES, 2, {
filter: s => s.structureType == STRUCTURE_CONTROLLER
})[0];
if (isControllerLink != undefined) {
return link
}
}
};