forked from hoijui/KAIK
-
Notifications
You must be signed in to change notification settings - Fork 2
/
DefenseMatrix.h
52 lines (42 loc) · 1.14 KB
/
DefenseMatrix.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
#ifndef KAIK_DEFENSEMATRIX_HDR
#define KAIK_DEFENSEMATRIX_HDR
#include <vector>
#include "System/float3.h"
class CSpotFinder;
struct AIClasses;
namespace springLegacyAI {
struct UnitDef;
} // namespace springLegacyAI
class CDefenseMatrix {
public:
CR_DECLARE(CDefenseMatrix)
CDefenseMatrix(AIClasses* ai);
void PostLoad();
void Init();
void AddDefense(float3 pos, const UnitDef* def);
void RemoveDefense(float3 pos, const UnitDef* def);
void UpdateChokePointArray();
float3 GetDefensePos(const UnitDef* def, float3 builderpos);
void MaskBadBuildSpot(float3 pos);
std::vector<std::vector<float> > ChokeMapsByMovetype;
std::vector<float> ChokePointArray;
std::vector<int> BuildMaskArray;
private:
bool IsInitialized() const { return (spotFinder != NULL); }
CSpotFinder* spotFinder;
AIClasses* ai;
struct DefPos {
float3 pos;
const UnitDef* def;
};
/**
* Used for defs that get added before the matrix is initialized.
*/
std::vector<DefPos> defAddQueue;
/**
* Used for defs that got removed after AI init
* but before the matrix is initialized.
*/
std::vector<DefPos> defRemoveQueue;
};
#endif