-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOverseer.java
More file actions
93 lines (80 loc) · 2.53 KB
/
Overseer.java
File metadata and controls
93 lines (80 loc) · 2.53 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
import bc.*;
import java.util.ArrayList;
/*
just does the turn, update()ing everything then move()ing everything
*/
public class Overseer{
GameController gc;
MagicNumbers magicNums;
InfoManager infoMan;
ResearchManager researchMan;
RocketManager rocketMan;
WorkerManager workerMan;
CombatManager combatMan;
ProductionManager prodMan;
Strategy strat;
Nav nav;
public Overseer(GameController g){
gc = g;
if(gc.planet() == Planet.Earth){
magicNums = new MagicNumbersEarth();
}
else
magicNums = new MagicNumbersMars();
infoMan = new InfoManager(gc, magicNums);
nav = new Nav(infoMan);
strat = new Strategy(infoMan, gc, nav);
workerMan = new WorkerManager(infoMan, gc, strat);
combatMan = new CombatManager(infoMan, gc, strat);
if(gc.planet() == Planet.Earth){
prodMan = new ProductionManager(infoMan, gc);
researchMan = new ResearchManagerEarth(gc, infoMan);
rocketMan = new RocketManager(gc, infoMan);
} else {
prodMan = new ProductionManagerDoNothing();
researchMan = new ResearchManagerMars(gc, infoMan);
rocketMan = new RocketDoNothing(gc, infoMan);
}
}
public void takeTurn(){
Utils.log("Current round: " + gc.round());
int start = gc.getTimeLeftMs();
infoMan.update(strat);
strat.update();
researchMan.update(strat);
rocketMan.update(strat);
workerMan.update(nav);
combatMan.update(strat);
prodMan.update(strat);
try{
prodMan.move();
} catch (Exception e) {
// darn
}
for(WorkerSquad ws : infoMan.workerSquads){
try{
ws.move(nav,strat);
} catch (Exception e) {
// darn
}
}
for(CombatSquad cs : infoMan.combatSquads){
try{
cs.move(nav);
} catch (Exception e) {
// darn
}
}
for(RocketSquad rs : infoMan.rocketSquads){
try{
rs.move(nav,strat);
} catch (Exception e) {
// darn
}
}
gc.nextTurn();
// this has to go after
// because getTimeLeftMs is the same during the same turn
Utils.log("previous turn took " + (start + 50 - gc.getTimeLeftMs()) + " ms. " + gc.getTimeLeftMs() + " ms left");
}
}