OpenTTD Source: src/newgrf_object.h File Reference

OpenTTD Source 13.2.1

Data Structures | Typedefs | Enumerations | Functions | Variables
newgrf_object.h File Reference
`#include "newgrf_callbacks.h"`
`#include "newgrf_spritegroup.h"`
`#include "newgrf_town.h"`
`#include "economy_func.h"`
`#include "date_type.h"`
`#include "object_type.h"`
`#include "newgrf_animation_type.h"`
`#include "newgrf_class.h"`
`#include "newgrf_commons.h"`

Go to the source code of this file.

## Data Structures
struct | ObjectSpec
| Allow incrementing of ObjectClassID variables. More...
struct | ObjectScopeResolver
| Object scope resolver. More...
struct | ObjectResolverObject
| A resolver object to be used with feature 0F spritegroups. More...

## Typedefs
typedef NewGRFClass< ObjectSpec, ObjectClassID, OBJECT_CLASS_MAX > | ObjectClass
| Struct containing information relating to object classes.

## Enumerations
enum | ObjectFlags { OBJECT_FLAG_NONE = 0, OBJECT_FLAG_ONLY_IN_SCENEDIT = 1 << 0, OBJECT_FLAG_CANNOT_REMOVE = 1 << 1, OBJECT_FLAG_AUTOREMOVE = 1 << 2, OBJECT_FLAG_BUILT_ON_WATER = 1 << 3, OBJECT_FLAG_CLEAR_INCOME = 1 << 4, OBJECT_FLAG_HAS_NO_FOUNDATION = 1 << 5, OBJECT_FLAG_ANIMATION = 1 << 6, OBJECT_FLAG_ONLY_IN_GAME = 1 << 7, OBJECT_FLAG_2CC_COLOUR = 1 << 8, OBJECT_FLAG_NOT_ON_LAND = 1 << 9, OBJECT_FLAG_DRAW_WATER = 1 << 10, OBJECT_FLAG_ALLOW_UNDER_BRIDGE = 1 << 11, OBJECT_FLAG_ANIM_RANDOM_BITS = 1 << 12, OBJECT_FLAG_SCALE_BY_WATER = 1 << 13 }
| Various object behaviours. More...
enum | ObjectClassID { OBJECT_CLASS_BEGIN = 0, OBJECT_CLASS_MAX = 0xFF, INVALID_OBJECT_CLASS = 0xFF }
| Class IDs for objects. More...

## Functions
void | ResetObjects ()
| This function initialize the spec arrays of objects.
uint16 | GetObjectCallback (CallbackID callback, uint32 param1, uint32 param2, const ObjectSpec *spec, Object *o, TileIndex tile, uint8 view=0)
| Perform a callback for an object. More...
void | DrawNewObjectTile (TileInfo *ti, const ObjectSpec *spec)
| Draw an object on the map. More...
void | DrawNewObjectTileInGUI (int x, int y, const ObjectSpec *spec, uint8 view)
| Draw representation of an object (tile) for GUI purposes. More...
void | AnimateNewObjectTile (TileIndex tile)
| Handle the animation of the object tile. More...
void | TriggerObjectTileAnimation (Object *o, TileIndex tile, ObjectAnimationTrigger trigger, const ObjectSpec *spec)
| Trigger the update of animation on a single tile. More...
void | TriggerObjectAnimation (Object *o, ObjectAnimationTrigger trigger, const ObjectSpec *spec)
| Trigger the update of animation on a whole object. More...

## Variables
static const uint8 | OBJECT_SIZE_1X1 = 0x11
| The value of a NewGRF's size property when the object is 1x1 tiles: low nibble for X, high nibble for Y.
static const CargoID | CT_PURCHASE_OBJECT = 1
| Mapping of purchase for objects.

## Detailed Description

Functions related to NewGRF objects.

Definition in file newgrf_object.h.

## Enumeration Type Documentation

## ◆ ObjectClassID

enum ObjectClassID

Class IDs for objects.

Enumerator
OBJECT_CLASS_BEGIN | The lowest valid value.
OBJECT_CLASS_MAX | Maximum number of classes.
INVALID_OBJECT_CLASS | Class for the less fortunate.

Definition at line 48 of file newgrf_object.h.

## ◆ ObjectFlags

enum ObjectFlags

Various object behaviours.

