/* $Id$ */ /** @file map_type.h Types related to maps. */ #ifndef MAP_TYPE_H #define MAP_TYPE_H /** * Data that is stored per tile. Also used TileExtended for this. * Look at docs/landscape.html for the exact meaning of the members. */ struct Tile { byte type_height; ///< The type (bits 4..7) and height of the northern corner byte m1; ///< Primarily used for ownership information uint16 m2; ///< Primarily used for indices to towns, industries and stations byte m3; ///< General purpose byte m4; ///< General purpose byte m5; ///< General purpose byte m6; ///< Primarily used for bridges and rainforest/desert }; /** * Data that is stored per tile. Also used Tile for this. * Look at docs/landscape.html for the exact meaning of the members. */ struct TileExtended { byte m7; ///< Primarily used for newgrf support }; /** * An offset value between to tiles. * * This value is used fro the difference between * to tiles. It can be added to a tileindex to get * the resulting tileindex of the start tile applied * with this saved difference. * * @see TileDiffXY(int, int) */ typedef int32 TileIndexDiff; /** * A pair-construct of a TileIndexDiff. * * This can be used to save the difference between to * tiles as a pair of x and y value. */ struct TileIndexDiffC { int16 x; ///< The x value of the coordinate int16 y; ///< The y value of the coordinate }; /** * Approximation of the length of a straight track, relative to a diagonal * track (ie the size of a tile side). * * #defined instead of const so it can * stay integer. (no runtime float operations) Is this needed? * Watch out! There are _no_ brackets around here, to prevent intermediate * rounding! Be careful when using this! * This value should be sqrt(2)/2 ~ 0.7071 */ #define STRAIGHT_TRACK_LENGTH 7071/10000 #endif /* MAP_TYPE_H */