/* * 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 . */ /** @file map_type.h Types related to maps. */ #ifndef MAP_TYPE_H #define MAP_TYPE_H /** * An offset value between two tiles. * * This value is used for the difference between * two 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_t 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_t x; ///< The x value of the coordinate int16_t y; ///< The y value of the coordinate }; /** Minimal and maximal map width and height */ static const uint MIN_MAP_SIZE_BITS = 6; ///< Minimal size of map is equal to 2 ^ MIN_MAP_SIZE_BITS static const uint MAX_MAP_SIZE_BITS = 12; ///< Maximal size of map is equal to 2 ^ MAX_MAP_SIZE_BITS static const uint MIN_MAP_SIZE = 1U << MIN_MAP_SIZE_BITS; ///< Minimal map size = 64 static const uint MAX_MAP_SIZE = 1U << 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. */ enum LevelMode : uint8_t { LM_LEVEL, ///< Level the land. LM_LOWER, ///< Lower the land. LM_RAISE, ///< Raise the land. }; #endif /* MAP_TYPE_H */