src/map_func.h
author rubidium
Fri, 04 Jul 2008 19:00:11 +0000
changeset 11118 f66e0a4ce878
parent 11075 1acf0ed0da9d
permissions -rw-r--r--
(svn r13676) -Fix [FS#2126]: inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     2
10429
1b99254f9607 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 8887
diff changeset
     3
/** @file map_func.h Functions related to maps. */
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
     4
8635
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
     5
#ifndef MAP_FUNC_H
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
     6
#define MAP_FUNC_H
679
e959706a3e4d (svn r1117) Move map arrays and some related macros into their own files map.c and map.h
tron
parents:
diff changeset
     7
8635
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
     8
#include "tile_type.h"
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
     9
#include "map_type.h"
8596
27646407e0bc (svn r11661) -Codechange: some header reworks in order to try to reduce the compile time of OpenTTD by reduce the amount of circular-ish dependencies.
rubidium
parents: 8137
diff changeset
    10
#include "direction_func.h"
1210
05975e9167c4 (svn r1714) Add missing include
tron
parents: 1209
diff changeset
    11
2051
44b6b091beb3 (svn r2560) Fix: various minor code changes.
ludde
parents: 2049
diff changeset
    12
extern uint _map_tile_mask;
7036
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    13
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    14
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    15
 * 'Wraps' the given tile to it is within the map. It does
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    16
 * this by masking the 'high' bits of.
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    17
 * @param x the tile to 'wrap'
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    18
 */
2051
44b6b091beb3 (svn r2560) Fix: various minor code changes.
ludde
parents: 2049
diff changeset
    19
44b6b091beb3 (svn r2560) Fix: various minor code changes.
ludde
parents: 2049
diff changeset
    20
#define TILE_MASK(x) ((x) & _map_tile_mask)
7036
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    21
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    22
 * Asserts when the tile is outside of the map.
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    23
 * @param x the tile to check
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    24
 */
1394
449e84bdc04e (svn r1898) Remove some unused macros from macros.h and move some others to more appropriate headers
tron
parents: 1330
diff changeset
    25
#define TILE_ASSERT(x) assert(TILE_MASK(x) == (x));
926
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
    26
7036
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    27
/**
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    28
 * Pointer to the tile-array.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    29
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    30
 * This variable points to the tile-array which contains the tiles of
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    31
 * the map.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    32
 */
6658
59048224be55 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6574
diff changeset
    33
extern Tile *_m;
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    34
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    35
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    36
 * Pointer to the extended tile-array.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    37
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    38
 * This variable points to the extended tile-array which contains the tiles
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    39
 * of the map.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    40
 */
6658
59048224be55 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6574
diff changeset
    41
extern TileExtended *_me;
1218
353a7773bc3c (svn r1722) -Feature: Bigger maps - anyone?
tron
parents: 1210
diff changeset
    42
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    43
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    44
 * Allocate a new map with the given size.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
    45
 */
2051
44b6b091beb3 (svn r2560) Fix: various minor code changes.
ludde
parents: 2049
diff changeset
    46
void AllocateMap(uint size_x, uint size_y);
44b6b091beb3 (svn r2560) Fix: various minor code changes.
ludde
parents: 2049
diff changeset
    47
7036
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    48
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    49
 * Logarithm of the map size along the X side.
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    50
 * @note try to avoid using this one
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    51
 * @return 2^"return value" == MapSizeX()
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    52
 */
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    53
static inline uint MapLogX()
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    54
{
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    55
	extern uint _map_log_x;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    56
	return _map_log_x;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    57
}
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    58
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    59
/**
8887
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    60
 * Logarithm of the map size along the y side.
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    61
 * @note try to avoid using this one
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    62
 * @return 2^"return value" == MapSizeY()
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    63
 */
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    64
static inline uint MapLogY()
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    65
{
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    66
	extern uint _map_log_y;
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    67
	return _map_log_y;
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    68
}
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    69
4bc5c9811562 (svn r11961) -Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size.
belugas
parents: 8876
diff changeset
    70
/**
7036
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    71
 * Get the size of the map along the X
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    72
 * @return the number of tiles along the X of the map
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    73
 */
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    74
static inline uint MapSizeX()
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    75
{
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    76
	extern uint _map_size_x;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    77
	return _map_size_x;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    78
}
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    79
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    80
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    81
 * Get the size of the map along the Y
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    82
 * @return the number of tiles along the Y of the map
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    83
 */
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    84
static inline uint MapSizeY()
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    85
{
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    86
	extern uint _map_size_y;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    87
	return _map_size_y;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    88
}
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    89
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    90
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    91
 * Get the size of the map
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    92
 * @return the number of tiles of the map
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    93
 */
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    94
static inline uint MapSize()
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    95
{
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    96
	extern uint _map_size;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    97
	return _map_size;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    98
}
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
    99
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   100
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   101
 * Gets the maximum X coordinate within the map, including MP_VOID
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   102
 * @return the maximum X coordinate
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   103
 */
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   104
static inline uint MapMaxX()
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   105
{
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   106
	return MapSizeX() - 1;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   107
}
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   108
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   109
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   110
 * Gets the maximum X coordinate within the map, including MP_VOID
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   111
 * @return the maximum X coordinate
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   112
 */
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   113
static inline uint MapMaxY()
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   114
{
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   115
	return MapSizeY() - 1;
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   116
}
689
1412bc834a8d (svn r1130) Add helper functions to query map size
tron
parents: 679
diff changeset
   117
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   118
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   119
 * Scales relative to the number of tiles.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   120
 */
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   121
uint ScaleByMapSize(uint);
1202
7d8b86bd8ba2 (svn r1706) Implement ScaleByMapSize() and ScaleByMapSize1D()
tron
parents: 1174
diff changeset
   122
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   123
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   124
 * Scale relative to the circumference of the map.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   125
 */
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   126
uint ScaleByMapSize1D(uint);
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   127
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   128
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   129
 * An offset value between to tiles.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   130
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   131
 * This value is used fro the difference between
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   132
 * to tiles. It can be added to a tileindex to get
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   133
 * the resulting tileindex of the start tile applied
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   134
 * with this saved difference.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   135
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   136
 * @see TileDiffXY(int, int)
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   137
 */
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   138
typedef int32 TileIndexDiff;
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   139
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   140
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   141
 * Returns the TileIndex of a coordinate.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   142
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   143
 * @param x The x coordinate of the tile
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   144
 * @param y The y coordinate of the tile
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   145
 * @return The TileIndex calculated by the coordinate
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   146
 */
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   147
static inline TileIndex TileXY(uint x, uint y)
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   148
{
2051
44b6b091beb3 (svn r2560) Fix: various minor code changes.
ludde
parents: 2049
diff changeset
   149
	return (y * MapSizeX()) + x;
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   150
}
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   151
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   152
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   153
 * Calculates an offset for the given coordinate(-offset).
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   154
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   155
 * This function calculate an offset value which can be added to an
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   156
 * #TileIndex. The coordinates can be negative.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   157
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   158
 * @param x The offset in x direction
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   159
 * @param y The offset in y direction
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   160
 * @return The resulting offset value of the given coordinate
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   161
 * @see ToTileIndexDiff(TileIndexDiffC)
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   162
 */
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   163
static inline TileIndexDiff TileDiffXY(int x, int y)
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   164
{
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   165
	/* Multiplication gives much better optimization on MSVC than shifting.
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   166
	 * 0 << shift isn't optimized to 0 properly.
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   167
	 * Typically x and y are constants, and then this doesn't result
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   168
	 * in any actual multiplication in the assembly code.. */
2051
44b6b091beb3 (svn r2560) Fix: various minor code changes.
ludde
parents: 2049
diff changeset
   169
	return (y * MapSizeX()) + x;
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   170
}
1330
8a67d04016ce (svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents: 1247
diff changeset
   171
1980
9ea0c89fbb58 (svn r2486) Turn TILE_FROM_XY into an inline function and rename it to TileVirtXY
tron
parents: 1977
diff changeset
   172
static inline TileIndex TileVirtXY(uint x, uint y)
9ea0c89fbb58 (svn r2486) Turn TILE_FROM_XY into an inline function and rename it to TileVirtXY
tron
parents: 1977
diff changeset
   173
{
9ea0c89fbb58 (svn r2486) Turn TILE_FROM_XY into an inline function and rename it to TileVirtXY
tron
parents: 1977
diff changeset
   174
	return (y >> 4 << MapLogX()) + (x >> 4);
9ea0c89fbb58 (svn r2486) Turn TILE_FROM_XY into an inline function and rename it to TileVirtXY
tron
parents: 1977
diff changeset
   175
}
9ea0c89fbb58 (svn r2486) Turn TILE_FROM_XY into an inline function and rename it to TileVirtXY
tron
parents: 1977
diff changeset
   176
1330
8a67d04016ce (svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents: 1247
diff changeset
   177
7036
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   178
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   179
 * Get the X component of a tile
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   180
 * @param tile the tile to get the X component of
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   181
 * @return the X component
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   182
 */
926
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   183
static inline uint TileX(TileIndex tile)
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   184
{
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   185
	return tile & MapMaxX();
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   186
}
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   187
7036
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   188
/**
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   189
 * Get the Y component of a tile
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   190
 * @param tile the tile to get the Y component of
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   191
 * @return the Y component
9f23930e7ded (svn r9729) -Documentation: add some documentation in various places
rubidium
parents: 6987
diff changeset
   192
 */
926
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   193
static inline uint TileY(TileIndex tile)
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   194
{
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   195
	return tile >> MapLogX();
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   196
}
bd4312619522 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents: 909
diff changeset
   197
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   198
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   199
 * Return the offset between to tiles from a TileIndexDiffC struct.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   200
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   201
 * This function works like #TileDiffXY(int, int) and returns the
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   202
 * difference between two tiles.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   203
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   204
 * @param tidc The coordinate of the offset as TileIndexDiffC
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   205
 * @return The difference between two tiles.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   206
 * @see TileDiffXY(int, int)
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   207
 */
909
81bc9ef93f50 (svn r1396) Introduce TileIndexDiffC - the compile time version of TileIndexDiff
tron
parents: 900
diff changeset
   208
static inline TileIndexDiff ToTileIndexDiff(TileIndexDiffC tidc)
81bc9ef93f50 (svn r1396) Introduce TileIndexDiffC - the compile time version of TileIndexDiff
tron
parents: 900
diff changeset
   209
{
81bc9ef93f50 (svn r1396) Introduce TileIndexDiffC - the compile time version of TileIndexDiff
tron
parents: 900
diff changeset
   210
	return (tidc.y << MapLogX()) + tidc.x;
81bc9ef93f50 (svn r1396) Introduce TileIndexDiffC - the compile time version of TileIndexDiff
tron
parents: 900
diff changeset
   211
}
900
feed1801fd35 (svn r1386) Move TileIndexDiff to map.h
tron
parents: 863
diff changeset
   212
955
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   213
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   214
#ifndef _DEBUG
8635
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   215
	/**
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   216
	 * Adds to tiles together.
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   217
	 *
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   218
	 * @param x One tile
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   219
	 * @param y An other tile to add
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   220
	 * @return The resulting tile(index)
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   221
	 */
955
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   222
	#define TILE_ADD(x,y) ((x) + (y))
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   223
#else
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   224
	extern TileIndex TileAdd(TileIndex tile, TileIndexDiff add,
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   225
		const char *exp, const char *file, int line);
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   226
	#define TILE_ADD(x, y) (TileAdd((x), (y), #x " + " #y, __FILE__, __LINE__))
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   227
#endif
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   228
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   229
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   230
 * Adds a given offset to a tile.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   231
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   232
 * @param tile The tile to add an offset on it
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   233
 * @param x The x offset to add to the tile
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   234
 * @param y The y offset to add to the tile
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   235
 */
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   236
#define TILE_ADDXY(tile, x, y) TILE_ADD(tile, TileDiffXY(x, y))
955
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   237
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   238
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   239
 * Adds an offset to a tile and check if we are still on the map.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   240
 */
8827
d125b82b86f4 (svn r11897) -Fix: Replace an uint with TileIndex and a small coding style fix.
frosch
parents: 8635
diff changeset
   241
TileIndex TileAddWrap(TileIndex tile, int addx, int addy);
1247
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   242
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   243
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   244
 * Returns the TileIndexDiffC offset from a DiagDirection.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   245
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   246
 * @param dir The given direction
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   247
 * @return The offset as TileIndexDiffC value
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   248
 */
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   249
static inline TileIndexDiffC TileIndexDiffCByDiagDir(DiagDirection dir)
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   250
{
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   251
	extern const TileIndexDiffC _tileoffs_by_diagdir[DIAGDIR_END];
4561
0779e5c11331 (svn r6408) -Fix(r6406): compilation was broken
glx
parents: 4559
diff changeset
   252
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   253
	assert(IsValidDiagDirection(dir));
4561
0779e5c11331 (svn r6408) -Fix(r6406): compilation was broken
glx
parents: 4559
diff changeset
   254
	return _tileoffs_by_diagdir[dir];
1247
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   255
}
8635
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   256
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   257
/**
8876
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   258
 * Returns the TileIndexDiffC offset from a Direction.
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   259
 *
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   260
 * @param dir The given direction
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   261
 * @return The offset as TileIndexDiffC value
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   262
 */
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   263
static inline TileIndexDiffC TileIndexDiffCByDir(Direction dir)
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   264
{
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   265
	extern const TileIndexDiffC _tileoffs_by_dir[DIR_END];
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   266
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   267
	assert(IsValidDirection(dir));
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   268
	return _tileoffs_by_dir[dir];
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   269
}
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   270
a0b7938c6082 (svn r11947) -Feature: Make use of new sprites added by Action5 type 0D.
frosch
parents: 8844
diff changeset
   271
/**
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   272
 * Add a TileIndexDiffC to a TileIndex and returns the new one.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   273
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   274
 * Returns tile + the diff given in diff. If the result tile would end up
1247
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   275
 * outside of the map, INVALID_TILE is returned instead.
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   276
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   277
 * @param tile The base tile to add the offset on
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   278
 * @param diff The offset to add on the tile
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   279
 * @return The resulting TileIndex
1247
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   280
 */
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   281
static inline TileIndex AddTileIndexDiffCWrap(TileIndex tile, TileIndexDiffC diff)
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   282
{
1247
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   283
	int x = TileX(tile) + diff.x;
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   284
	int y = TileY(tile) + diff.y;
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   285
	if (x < 0 || y < 0 || x > (int)MapMaxX() || y > (int)MapMaxY())
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   286
		return INVALID_TILE;
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   287
	else
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1980
diff changeset
   288
		return TileXY(x, y);
1247
01711347f9ac (svn r1751) - Feature: New PathFinder (NPF).
matthijs
parents: 1245
diff changeset
   289
}
955
25bc5b97e3e2 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic
tron
parents: 927
diff changeset
   290
7067
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   291
/**
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   292
 * Returns the diff between two tiles
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   293
 *
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   294
 * @param tile_a from tile
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   295
 * @param tile_b to tile
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   296
 * @return the difference between tila_a and tile_b
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   297
 */
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   298
static inline TileIndexDiffC TileIndexToTileIndexDiffC(TileIndex tile_a, TileIndex tile_b)
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   299
{
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   300
	TileIndexDiffC difference;
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   301
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   302
	difference.x = TileX(tile_a) - TileX(tile_b);
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   303
	difference.y = TileY(tile_a) - TileY(tile_b);
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   304
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   305
	return difference;
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   306
}
ea55b6046015 (svn r9779) -Feature: Add the possiblity to choose different road patterns for towns to use.
belugas
parents: 7036
diff changeset
   307
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   308
/* Functions to calculate distances */
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   309
uint DistanceManhattan(TileIndex, TileIndex); ///< also known as L1-Norm. Is the shortest distance one could go over diagonal tracks (or roads)
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   310
uint DistanceSquare(TileIndex, TileIndex); ///< euclidian- or L2-Norm squared
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   311
uint DistanceMax(TileIndex, TileIndex); ///< also known as L-Infinity-Norm
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   312
uint DistanceMaxPlusManhattan(TileIndex, TileIndex); ///< Max + Manhattan
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 5847
diff changeset
   313
uint DistanceFromEdge(TileIndex); ///< shortest distance from any edge of the map
1245
768d9bc95aaa (svn r1749) Move the functions which calculate distances to map.[ch] and give the more meaningful names
tron
parents: 1218
diff changeset
   314
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   315
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   316
 * Starts a loop which iterates to a square of tiles
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   317
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   318
 * This macro starts 2 nested loops which iterates over a square of tiles.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   319
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   320
 * @param var The name of the variable which contains the current tile
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   321
 * @param w The width (x-width) of the square
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   322
 * @param h The heigth (y-width) of the square
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   323
 * @param tile The start tile of the square
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   324
 */
6987
b0f13039bda2 (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6658
diff changeset
   325
#define BEGIN_TILE_LOOP(var, w, h, tile)                      \
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   326
	{                                                        \
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   327
		int h_cur = h;                                         \
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   328
		uint var = tile;                                       \
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   329
		do {                                                   \
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   330
			int w_cur = w;                                       \
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   331
			do {
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   332
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   333
 * Ends the square-loop used before
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   334
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   335
 * @see BEGIN_TILE_LOOP
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   336
 */
6987
b0f13039bda2 (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6658
diff changeset
   337
#define END_TILE_LOOP(var, w, h, tile)                        \
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   338
			} while (++var, --w_cur != 0);                       \
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   339
		} while (var += TileDiffXY(0, 1) - (w), --h_cur != 0); \
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   340
	}
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   341
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   342
 * Convert a DiagDirection to a TileIndexDiff
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   343
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   344
 * @param dir The DiagDirection
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   345
 * @return The resulting TileIndexDiff
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   346
 * @see TileIndexDiffCByDiagDir
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   347
 */
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   348
static inline TileIndexDiff TileOffsByDiagDir(DiagDirection dir)
4559
c853d2440065 (svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents: 4344
diff changeset
   349
{
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   350
	extern const TileIndexDiffC _tileoffs_by_diagdir[DIAGDIR_END];
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2051
diff changeset
   351
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   352
	assert(IsValidDiagDirection(dir));
4559
c853d2440065 (svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents: 4344
diff changeset
   353
	return ToTileIndexDiff(_tileoffs_by_diagdir[dir]);
c853d2440065 (svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents: 4344
diff changeset
   354
}
c853d2440065 (svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents: 4344
diff changeset
   355
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   356
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   357
 * Convert a Direction to a TileIndexDiff.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   358
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   359
 * @param dir The direction to convert from
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   360
 * @return The resulting TileIndexDiff
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   361
 */
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   362
static inline TileIndexDiff TileOffsByDir(Direction dir)
900
feed1801fd35 (svn r1386) Move TileIndexDiff to map.h
tron
parents: 863
diff changeset
   363
{
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   364
	extern const TileIndexDiffC _tileoffs_by_dir[DIR_END];
900
feed1801fd35 (svn r1386) Move TileIndexDiff to map.h
tron
parents: 863
diff changeset
   365
7813
49fbe41f8a04 (svn r10672) -Codechange: typify some parameters/variables.
rubidium
parents: 7067
diff changeset
   366
	assert(IsValidDirection(dir));
909
81bc9ef93f50 (svn r1396) Introduce TileIndexDiffC - the compile time version of TileIndexDiff
tron
parents: 900
diff changeset
   367
	return ToTileIndexDiff(_tileoffs_by_dir[dir]);
900
feed1801fd35 (svn r1386) Move TileIndexDiff to map.h
tron
parents: 863
diff changeset
   368
}
feed1801fd35 (svn r1386) Move TileIndexDiff to map.h
tron
parents: 863
diff changeset
   369
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   370
/**
8137
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   371
 * Adds a DiagDir to a tile.
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   372
 *
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   373
 * @param tile The current tile
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   374
 * @param dir The direction in which we want to step
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   375
 * @return the moved tile
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   376
 */
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   377
static inline TileIndex TileAddByDiagDir(TileIndex tile, DiagDirection dir)
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   378
{
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   379
	return TILE_ADD(tile, TileOffsByDiagDir(dir));
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   380
}
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   381
67a9579abd74 (svn r11172) -Codechange: rewrite of town road building and addition of the possibility to clean up unconnected road bits during the local road reconstructions. Based on a patch by skidd13.
rubidium
parents: 8042
diff changeset
   382
/**
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   383
 * A callback function type for searching tiles.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   384
 *
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   385
 * @param tile The tile to test
11075
1acf0ed0da9d (svn r13632) -Codechange: Use 'void *' for user-data of CircularTileSearch().
frosch
parents: 10816
diff changeset
   386
 * @param user_data additional data for the callback function to use
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   387
 * @return A boolean value, depend on the definition of the function.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   388
 */
11075
1acf0ed0da9d (svn r13632) -Codechange: Use 'void *' for user-data of CircularTileSearch().
frosch
parents: 10816
diff changeset
   389
typedef bool TestTileOnSearchProc(TileIndex tile, void *user_data);
8042
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   390
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   391
/**
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   392
 * Searches for some cirumstances of a tile around a given tile with a helper function.
1ccbcf3295b5 (svn r11066) -Documentation [FS#1091]: of map.*. Patch by Progman.
rubidium
parents: 7813
diff changeset
   393
 */
11075
1acf0ed0da9d (svn r13632) -Codechange: Use 'void *' for user-data of CircularTileSearch().
frosch
parents: 10816
diff changeset
   394
bool CircularTileSearch(TileIndex *tile, uint size, TestTileOnSearchProc proc, void *user_data);
5118
5a56a0f12206 (svn r7198) -Codechange: Implement a circular tile search function.
belugas
parents: 4849
diff changeset
   395
8635
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   396
/**
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   397
 * Get a random tile out of a given seed.
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   398
 * @param r the random 'seed'
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   399
 * @return a valid tile
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   400
 */
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   401
static inline TileIndex RandomTileSeed(uint32 r)
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   402
{
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   403
	return TILE_MASK(r);
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   404
}
1677
c18884ca76d5 (svn r2181) - Add: DistanceTrack() to calculate the distance over optimally laid out tracks.
matthijs
parents: 1433
diff changeset
   405
8635
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   406
/**
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   407
 * Get a valid random tile.
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   408
 * @note a define so 'random' gets inserted in the place where it is actually
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   409
 *       called, thus making the random traces more explicit.
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   410
 * @return a valid tile
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   411
 */
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   412
#define RandomTile() RandomTileSeed(Random())
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   413
3bbb6f87fced (svn r11701) -Codechange: removal unnecessary inclusions of map.h (and split map.h).
rubidium
parents: 8634
diff changeset
   414
#endif /* MAP_FUNC_H */