9723
|
1 |
/* $Id$ */
|
|
2 |
|
|
3 |
/** @file map_type.h Types related to maps. */
|
|
4 |
|
|
5 |
#ifndef MAP_TYPE_H
|
|
6 |
#define MAP_TYPE_H
|
|
7 |
|
|
8 |
/**
|
|
9 |
* Data that is stored per tile. Also used TileExtended for this.
|
|
10 |
* Look at docs/landscape.html for the exact meaning of the members.
|
|
11 |
*/
|
|
12 |
struct Tile {
|
|
13 |
byte type_height; ///< The type (bits 4..7) and height of the northern corner
|
|
14 |
byte m1; ///< Primarily used for ownership information
|
|
15 |
uint16 m2; ///< Primarily used for indices to towns, industries and stations
|
|
16 |
byte m3; ///< General purpose
|
|
17 |
byte m4; ///< General purpose
|
|
18 |
byte m5; ///< General purpose
|
|
19 |
byte m6; ///< Primarily used for bridges and rainforest/desert
|
|
20 |
};
|
|
21 |
|
|
22 |
/**
|
|
23 |
* Data that is stored per tile. Also used Tile for this.
|
|
24 |
* Look at docs/landscape.html for the exact meaning of the members.
|
|
25 |
*/
|
|
26 |
struct TileExtended {
|
|
27 |
byte m7; ///< Primarily used for newgrf support
|
|
28 |
};
|
|
29 |
|
|
30 |
/**
|
|
31 |
* An offset value between to tiles.
|
|
32 |
*
|
|
33 |
* This value is used fro the difference between
|
|
34 |
* to tiles. It can be added to a tileindex to get
|
|
35 |
* the resulting tileindex of the start tile applied
|
|
36 |
* with this saved difference.
|
|
37 |
*
|
|
38 |
* @see TileDiffXY(int, int)
|
|
39 |
*/
|
|
40 |
typedef int32 TileIndexDiff;
|
|
41 |
|
|
42 |
/**
|
|
43 |
* A pair-construct of a TileIndexDiff.
|
|
44 |
*
|
|
45 |
* This can be used to save the difference between to
|
|
46 |
* tiles as a pair of x and y value.
|
|
47 |
*/
|
|
48 |
struct TileIndexDiffC {
|
|
49 |
int16 x; ///< The x value of the coordinate
|
|
50 |
int16 y; ///< The y value of the coordinate
|
|
51 |
};
|
|
52 |
|
|
53 |
/**
|
|
54 |
* Approximation of the length of a straight track, relative to a diagonal
|
|
55 |
* track (ie the size of a tile side).
|
|
56 |
*
|
|
57 |
* #defined instead of const so it can
|
|
58 |
* stay integer. (no runtime float operations) Is this needed?
|
|
59 |
* Watch out! There are _no_ brackets around here, to prevent intermediate
|
|
60 |
* rounding! Be careful when using this!
|
|
61 |
* This value should be sqrt(2)/2 ~ 0.7071
|
|
62 |
*/
|
|
63 |
#define STRAIGHT_TRACK_LENGTH 7071/10000
|
|
64 |
|
|
65 |
#endif /* MAP_TYPE_H */
|