> I don't know about all the places which initialize a gradient, but if
> gradients are really initiallized with different values, I think this
> is a bug. (listedAddr would no more be guaranteed to be big enough
> because fields could be listed more than once)

Ok.  I now I'm sure.
I have changed Map.cpp to print out errors when former and present g
differ two much.

in updateGlobalGradientVersionSimple:

Uint8 oldg=0;
while ( ... )
{
...
Uint8 g = gradient[(y << wDec) | x] - 1; 
if ( (oldg != 0) && (oldg != g) && (oldg != g+1)) 
        std::cerr << "oldg: " << (int) oldg << "g: " << (int) g << std::endl; 
oldg = g; 
...
}

Then I started A Big Pond with one AI in my team and one in the other,
saved the game and started glob2 again with -nox and this saved game.
After a minute or so I got a lot of output like:

...
oldg: 137g: 138
oldg: 138g: 136
oldg: 136g: 137
...

I attach this change as a patch and copy this mail to the bug tracker.

2199a2200
> 	Uint8 oldg = 0;
2213a2215,2218
> 		if ( (oldg != 0) && (oldg != g) && (oldg != g+1))
> 			std::cerr << "oldg: " << (int) oldg << "g: " << (int) g << std::endl;
> 		oldg = g;
> 			
-- 
Kai Antweiler
_______________________________________________
glob2-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/glob2-devel

Reply via email to