/* $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 .
*/
/**
* @file ai_types.hpp Defines all the types of the game, like IDs of various objects.
*
* IDs are used to identify certain objects. They are only unique within the object type, so for example a vehicle may have VehicleID 2009,
* while a station has StationID 2009 at the same time. Also IDs are assigned arbitrary, you cannot assume them to be consecutive.
* Also note, that some IDs are static and never change, while others are allocated dynamically and might be
* reused for other objects once they are released. So be careful, which IDs you store for which purpose and whether they stay valid all the time.
*
*
* type | object |
* acquired |
* released |
* reused |
* #BridgeID | bridge type |
* introduction \ref newgrf_changes "(1)" |
* never \ref newgrf_changes "(1)" |
* no \ref newgrf_changes "(1)" |
* #CargoID | cargo type |
* game start \ref newgrf_changes "(1)" |
* never \ref newgrf_changes "(1)" |
* no \ref newgrf_changes "(1)" |
* #EngineID | engine type |
* introduction, preview \ref dynamic_engines "(2)" |
* engines retires \ref dynamic_engines "(2)" |
* no \ref dynamic_engines "(2)" |
* #GroupID | vehicle group |
* creation |
* deletion |
* yes |
* #IndustryID | industry |
* construction |
* closure |
* yes |
* #IndustryType | industry type |
* game start \ref newgrf_changes "(1)" |
* never \ref newgrf_changes "(1)" |
* no |
* #SignID | sign |
* construction |
* deletion |
* yes |
* #StationID | station |
* construction |
* expiration of 'grey' station sign after deletion |
* yes |
* #SubsidyID | subsidy |
* offer announcement |
* (offer) expiration |
* yes |
* #TileIndex | tile on map |
* game start |
* never |
* no |
* #TownID | town |
* game start |
* never |
* no |
* #VehicleID | vehicle |
* construction, autorenew, autoreplace |
* destruction, autorenew, autoreplace |
* yes |
*
*
* @remarks
* \li \anchor newgrf_changes (1) in-game changes of newgrfs may reassign/invalidate IDs (will also cause other trouble though).
* \li \anchor dynamic_engines (2) engine IDs are reassigned/invalidated on changing 'allow multiple newgrf engine sets' (only allowed as long as no vehicles are built).
*/
#ifndef AI_TYPES_HPP
#define AI_TYPES_HPP
#include "../../core/overflowsafe_type.hpp"
#include "../../company_type.h"
#include
/* Define all types here, so we don't have to include the whole _type.h maze */
typedef uint BridgeType; ///< Internal name, not of any use for you.
typedef byte CargoID; ///< The ID of a cargo.
class CommandCost; ///< The cost of a command.
typedef uint16 EngineID; ///< The ID of an engine.
typedef uint16 GroupID; ///< The ID of a group.
typedef uint16 IndustryID; ///< The ID of an industry.
typedef uint8 IndustryType; ///< The ID of an industry-type.
typedef OverflowSafeInt64 Money; ///< Money, stored in a 32bit/64bit safe way. For AIs money is always in pounds.
typedef uint16 SignID; ///< The ID of a sign.
typedef uint16 StationID; ///< The ID of a station.
typedef uint16 StringID; ///< The ID of a string.
typedef uint16 SubsidyID; ///< The ID of a subsidy.
typedef uint32 TileIndex; ///< The ID of a tile (just named differently).
typedef uint16 TownID; ///< The ID of a town.
typedef uint32 VehicleID; ///< The ID of a vehicle.
/* Types we defined ourself, as the OpenTTD core doesn't have them (yet) */
typedef uint AIErrorType; ///< The types of errors inside the NoAI framework.
typedef BridgeType BridgeID; ///< The ID of a bridge.
#endif /* AI_TYPES_HPP */