File: CAI.h

package info (click to toggle)
spring 104.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 47,512 kB
  • sloc: cpp: 391,093; ansic: 79,943; python: 12,356; java: 12,201; awk: 5,889; sh: 1,826; xml: 655; makefile: 486; perl: 405; php: 211; objc: 194; sed: 2
file content (64 lines) | stat: -rw-r--r-- 1,556 bytes parent folder | download | duplicates (4)
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
#ifndef CAI_H
#define CAI_H

#include "headers/HAIInterface.h"
#include "headers/Defines.h"
#include "CLogger.h"

class CConfigParser;
class CUnitTable;
class CEconomy;
class CWishList;
class CTaskHandler;
class CThreatMap;
class CPathfinder;
class CIntel;
class CMilitary;
class CDefenseMatrix;
class GameMap;
class CCoverageHandler;

/* Ensures single instantiation of classes and good reachability */
class AIClasses {

public:
	AIClasses(IGlobalAICallback* callback);
	~AIClasses();

	static std::map<int, AIClasses*> instances;
		// AI instances grouped by team ID
	static std::map<int, std::map<int, AIClasses*> > instancesByAllyTeam;
	    // AI instances grouped by ally team ID
	static std::vector<int> unitIDs;
		// temporary container for GetEnemyUnits(), GetFriendlyUnits() etc. results
	IAICallback*	cb;
	IAICheats*		cbc;
	CConfigParser*	cfgparser;
	GameMap*		gamemap;
	CUnitTable*		unittable;
	CEconomy*		economy;
	CWishList*		wishlist;
	CTaskHandler*	tasks;
	CThreatMap*		threatmap;
	CPathfinder*	pathfinder;
	CIntel*			intel;
	CMilitary*		military;
	CDefenseMatrix*	defensematrix;
	CLogger*		logger;
	CCoverageHandler*	coverage;
	int team;
		// team ID
	int allyTeam;
		// ally team ID
	int allyIndex;
		// team index within ally E323AIs (base = 1)
	difficultyLevel difficulty;
		// TODO: move to CIntel?

	bool isMaster() { return (instances.begin()->first == team); }
	bool isMasterAlly() { return instancesByAllyTeam[allyTeam].begin()->first == team; }
	bool isSole() { return instances.size() == 1; }
	void updateAllyIndex();
};

#endif