# newgrf_generic.cpp File Reference

Handling of generic feature callbacks. More...

`#include "stdafx.h"`
`#include "debug.h"`
`#include "newgrf.h"`
`#include "newgrf_spritegroup.h"`
`#include "industrytype.h"`
`#include "core/bitmath_func.hpp"`
`#include <list>`

Go to the source code of this file.

## Data Structures
struct | GenericCallback
## Typedefs
typedef std::list < GenericCallback > | GenericCallbackList
## Functions
void | ResetGenericCallbacks ()
| Reset all generic feature callback sprite groups.
void | AddGenericCallback (uint8 feature, const GRFFile *file, const SpriteGroup *group)
| Add a generic feature callback sprite group to the appropriate feature list.
static uint32 | GenericCallbackGetRandomBits (const ResolverObject *object)
static uint32 | GenericCallbackGetTriggers (const ResolverObject *object)
static void | GenericCallbackSetTriggers (const ResolverObject *object, int triggers)
static uint32 | GenericCallbackGetVariable (const ResolverObject *object, byte variable, byte parameter, bool *available)
static const SpriteGroup * | GenericCallbackResolveReal (const ResolverObject *object, const RealSpriteGroup *group)
static void | NewGenericResolver (ResolverObject *res, const GRFFile *grffile)
static uint16 | GetGenericCallbackResult (uint8 feature, ResolverObject *object, const GRFFile **file)
| Follow a generic feature callback list and return the first successful answer.
uint16 | GetAiPurchaseCallbackResult (uint8 feature, CargoID cargo_type, uint8 default_selection, IndustryType src_industry, IndustryType dst_industry, uint8 distance, AIConstructionEvent event, uint8 count, uint8 station_size, const GRFFile **file)
| 'Execute' an AI purchase selection callback
## Variables
static GenericCallbackList | _gcl [GSF_END]

## Detailed Description

Handling of generic feature callbacks.

Definition in file newgrf_generic.cpp.

## Function Documentation

void AddGenericCallback | ( | uint8 | feature,
|  | const GRFFile * | file,
|  | const SpriteGroup * | group |
| ) |  |  |

Add a generic feature callback sprite group to the appropriate feature list.

Parameters:

  | feature |
  | file |
  | group |

Definition at line 53 of file newgrf_generic.cpp.

References grfmsg(), and lengthof.

static uint16 GetGenericCallbackResult | ( | uint8 | feature,
|  | ResolverObject * | object,
|  | const GRFFile ** | file |
| ) |  |  | `[static]`

Follow a generic feature callback list and return the first successful answer.

Parameters:

  | feature | GRF Feature of callback
  | object | pre-populated resolver object
  | file | address of GRFFile object if file reference is needed, NULL is valid

Returns:
  callback value if successful or CALLBACK_FAILED

Definition at line 145 of file newgrf_generic.cpp.

References CALLBACK_FAILED, lengthof, and SpriteGroup::Resolve().

Referenced by GetAiPurchaseCallbackResult().