-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbookkeeping.js
More file actions
114 lines (99 loc) · 3.29 KB
/
bookkeeping.js
File metadata and controls
114 lines (99 loc) · 3.29 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
module.exports = {
containsRoom: function (room, list) {
for (i = 0; i < list.length; i++) {
if (list[i].ID === room) {
return true;
}
}
return false;
},
getRoomsInfo: function () {
var spawnsList,
roomsInfo;
spawnList = Game.spawns;
roomsInfo = [];
for (var spawn in spawnList) {
var nameOfRoom = Game.spawns[spawn].pos.roomName;
//console.log(containsRoom(nameOfRoom, roomsInfo));
if (!this.containsRoom(nameOfRoom, roomsInfo)) {
roomsInfo.push({ ID: nameOfRoom, "rcl": Game.rooms[nameOfRoom].controller.level });
roomsInfo[roomsInfo.length - 1].name = nameOfRoom;
}
// console.log(roomsInfo[0].ID);
}
return roomsInfo;
},
census: function () {
var allCreeps = _.values(Game.creeps);
var census = {};
var memberInfo;
if (allCreeps.length === 0) {
return census;
}
for (i = 0; i < allCreeps.length; i++) {
memberInfo = allCreeps[i].id;
if (!census.propertyIsEnumerable(allCreeps[i].room.name)) {
census[allCreeps[i].room.name] = {};
census[allCreeps[i].room.name][allCreeps[i].realMemory.role] = [memberInfo];
} else if (!census[allCreeps[i].room.name].propertyIsEnumerable([allCreeps[i].realMemory.role])) {
census[allCreeps[i].room.name][allCreeps[i].realMemory.role] = [memberInfo];
} else {
census[allCreeps[i].room.name][allCreeps[i].realMemory.role].push(memberInfo);
}
}
return census;
},
countCreeps: function (roomName) {
var localCreeps = _.values(Game.rooms[roomName].find(FIND_MY_CREEPS));
var census = [];
var currentRole,
creepObject,
creepInfo;
//console.log('length of localCreeps: ' + localCreeps.length);
for (i = 0; i < localCreeps.length; i++) {
//console.log(JSON.stringify(localCreeps[i]));
//currentCreep = { "id": localCreeps[i].id };
//currentRole = currentCreep.realMemory.role;
creepObject = Game.getObjectById(localCreeps[i].id);
currentRole = creepObject.realMemory.role;
creepInfo = { "room": roomName, "role": currentRole, "id": creepObject.id, "name": creepObject.name };
// console.log(JSON.stringify(creepInfo));
if (census.length === 0) {
census = [{ "role": currentRole, "members": [creepObject] }];
//console.log("i=" + i + ', name=' + creepInfo.name + 'first');
} else {
for (j = 0; j < census.length; j++) {
//console.log("i=" + i + ", j=" + j + ', name=' + creepInfo.name + ' pre-match');
if (currentRole === census[j].role) {
//console.log("i=" + i + ", j=" + j + ', name=' + creepInfo.name + ' match');
census[j].members.push(creepObject);
j = census.length;
} else if (j === census.length - 1) {
//console.log("i=" + i + ", j=" + j + ', name=' + creepInfo.name + ' no match');
census.push({ "role": currentRole, "members": [creepObject] });
j = census.length;
}
}
}
}
//for (i = 0; i < census.length; i++) {
// console.log(census[i].role + " count: " + census[i].members.length);
//}
//return census;
},
honorTheDead: function () {
for (var name in Memory.creeps) {
if (!Game.creeps[name]) {
delete Memory.creeps[name];
console.log(name + ' has fallen. Let us remember.');
}
}
for (var key in Memory) {
//
if (key === 'creeps' || key === 'spawns') continue;
if (Game.getObjectById(key) === null) {
delete Memory[key];
}
}
}
};