- added new over-ridable minimum spacing between buildings for the AI player
This commit is contained in:
parent
d16396db0a
commit
a23a9396c2
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue