- added new over-ridable minimum spacing between buildings for the AI player

This commit is contained in:
Mark Vejvoda 2012-04-02 16:11:13 +00:00
parent d16396db0a
commit a23a9396c2
3 changed files with 10 additions and 4 deletions

View File

@ -281,6 +281,10 @@ void Ai::init(AiInterface *aiInterface, int useStartLocation) {
minWorkerAttackersHarvesting = faction->getAIBehaviorStaticOverideValue(aibsvcMinWorkerAttackersHarvesting);
//printf("Discovered overriden static value for AI, scoutResourceRange = %d\n",scoutResourceRange);
}
if(faction->getAIBehaviorStaticOverideValue(aibsvcMinWorkerAttackersHarvesting) != INT_MAX) {
minBuildSpacing = faction->getAIBehaviorStaticOverideValue(aibsvcMinWorkerAttackersHarvesting);
//printf("Discovered overriden static value for AI, scoutResourceRange = %d\n",scoutResourceRange);
}
if(useStartLocation == -1) {
startLoc = random.randRange(0, aiInterface->getMapMaxPlayers()-1);
@ -631,13 +635,11 @@ bool Ai::findAbleUnit(int *unitIndex, CommandClass ability, CommandClass current
bool Ai::findPosForBuilding(const UnitType* building, const Vec2i &searchPos, Vec2i &outPos){
const int spacing= 1;
for(int currRadius = 0; currRadius < maxBuildRadius; ++currRadius) {
for(int i=searchPos.x - currRadius; i < searchPos.x + currRadius; ++i) {
for(int j=searchPos.y - currRadius; j < searchPos.y + currRadius; ++j) {
outPos= Vec2i(i, j);
if(aiInterface->isFreeCells(outPos - Vec2i(spacing), building->getSize() + spacing * 2, fLand)) {
if(aiInterface->isFreeCells(outPos - Vec2i(minBuildSpacing), building->getSize() + minBuildSpacing * 2, fLand)) {
return true;
}
}

View File

@ -142,6 +142,7 @@ private:
int villageRadius;
int scoutResourceRange;
int minWorkerAttackersHarvesting;
int minBuildSpacing;
public:
enum ResourceUsage {
@ -183,6 +184,7 @@ public:
villageRadius = 15;
scoutResourceRange = 20;
minWorkerAttackersHarvesting = 3;
minBuildSpacing = 1;
aiInterface = NULL;
startLoc = -1;

View File

@ -48,7 +48,8 @@ enum AIBehaviorStaticValueCategory {
aibsvcVillageRadius,
aibsvcMinStaticResourceCount,
aibsvcScoutResourceRange,
aibsvcMinWorkerAttackersHarvesting
aibsvcMinWorkerAttackersHarvesting,
aibsvcMinBuildSpacing
};
template <>
inline EnumParser<AIBehaviorStaticValueCategory>::EnumParser() {
@ -64,6 +65,7 @@ inline EnumParser<AIBehaviorStaticValueCategory>::EnumParser() {
enumMap["MinStaticResourceCount"] = aibsvcMinStaticResourceCount;
enumMap["ScoutResourceRange"] = aibsvcScoutResourceRange;
enumMap["MinWorkerAttackersHarvesting"] = aibsvcMinWorkerAttackersHarvesting;
enumMap["MinBuildSpacing"] = aibsvcMinBuildSpacing;
}
class FactionType {