/* $Id$ *//* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. *//** @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. */structTile{bytetype;///< The type (bits 4..7), bridges (2..3), rainforest/desert (0..1)byteheight;///< The height of the northern corner.uint16m2;///< Primarily used for indices to towns, industries and stationsbytem1;///< Primarily used for ownership informationbytem3;///< General purposebytem4;///< General purposebytem5;///< General purpose};assert_compile(sizeof(Tile)==8);/** * Data that is stored per tile. Also used Tile for this. * Look at docs/landscape.html for the exact meaning of the members. */structTileExtended{bytem6;///< General purposebytem7;///< Primarily used for newgrf supportuint16m8;///< General purpose};/** * An offset value between to tiles. * * This value is used for 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) */typedefint32TileIndexDiff;/** * 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. */structTileIndexDiffC{int16x;///< The x value of the coordinateint16y;///< The y value of the coordinate};/** Minimal and maximal map width and height */staticconstuintMIN_MAP_SIZE_BITS=6;///< Minimal size of map is equal to 2 ^ MIN_MAP_SIZE_BITSstaticconstuintMAX_MAP_SIZE_BITS=12;///< Maximal size of map is equal to 2 ^ MAX_MAP_SIZE_BITSstaticconstuintMIN_MAP_SIZE=1<<MIN_MAP_SIZE_BITS;///< Minimal map size = 64staticconstuintMAX_MAP_SIZE=1<<MAX_MAP_SIZE_BITS;///< Maximal map size = 4096/** * 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/** Argument for CmdLevelLand describing what to do. */enumLevelMode{LM_LEVEL,///< Level the land.LM_LOWER,///< Lower the land.LM_RAISE,///< Raise the land.};#endif /* MAP_TYPE_H */