Skip to content

Commit

Permalink
Merge pull request #236 from rlcevg/ai_sensors
Browse files Browse the repository at this point in the history
AI sensors
  • Loading branch information
rtri committed Dec 16, 2015
2 parents 472a393 + 48f455c commit 262dff8
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 57 deletions.
16 changes: 16 additions & 0 deletions rts/ExternalAI/Interface/SSkirmishAICallback.h
Expand Up @@ -1767,6 +1767,13 @@ struct SSkirmishAICallback {
*/
int (CALLING_CONV *Map_getLosMap)(int skirmishAIId, int* losValues, int losValues_sizeMax); //$ ARRAY:losValues

/**
* @brief the level of sight map
* mapDims.mapx >> airMipLevel
* @see getLosMap()
*/
int (CALLING_CONV *Map_getAirLosMap)(int skirmishAIId, int* airLosValues, int airLosValues_sizeMax); //$ ARRAY:airLosValues

/**
* @brief the radar map
* A square with value 0 means you do not have radar coverage on it.
Expand All @@ -1779,6 +1786,12 @@ struct SSkirmishAICallback {
*/
int (CALLING_CONV *Map_getRadarMap)(int skirmishAIId, int* radarValues, int radarValues_sizeMax); //$ ARRAY:radarValues

/** @see getRadarMap() */
int (CALLING_CONV *Map_getSonarMap)(int skirmishAIId, int* sonarValues, int sonarValues_sizeMax); //$ ARRAY:sonarValues

/** @see getRadarMap() */
int (CALLING_CONV *Map_getSeismicMap)(int skirmishAIId, int* seismicValues, int seismicValues_sizeMax); //$ ARRAY:seismicValues

/**
* @brief the radar jammer map
* A square with value 0 means you do not have radar jamming coverage.
Expand All @@ -1791,6 +1804,9 @@ struct SSkirmishAICallback {
*/
int (CALLING_CONV *Map_getJammerMap)(int skirmishAIId, int* jammerValues, int jammerValues_sizeMax); //$ ARRAY:jammerValues

/** @see getJammerMap() */
int (CALLING_CONV *Map_getSonarJammerMap)(int skirmishAIId, int* sonarJammerValues, int sonarJammerValues_sizeMax); //$ ARRAY:sonarJammerValues

/**
* @brief resource maps
* This map shows the resource density on the map.
Expand Down
102 changes: 45 additions & 57 deletions rts/ExternalAI/SSkirmishAICallbackImpl.cpp
Expand Up @@ -1799,62 +1799,47 @@ EXPORT(int) skirmishAiCallback_Map_getSlopeMap(int skirmishAIId,
return slopes_size;
}

EXPORT(int) skirmishAiCallback_Map_getLosMap(int skirmishAIId,
int* losValues, int losValues_sizeMax) {

static const int losValues_sizeReal = losHandler->los.size.x * losHandler->los.size.y;

int losValues_size = losValues_sizeReal;

if (losValues != NULL) {
const unsigned short* tmpMap = skirmishAIId_callback[skirmishAIId]->GetLosMap();
losValues_size = min(losValues_sizeReal, losValues_sizeMax);
int i;
for (i=0; i < losValues_size; ++i) {
losValues[i] = tmpMap[i];
}
}

return losValues_size;
}

EXPORT(int) skirmishAiCallback_Map_getRadarMap(int skirmishAIId,
int* radarValues, int radarValues_sizeMax) {

static const int radarValues_sizeReal = losHandler->radar.size.x * losHandler->radar.size.y;

int radarValues_size = radarValues_sizeReal;

if (radarValues != NULL) {
const unsigned short* tmpMap = skirmishAIId_callback[skirmishAIId]->GetRadarMap();
radarValues_size = min(radarValues_sizeReal, radarValues_sizeMax);
int i;
for (i=0; i < radarValues_size; ++i) {
radarValues[i] = tmpMap[i];
}
}

return radarValues_size;
}

EXPORT(int) skirmishAiCallback_Map_getJammerMap(int skirmishAIId,
int* jammerValues, int jammerValues_sizeMax) {

const int jammerValues_sizeReal = losHandler->jammer.size.x * losHandler->jammer.size.y;

int jammerValues_size = jammerValues_sizeReal;

if (jammerValues != NULL) {
const unsigned short* tmpMap = skirmishAIId_callback[skirmishAIId]->GetJammerMap();
jammerValues_size = min(jammerValues_sizeReal, jammerValues_sizeMax);
int i;
for (i=0; i < jammerValues_size; ++i) {
jammerValues[i] = tmpMap[i];
}
}

return jammerValues_size;
}
#define GET_SENSOR_MAP(name, sensor) \
EXPORT(int) skirmishAiCallback_Map_get##name##Map(int skirmishAIId, \
int* sensor##Values, int sensor##Values_sizeMax) { \
\
static const int sensor##Values_sizeReal = losHandler->sensor.size.x * losHandler->sensor.size.y; \
\
int sensor##Values_size = sensor##Values_sizeReal; \
\
if (sensor##Values != NULL) { \
int teamId = skirmishAIId_teamId[skirmishAIId]; \
const unsigned short* tmpMap = &losHandler->sensor.losMaps[teamHandler->AllyTeam(teamId)].front(); \
sensor##Values_size = min(sensor##Values_sizeReal, sensor##Values_sizeMax); \
int i; \
for (i=0; i < sensor##Values_size; ++i) { \
sensor##Values[i] = tmpMap[i]; \
} \
} \
\
return sensor##Values_size; \
}

// skirmishAiCallback_Map_getLosMap
GET_SENSOR_MAP(Los, los)

// skirmishAiCallback_Map_getAirLosMap
GET_SENSOR_MAP(AirLos, airLos)

// skirmishAiCallback_Map_getRadarMap
GET_SENSOR_MAP(Radar, radar)

// skirmishAiCallback_Map_getSonarMap
GET_SENSOR_MAP(Sonar, sonar)

// skirmishAiCallback_Map_getSeismicMap
GET_SENSOR_MAP(Seismic, seismic)

// skirmishAiCallback_Map_getJammerMap
GET_SENSOR_MAP(Jammer, jammer)

// skirmishAiCallback_Map_getSonarJammerMap
GET_SENSOR_MAP(SonarJammer, sonarJammer)

EXPORT(int) skirmishAiCallback_Map_getResourceMapRaw(
int skirmishAIId, int resourceId, short* resources, int resources_sizeMax) {
Expand Down Expand Up @@ -1944,7 +1929,6 @@ EXPORT(float) skirmishAiCallback_Map_getElevationAt(int skirmishAIId, float x, f
}



EXPORT(float) skirmishAiCallback_Map_getMaxResource(
int skirmishAIId, int resourceId) {

Expand Down Expand Up @@ -5567,8 +5551,12 @@ static void skirmishAiCallback_init(SSkirmishAICallback* callback) {
callback->Map_getMaxHeight = &skirmishAiCallback_Map_getMaxHeight;
callback->Map_getSlopeMap = &skirmishAiCallback_Map_getSlopeMap;
callback->Map_getLosMap = &skirmishAiCallback_Map_getLosMap;
callback->Map_getAirLosMap = &skirmishAiCallback_Map_getAirLosMap;
callback->Map_getRadarMap = &skirmishAiCallback_Map_getRadarMap;
callback->Map_getSonarMap = &skirmishAiCallback_Map_getSonarMap;
callback->Map_getSeismicMap = &skirmishAiCallback_Map_getSeismicMap;
callback->Map_getJammerMap = &skirmishAiCallback_Map_getJammerMap;
callback->Map_getSonarJammerMap = &skirmishAiCallback_Map_getSonarJammerMap;
callback->Map_getResourceMapRaw = &skirmishAiCallback_Map_getResourceMapRaw;
callback->Map_getResourceMapSpotsPositions = &skirmishAiCallback_Map_getResourceMapSpotsPositions;
callback->Map_getResourceMapSpotsAverageIncome = &skirmishAiCallback_Map_getResourceMapSpotsAverageIncome;
Expand Down
8 changes: 8 additions & 0 deletions rts/ExternalAI/SSkirmishAICallbackImpl.h
Expand Up @@ -948,10 +948,18 @@ EXPORT(int ) skirmishAiCallback_Map_getSlopeMap(int skirmishAIId, f

EXPORT(int ) skirmishAiCallback_Map_getLosMap(int skirmishAIId, int* losValues, int losValues_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getAirLosMap(int skirmishAIId, int* airLosValues, int airLosValues_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getRadarMap(int skirmishAIId, int* radarValues, int radarValues_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getSonarMap(int skirmishAIId, int* sonarValues, int sonarValues_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getSeismicMap(int skirmishAIId, int* seismicValues, int seismicValues_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getJammerMap(int skirmishAIId, int* jammerValues, int jammerValues_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getSonarJammerMap(int skirmishAIId, int* sonarJammerValues, int sonarJammerValues_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getResourceMapRaw(int skirmishAIId, int resourceId, short* resources, int resources_sizeMax);

EXPORT(int ) skirmishAiCallback_Map_getResourceMapSpotsPositions(int skirmishAIId, int resourceId, float* spots_AposF3, int spots_AposF3_sizeMax);
Expand Down

0 comments on commit 262dff8

Please sign in to comment.