# ai_types.hpp File Reference

Defines all the types of the game, like IDs of various objects. More...

`#include "../../core/overflowsafe_type.hpp"`
`#include "../../company_type.h"`

Go to the source code of this file.

## Typedefs
typedef uint | BridgeType
| Internal name, not of any use for you.
typedef byte | CargoID
| The ID of a cargo.
typedef uint16 | EngineID
| The cost of a command.
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 uint32 | TileIndex
| The ID of a tile (just named differently).
typedef uint16 | TownID
| The ID of a town.
typedef uint16 | VehicleID
| The ID of a vehicle.
typedef uint16 | WaypointID
| The ID of a waypoint.
typedef uint | AIErrorType
| The types of errors inside the NoAI framework.
typedef BridgeType | BridgeID
| The ID of a bridge.
typedef uint16 | SubsidyID
| The ID of a subsidy.
typedef struct SQVM * | HSQUIRRELVM
| Pointer to Squirrel Virtual Machine.
typedef int | SQInteger
| Squirrel Integer.
typedef struct SQObject | HSQOBJECT
| Squirrel Object (fake declare).

## Detailed Description

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 (1) | never (1) | no (1)
CargoID | cargo type | game start (1) | never (1) | no (1)
EngineID | engine type | introduction, preview (2) | engines retires (2) | no (2)
GroupID | vehicle group | creation | deletion | yes
IndustryID | industry | construction | closure | yes
IndustryType | industry type | game start (1) | never (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
WaypointID | waypoint | construction | destruction | yes

Remarks:
  - (1) in-game changes of newgrfs may reassign/invalidate IDs (will also cause other trouble though).
  - (2) engine IDs are reassigned/invalidated on changing 'allow multiple newgrf engine sets' (only allowed as long as no vehicles are built).

Definition in file ai_types.hpp.

## Typedef Documentation

typedef uint16 EngineID

The cost of a command.

The ID of an engine.

Definition at line 83 of file ai_types.hpp.