22 extern "C" _CRTIMP
void __cdecl _assert(
void *,
void *,
unsigned);
47 (size_x & (size_x - 1)) != 0 ||
48 (size_y & (size_y - 1)) != 0) {
49 error(
"Invalid map size");
52 DEBUG(map, 1,
"Allocating map of size %dx%d", size_x, size_y);
71 const char *exp,
const char *file,
int line)
88 seprintf(buf,
lastof(buf),
"TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed",
90 #if !defined(_MSC_VER) || defined(WINCE)
91 fprintf(stderr,
"%s:%d %s\n", file, line, buf);
93 _assert(buf, (
char*)file, line);
118 uint x =
TileX(tile) + addx;
119 uint y =
TileY(tile) + addy;
180 return dx * dx + dy * dy;
211 return dx > dy ? 2 * dx + dy : 2 * dy + dx;
221 const uint xl =
TileX(tile);
222 const uint yl =
TileY(tile);
223 const uint xh =
MapSizeX() - 1 - xl;
224 const uint yh =
MapSizeY() - 1 - yl;
225 const uint minl =
min(xl, yl);
226 const uint minh =
min(xh, yh);
227 return min(minl, minh);
243 default: NOT_REACHED();
262 assert(proc != NULL);
268 if (proc(*tile, user_data))
return true;
300 assert(proc != NULL);
303 uint x =
TileX(*tile) + w + 1;
304 uint y =
TileY(*tile);
308 for (uint n = 0; n < radius; n++) {
311 for (uint j = extent[dir] + n * 2 + 1; j != 0; j--) {
315 if (proc(t, user_data)) {
323 x += _tileoffs_by_diagdir[dir].
x;
324 y += _tileoffs_by_diagdir[dir].
y;
328 x += _tileoffs_by_dir[
DIR_W].
x;
329 y += _tileoffs_by_dir[
DIR_W].
y;
346 uint max_dist = water ? 0x7F : 0x200;
356 for (uint dist = 1; dist < max_dist; dist++) {
362 static const int8 ddx[
DIAGDIR_END] = { -1, 1, 1, -1};
363 static const int8 ddy[
DIAGDIR_END] = { 1, 1, -1, -1};
369 for (uint a = 0; a < dist; a++) {