-
Notifications
You must be signed in to change notification settings - Fork 2
/
Chassis.js
58 lines (48 loc) · 1.14 KB
/
Chassis.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
function Chassis(name, parts) {
this.name = name;
this.parts = parts;
return this;
}
Chassis.prototype = new Object;
var COST = {};
COST[MOVE] = 50;
COST[WORK] = 100;
COST[CARRY] = 50;
COST[ATTACK] = 80;
COST[RANGED_ATTACK] = 150;
COST[HEAL] = 250;
COST[TOUGH] = 10;
const MAX_PARTS = 30;
function calculateCost(parts) {
var cost = 0;
for (var i in parts) {
cost += COST[ parts[i] ];
}
return cost;
}
Chassis.prototype.spawnCreep = function(spawner, maxEnergy, name, memory) {
var baseBody = [ MOVE ];
baseBody.push(parts);
for (var i = 0; i < part.length / 2; i++) baseBody.push(MOVE);
var body = [];
body.push(baseBody);
while (true) {
var testBody = [];
testBody.push(body);
testBody.push(baseBody);
if (calculateCost(testBody) < maxEnergy) {
body = testBody;
}
else {
break;
}
}
var r = spawner.createCreep(body, name, memory);
if (r == name) {
return body;
}
else {
return null;
}
}
module.exports = Chassis;