/* * 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 script_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)"
#GoalID goal creation deletion yes
#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 SCRIPT_TYPES_HPP #define SCRIPT_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 GoalID; ///< The ID of a goal. 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 scripts money is always in pounds. typedef uint16 SignID; ///< The ID of a sign. typedef uint16 StationID; ///< The ID of a station. typedef uint32 StringID; ///< The ID of a string. typedef uint16 SubsidyID; ///< The ID of a subsidy. typedef uint16 StoryPageID; ///< The ID of a story page. typedef uint16 StoryPageElementID; ///< The ID of a story page element. 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 ScriptErrorType;///< The types of errors inside the script framework. typedef BridgeType BridgeID; ///< The ID of a bridge. #endif /* SCRIPT_TYPES_HPP */