mirror of
https://github.com/glest/glest-source.git
synced 2025-08-23 00:12:49 +02:00
- added to the faction resource cache pool for even better AI discovery of resources
This commit is contained in:
@@ -615,6 +615,23 @@ void Faction::removeResourceTargetFromCache(const Vec2i &pos) {
|
|||||||
cleanupResourceTypeTargetCache();
|
cleanupResourceTypeTargetCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Faction::addCloseResourceTargetToCache(const Vec2i &pos) {
|
||||||
|
const Map *map = world->getMap();
|
||||||
|
const int harvestDistance = 5;
|
||||||
|
for(int j = -harvestDistance; j <= harvestDistance; ++j) {
|
||||||
|
for(int k = -harvestDistance; k <= harvestDistance; ++k) {
|
||||||
|
Vec2i newPos = pos + Vec2i(j,k);
|
||||||
|
if(map->isInside(newPos.x, newPos.y)) {
|
||||||
|
Resource *r= map->getSurfaceCell(map->toSurfCoords(newPos))->getResource();
|
||||||
|
if(r != NULL) {
|
||||||
|
addResourceTargetToCache(newPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Vec2i Faction::getClosestResourceTypeTargetFromCache(Unit *unit, const ResourceType *type) {
|
Vec2i Faction::getClosestResourceTypeTargetFromCache(Unit *unit, const ResourceType *type) {
|
||||||
Vec2i result(-1);
|
Vec2i result(-1);
|
||||||
if(cacheResourceTargetList.size() > 0) {
|
if(cacheResourceTargetList.size() > 0) {
|
||||||
|
@@ -158,6 +158,7 @@ public:
|
|||||||
|
|
||||||
void addResourceTargetToCache(const Vec2i &pos);
|
void addResourceTargetToCache(const Vec2i &pos);
|
||||||
void removeResourceTargetFromCache(const Vec2i &pos);
|
void removeResourceTargetFromCache(const Vec2i &pos);
|
||||||
|
void addCloseResourceTargetToCache(const Vec2i &pos);
|
||||||
Vec2i getClosestResourceTypeTargetFromCache(Unit *unit, const ResourceType *type);
|
Vec2i getClosestResourceTypeTargetFromCache(Unit *unit, const ResourceType *type);
|
||||||
void cleanupResourceTypeTargetCache();
|
void cleanupResourceTypeTargetCache();
|
||||||
|
|
||||||
|
@@ -521,6 +521,8 @@ void World::moveUnitCells(Unit *unit){
|
|||||||
map.clearUnitCells(unit, unit->getPos());
|
map.clearUnitCells(unit, unit->getPos());
|
||||||
map.putUnitCells(unit, newPos);
|
map.putUnitCells(unit, newPos);
|
||||||
}
|
}
|
||||||
|
// Add resources close by to the faction's cache
|
||||||
|
unit->getFaction()->addCloseResourceTargetToCache(newPos);
|
||||||
|
|
||||||
//water splash
|
//water splash
|
||||||
if(tileset.getWaterEffects() && unit->getCurrField()==fLand){
|
if(tileset.getWaterEffects() && unit->getCurrField()==fLand){
|
||||||
|
Reference in New Issue
Block a user