Enumerator
OBJECT_FLAG_NONE | Just nothing.
OBJECT_FLAG_ONLY_IN_SCENEDIT | Object can only be constructed in the scenario editor.
OBJECT_FLAG_CANNOT_REMOVE | Object can not be removed.
OBJECT_FLAG_AUTOREMOVE | Object get automatically removed (like "owned land").
OBJECT_FLAG_BUILT_ON_WATER | Object can be built on water (not required).
OBJECT_FLAG_CLEAR_INCOME | When object is cleared a positive income is generated instead of a cost.
OBJECT_FLAG_HAS_NO_FOUNDATION | Do not display foundations when on a slope.
OBJECT_FLAG_ANIMATION | Object has animated tiles.
OBJECT_FLAG_ONLY_IN_GAME | Object can only be built in game.
OBJECT_FLAG_2CC_COLOUR | Object wants 2CC colour mapping.
OBJECT_FLAG_NOT_ON_LAND | Object can not be on land, implicitly sets OBJECT_FLAG_BUILT_ON_WATER.
OBJECT_FLAG_DRAW_WATER | Object wants to be drawn on water.
OBJECT_FLAG_ALLOW_UNDER_BRIDGE | Object can built under a bridge.
OBJECT_FLAG_ANIM_RANDOM_BITS | Object wants random bits in "next animation frame" callback.
OBJECT_FLAG_SCALE_BY_WATER | Object count is roughly scaled by water amount at edges.

Definition at line 24 of file newgrf_object.h.

## Function Documentation

## ◆ AnimateNewObjectTile()

void AnimateNewObjectTile | ( | TileIndex | tile | ) |

Handle the animation of the object tile.

Parameters

  tile | The tile to animate.

Definition at line 525 of file newgrf_object.cpp.

References AnimationBase< ObjectAnimationBase, ObjectSpec, Object, int, StubGetObjectCallback >::AnimateTile(), ObjectSpec::flags, Object::GetByTile(), ObjectSpec::GetByTile(), OBJECT_FLAG_ANIM_RANDOM_BITS, and OBJECT_FLAG_ANIMATION.

## ◆ DrawNewObjectTile()

void DrawNewObjectTile | ( | TileInfo * | ti,
|  | const ObjectSpec * | spec
| ) |  |

Draw an object on the map.

Parameters

  ti | Information about the tile to draw on.
  spec | Object spec to draw.

Definition at line 446 of file newgrf_object.cpp.

References Object::GetByTile(), SpriteGroup::Resolve(), and TileInfo::tile.

## ◆ DrawNewObjectTileInGUI()

void DrawNewObjectTileInGUI | ( | int | x,
|  | int | y,
|  | const ObjectSpec * | spec,
|  | uint8 | view
| ) |  |

Draw representation of an object (tile) for GUI purposes.

Parameters

  x | Position x of image.
  y | Position y of image.
  spec | Object spec to draw.
  view | The object's view.

Definition at line 464 of file newgrf_object.cpp.

## ◆ GetObjectCallback()

uint16 GetObjectCallback | ( | CallbackID | callback,
|  | uint32 | param1,
|  | uint32 | param2,
|  | const ObjectSpec * | spec,
|  | Object * | o,
|  | TileIndex | tile,
|  | uint8 | view
| ) |  |

Perform a callback for an object.

Parameters

  callback | The callback to perform.
  param1 | The first parameter to pass to the NewGRF.
  param2 | The second parameter to pass to the NewGRF.
  spec | The specification of the object / the entry point.
  o | The object to call the callback for.
  tile | The tile the callback is called for.
  view | The view of the object (only used when o == nullptr).

Returns
  The result of the callback.

Definition at line 408 of file newgrf_object.cpp.

Referenced by StubGetObjectCallback().

## ◆ TriggerObjectAnimation()

void TriggerObjectAnimation | ( | Object * | o,
|  | ObjectAnimationTrigger | trigger,
|  | const ObjectSpec * | spec
| ) |  |

Trigger the update of animation on a whole object.

Parameters

  o | The object that got triggered.
  trigger | The trigger that is triggered.
  spec | The spec associated with the object.

Definition at line 553 of file newgrf_object.cpp.

References ObjectSpec::animation, HasBit(), Object::location, TriggerObjectTileAnimation(), and AnimationInfo::triggers.

## ◆ TriggerObjectTileAnimation()

void TriggerObjectTileAnimation | ( | Object * | o,
|  | TileIndex | tile,
|  | ObjectAnimationTrigger | trigger,
|  | const ObjectSpec * | spec
| ) |  |

Trigger the update of animation on a single tile.

Parameters

  o | The object that got triggered.
  tile | The location of the triggered tile.
  trigger | The trigger that is triggered.
  spec | The spec associated with the object.

Definition at line 540 of file newgrf_object.cpp.

References ObjectSpec::animation, CBID_OBJECT_ANIMATION_START_STOP, AnimationBase< ObjectAnimationBase, ObjectSpec, Object, int, StubGetObjectCallback >::ChangeAnimationFrame(), HasBit(), and AnimationInfo::triggers.

Referenced by TriggerObjectAnimation().