-
Notifications
You must be signed in to change notification settings - Fork 0
/
Player.js
104 lines (86 loc) · 2.63 KB
/
Player.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
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
///////////////////Player/////////////////////////////////
class Player extends Person {
modes = {
Walk: { cost: 0, spaces: 1, cImpact: 0, calories: 21 },
Bike: { cost: 1, spaces: 2, cImpact: 0, calories: 27 },
Bus: { cost: 4, spaces: 3, cImpact: 6, calories: 1.6 },
Scooter: { cost: 3, spaces: 4, cImpact: 0, calories: 1.8 },
Car: { cost: 8, spaces: 5, cImpact: 10, calories: 3 },
};
constructor(startPosition, budget, id) {
super();
this.startPosition = startPosition;
this.budget = budget;
this.cO2 = 0;
this.calories = 0;
this.hitCurveBall = false;
this.secondturn = false;
this.id = id;
this.landmarks = [false, false];
this.pathHist = [];
// this.mode;
this.scores = [{
Destination: startPosition,
TransitMode: "",
CurveBall: "",
Budget: budget,
Cost: 0,
CO2: 0,
Calories: 0,
},
];
// static function fromObject(obj){
// }
}
setBudget(budget){
this.budget = budget;
}
moneyMove(mode) {
if (this.budget >= this.modes[mode].cost) {
return true;
}
return false;
}
updatePlayerInfo(path, mode) {
this.budget = this.budget - this.modes[mode].cost;
this.cO2 = this.cO2 + this.modes[mode].cImpact;
this.calories = this.calories + this.modes[mode].calories;
this.scores.push({
Destination: path[path.length - 1],
TransitMode: mode,
CurveBall: "",
Budget: this.budget,
Cost: this.modes[mode].cost,
CO2: this.cO2,
Calories: this.calories,
})
}
didWin() {
if (this.square == "20-13") {
this.landmarks[0] = true;
}
if (this.square == "8-1" && this.landmarks[0]) {
this.landmarks[1] = true;
}
if (this.square == "2-7" && this.landmarks.every(Boolean)) {
return true;
}
return false;
}
tracker(nw) {
let newspots = nw.length - 1;
let leftover = 10 - this.pathHist.length;
if (this.pathHist.length == 10) {
this.pathHist.splice(0, newspots);
this.pathHist.push.apply(this.pathHist, nw.slice(1));
} else if (this.pathHist.length > 0 && leftover < newspots) {
this.pathHist.splice(0, newspots - leftover);
this.pathHist.push.apply(this.pathHist, nw.slice(1));
} else if (this.pathHist.length == 0) {
this.pathHist.push.apply(this.pathHist, nw);
} else {
this.pathHist.push.apply(this.pathHist, nw.slice(1));
}
return this.pathHist;
}
}