/* $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 bridge.h Header file for bridges */#ifndef BRIDGE_H#define BRIDGE_H#include"gfx_type.h"#include"tile_cmd.h"/** * This enum is related to the definition of bridge pieces, * which is used to determine the proper sprite table to use * while drawing a given bridge part. */enumBridgePieces{BRIDGE_PIECE_NORTH=0,BRIDGE_PIECE_SOUTH,BRIDGE_PIECE_INNER_NORTH,BRIDGE_PIECE_INNER_SOUTH,BRIDGE_PIECE_MIDDLE_ODD,BRIDGE_PIECE_MIDDLE_EVEN,BRIDGE_PIECE_HEAD,BRIDGE_PIECE_INVALID,};DECLARE_POSTFIX_INCREMENT(BridgePieces)staticconstuintMAX_BRIDGES=13;///< Maximal number of available bridge specs.typedefuintBridgeType;///< Bridge spec number./** * Struct containing information about a single bridge type */structBridgeSpec{Yearavail_year;///< the year where it becomes availablebytemin_length;///< the minimum length (not counting start and end tile)uint16max_length;///< the maximum length (not counting start and end tile)uint16price;///< the price multiplieruint16speed;///< maximum travel speed (1 unit = 1/1.6 mph = 1 km-ish/h)SpriteIDsprite;///< the sprite which is used in the GUIPaletteIDpal;///< the palette which is used in the GUIStringIDmaterial;///< the string that contains the bridge descriptionStringIDtransport_name[2];///< description of the bridge, when built for road or railPalSpriteID**sprite_table;///< table of sprites for drawing the bridgebyteflags;///< bit 0 set: disable drawing of far pillars.};externBridgeSpec_bridge[MAX_BRIDGES];FoundationGetBridgeFoundation(Slopetileh,Axisaxis);boolHasBridgeFlatRamp(Slopetileh,Axisaxis);/** * Get the specification of a bridge type. * @param i The type of bridge to get the specification for. * @return The specification. */staticinlineconstBridgeSpec*GetBridgeSpec(BridgeTypei){assert(i<lengthof(_bridge));return&_bridge[i];}voidDrawBridgeMiddle(constTileInfo*ti);CommandCostCheckBridgeAvailability(BridgeTypebridge_type,uintbridge_len,DoCommandFlagflags=DC_NONE);intCalcBridgeLenCostFactor(intx);voidResetBridges();#endif /* BRIDGE_H */