Data Structures | Typedefs | Functions | Variables

# newgrf_generic.cpp File Reference

Handling of generic feature callbacks. More...

`#include "stdafx.h"`
`#include "debug.h"`
`#include "newgrf_spritegroup.h"`
`#include "industrytype.h"`
`#include "core/random_func.hpp"`
`#include "newgrf_sound.h"`
`#include "water_map.h"`
`#include <list>`

Go to the source code of this file.

## Data Structures
struct | GenericScopeResolver
| Scope resolver for generic objects and properties. More...
struct | GenericResolverObject
| Resolver object for generic objects/properties. More...
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 uint16 | GetGenericCallbackResult (uint8 feature, ResolverObject *object, uint32 param1_grfv7, uint32 param1_grfv8, 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
void | AmbientSoundEffectCallback (TileIndex tile)
| 'Execute' the ambient sound effect 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 | The feature for the callback.
  | file | The GRF of the callback.
  | group | The sprite group of the callback.

Definition at line 90 of file newgrf_generic.cpp.

References grfmsg(), and lengthof.

void AmbientSoundEffectCallback | ( | TileIndex | tile | ) |

'Execute' the ambient sound effect callback.

Parameters:

  | tile | Tile the sound effect should be generated for.

Definition at line 251 of file newgrf_generic.cpp.

References _settings_client, SoundSettings::ambient, CALLBACK_FAILED, CBID_SOUNDS_AMBIENT_EFFECT, Chance16R(), Clamp(), GB(), GetGenericCallbackResult(), GetTerrainType(), GetTileType(), GetTileZ(), GetWaterClass(), HasTileWaterClass(), IsTileType(), MP_CLEAR, MP_TREES, MP_WATER, PlayTileSound(), ClientSettings::sound, and TileHeight().

Referenced by AmbientSoundEffect().

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

Parameters:

  | feature | GRF Feature to call callback for.
  | cargo_type | Cargotype to pass to callback. (Variable 80)
  | default_selection | 'Default selection' to pass to callback. (Variable 82)
  | src_industry | 'Source industry type' to pass to callback. (Variable 83)
  | dst_industry | 'Destination industry type' to pass to callback. (Variable 84)
  | distance | 'Distance between source and destination' to pass to callback. (Variable 85)
  | event | 'AI construction event' to pass to callback. (Variable 86)
  | count | 'Construction number' to pass to callback. (Variable 87)
  | station_size | 'Station size' to pass to callback. (Variable 88)
  `[out]` | file | Optionally returns the GRFFile which made the final decision for the callback result. May be NULL if not required.

Returns:
  callback value if successful or CALLBACK_FAILED

Definition at line 216 of file newgrf_generic.cpp.

References CALLBACK_FAILED, CBID_GENERIC_AI_PURCHASE_SELECTION, GB(), GetGenericCallbackResult(), GetIndustrySpec(), IndustrySpec::grf_prop, INVALID_INDUSTRYTYPE, IT_AI_TOWN, and IT_AI_UNKNOWN.

static uint16 GetGenericCallbackResult | ( | uint8 | feature,
|  | ResolverObject * | object,
|  | uint32 | param1_grfv7,
|  | uint32 | param1_grfv8,
|  | 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
  | param1_grfv7 | callback_param1 for GRFs up to version 7.
  | param1_grfv8 | callback_param1 for GRFs from version 8 on.
  `[out]` | file | Optionally returns the GRFFile which made the final decision for the callback result. May be NULL if not required.

Returns:
  callback value if successful or CALLBACK_FAILED

Definition at line 176 of file newgrf_generic.cpp.

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

Referenced by AmbientSoundEffectCallback(), and GetAiPurchaseCallbackResult().