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
|