The following commit has been merged in the experimental branch:
commit 98670b4cec77610d91e45c71ffab2a9ca3d6cc51
Merge: adcd9f1156c5509e92ad3ea8140ed78fb27630fa 
05d92050af1902f8b33b5b7cd280bbe7ee441e98
Author: Jan Dittberner <[email protected]>
Date:   Sun Aug 15 15:55:58 2010 +0200

    Merge commit 'upstream/0.82.3+dfsg1' into experimental

diff --combined AI/Skirmish/E323AI/CThreatMap.cpp
index 71671af,1103df5..afc1056
--- a/AI/Skirmish/E323AI/CThreatMap.cpp
+++ b/AI/Skirmish/E323AI/CThreatMap.cpp
@@@ -46,8 -46,9 +46,9 @@@ CThreatMap::~CThreatMap() 
  void CThreatMap::reset() {
        float *map;
        std::map<ThreatMapType,float*>::iterator i;
+       // NOTE: no threat value equals to ONE, not ZERO!
        for (i = maps.begin(); i != maps.end(); i++) {
-               maxPower[i->first] = 0.0f;
+               maxPower[i->first] = 1.0f;
                map = i->second;
                for (int i = 0; i < X*Z; i++)
                        map[i] = 1.0f;
@@@ -69,6 -70,7 +70,7 @@@ float CThreatMap::getThreat(float3 &cen
        if (radius < EPS)
                return map[ID(j,i)];
        
+       int sectorsProcessed = 0;
        int R = ceil(radius / REAL);
        float power = 0.0f;
        for (int z = -R; z <= R; z++) {
@@@ -79,13 -81,22 +81,22 @@@
                
                for (int x = -R; x <= R; x++) {
                        int xx = x+j;
-                       if (xx < X-1 && xx >= 0)
+                       if (xx < X-1 && xx >= 0) {
                                power += map[ID(xx,zz)];
+                               sectorsProcessed++;
+                       }
                }
        }
+ 
+       // calculate number of sectors in R x R...
+       R = 2 * R + 1;
+       R *= R;
+ 
+       // fixing area threat  for map edges...
+       if (sectorsProcessed < R)
+               power += (R - sectorsProcessed);
        
-       //return power/(2.0f*R*M_PI);
-       return power / (R*R*M_PI);
+       return power / R;
  }
  
  float CThreatMap::getThreat(float3 &center, float radius, CGroup *group) {
@@@ -166,7 -177,7 +177,7 @@@ void CThreatMap::update(int frame) 
                        }
                }
                
-               for (tmi = activeTypes.begin(); tmi != activeTypes.end(); 
tmi++) {
+               for (tmi = activeTypes.begin(); tmi != activeTypes.end(); 
++tmi) {
                        maxPower[*tmi] = std::max<float>(power, maxPower[*tmi]);
                }
        }
@@@ -219,4 -230,4 +230,4 @@@ bool CThreatMap::switchDebugMode() 
        if (drawMap >= TMT_LAST)
                drawMap = TMT_NONE;
        return drawMap != TMT_NONE;
 -}
 +}

-- 
advanced 3D real time strategy game engine

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-games-commits

Reply via email to