-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathCMilitary.h
75 lines (55 loc) · 1.5 KB
/
CMilitary.h
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
#ifndef MILITARY_H
#define MILITARY_H
#include <map>
#include <vector>
#include <stack>
#include "ARegistrar.h"
#include "headers/HEngine.h"
#include "headers/Defines.h"
class CUnit;
class CGroup;
class AIClasses;
enum MilitaryGroupBehaviour {
SCOUT,
ENGAGE,
BOMBER,
HARASS,
AIRFIGHTER
};
class CMilitary: public ARegistrar {
public:
CMilitary(AIClasses *ai);
/* Overload */
void remove(ARegistrar& group);
/* Add a unit, place it in the correct group */
bool addUnit(CUnit& unit);
/* Returns a fresh CGroup instance */
CGroup* requestGroup(MilitaryGroupBehaviour type);
/* Update call-in */
void update(int groupsize);
int idleScoutGroupsNum();
bool switchDebugMode();
void onEnemyDestroyed(int enemy, int attacker);
protected:
AIClasses* ai;
private:
unitCategory allowedEnvCats;
/* Current group per factory <factory, CGroup*> */
std::map<int, CGroup*> assemblingGroups;
/* The ingame scout groups */
std::map<int, CGroup*> activeScoutGroups;
/* The ingame attack groups */
std::map<int, CGroup*> activeAttackGroups;
/* The ingame bomber groups */
std::map<int, CGroup*> activeBomberGroups;
std::map<int, CGroup*> activeAirFighterGroups;
std::map<MilitaryGroupBehaviour, std::map<int, CGroup*>* > groups;
/* Mergable groups */
std::map<int,CGroup*> mergeGroups;
bool drawTasks;
/* Request a unit for building using a roulette wheel system */
unitCategory requestUnit(unitCategory basecat = 0);
bool isAssemblingGroup(CGroup *group);
void visualizeTasks(CGroup*);
};
#endif