Handling of object NewGRFs. More...
#include "stdafx.h"
#include "company_base.h"
#include "company_func.h"
#include "debug.h"
#include "newgrf.h"
#include "newgrf_class_func.h"
#include "newgrf_object.h"
#include "newgrf_sound.h"
#include "newgrf_spritegroup.h"
#include "newgrf_town.h"
#include "object_base.h"
#include "object_map.h"
#include "sprite.h"
#include "town.h"
#include "viewport_func.h"
#include "water.h"
#include "newgrf_animation_base.h"
Go to the source code of this file.
Data Structures | |
struct | ObjectAnimationBase |
Helper class for animation control. More... | |
Functions | |
void | ResetObjects () |
This function initialize the spec arrays of objects. | |
static uint32 | ObjectGetRandomBits (const ResolverObject *object) |
static uint32 | ObjectGetTriggers (const ResolverObject *object) |
static void | ObjectSetTriggers (const ResolverObject *object, int triggers) |
static uint32 | GetObjectIDAtOffset (TileIndex tile, uint32 cur_grfid) |
Make an analysis of a tile and get the object type. | |
static uint32 | GetNearbyObjectTileInformation (byte parameter, TileIndex tile, ObjectID index) |
Based on newhouses equivalent, but adapted for newobjects. | |
static uint32 | GetClosestObject (TileIndex tile, ObjectType type, const Object *current) |
Get the closest object of a given type. | |
static uint32 | GetCountAndDistanceOfClosestInstance (byte local_id, uint32 grfid, TileIndex tile, const Object *current) |
Implementation of var 65. | |
static uint32 | ObjectGetVariable (const ResolverObject *object, byte variable, byte parameter, bool *available) |
Used by the resolver to get values for feature 0F deterministic spritegroups. | |
static const SpriteGroup * | ObjectResolveReal (const ResolverObject *object, const RealSpriteGroup *group) |
static const SpriteGroup * | GetObjectSpriteGroup (const ObjectSpec *spec, const Object *o) |
Get the object's sprite group. | |
static void | NewObjectResolver (ResolverObject *res, const ObjectSpec *spec, const Object *o, TileIndex tile, uint8 view=0) |
Returns a resolver object to be used with feature 0F spritegroups. | |
uint16 | GetObjectCallback (CallbackID callback, uint32 param1, uint32 param2, const ObjectSpec *spec, const Object *o, TileIndex tile, uint8 view) |
Perform a callback for an object. | |
static void | DrawTileLayout (const TileInfo *ti, const TileLayoutSpriteGroup *group, const ObjectSpec *spec) |
Draw an group of sprites on the map. | |
void | DrawNewObjectTile (TileInfo *ti, const ObjectSpec *spec) |
Draw an object on the map. | |
void | DrawNewObjectTileInGUI (int x, int y, const ObjectSpec *spec, uint8 view) |
Draw representation of an object (tile) for GUI purposes. | |
uint16 | StubGetObjectCallback (CallbackID callback, uint32 param1, uint32 param2, const ObjectSpec *spec, const Object *o, TileIndex tile) |
Perform a callback for an object. | |
void | AnimateNewObjectTile (TileIndex tile) |
Handle the animation of the object tile. | |
void | TriggerObjectTileAnimation (const Object *o, TileIndex tile, ObjectAnimationTrigger trigger, const ObjectSpec *spec) |
Trigger the update of animation on a single tile. | |
void | TriggerObjectAnimation (const Object *o, ObjectAnimationTrigger trigger, const ObjectSpec *spec) |
Trigger the update of animation on a whole object. | |
void | GetObjectResolver (ResolverObject *ro, uint index) |
Resolve an object's spec and such so we can get a variable. | |
Variables | |
ObjectOverrideManager | _object_mngr (NEW_OBJECT_OFFSET, NUM_OBJECTS, INVALID_OBJECT_TYPE) |
The override manager for our objects. | |
const ObjectSpec | _original_objects [NEW_OBJECT_OFFSET] |
ObjectSpec | _object_specs [NUM_OBJECTS] |
All the object specifications. |
Handling of object NewGRFs.
Definition in file newgrf_object.cpp.
void AnimateNewObjectTile | ( | TileIndex | tile | ) |
Handle the animation of the object tile.
tile | The tile to animate. |
Definition at line 527 of file newgrf_object.cpp.
References AnimationBase< ObjectAnimationBase, ObjectSpec, Object, StubGetObjectCallback >::AnimateTile(), ObjectSpec::flags, Object::GetByTile(), ObjectSpec::GetByTile(), OBJECT_FLAG_ANIM_RANDOM_BITS, and OBJECT_FLAG_ANIMATION.
void DrawNewObjectTile | ( | TileInfo * | ti, | |
const ObjectSpec * | spec | |||
) |
Draw an object on the map.
ti | Information about the tile to draw on. | |
spec | Object spec to draw. |
Definition at line 446 of file newgrf_object.cpp.
References DrawTileLayout(), Object::GetByTile(), GetObjectSpriteGroup(), NewObjectResolver(), SpriteGroup::Resolve(), and TileInfo::tile.
void DrawNewObjectTileInGUI | ( | int | x, | |
int | y, | |||
const ObjectSpec * | spec, | |||
uint8 | view | |||
) |
Draw representation of an object (tile) for GUI purposes.
x | Position x of image. | |
y | Position y of image. | |
spec | Object spec to draw. | |
view | The object's view. |
Definition at line 465 of file newgrf_object.cpp.
References _local_company, Livery::colour1, Livery::colour2, DrawNewGRFTileSeqInGUI(), DrawSprite(), ObjectSpec::flags, GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetObjectSpriteGroup(), DrawTileSprites::ground, GroundSpritePaletteTransform(), INVALID_TILE, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), NewObjectResolver(), OBJECT_FLAG_2CC_COLOUR, PalSpriteID::pal, SpriteGroup::Resolve(), PalSpriteID::sprite, and SPRITE_WIDTH.
Referenced by BuildObjectWindow::DrawWidget().
static void DrawTileLayout | ( | const TileInfo * | ti, | |
const TileLayoutSpriteGroup * | group, | |||
const ObjectSpec * | spec | |||
) | [static] |
Draw an group of sprites on the map.
ti | Information about the tile to draw on. | |
group | The group of sprites to draw. | |
spec | Object spec to draw. |
Definition at line 420 of file newgrf_object.cpp.
References Object::colour, DrawGroundSprite(), DrawNewGRFTileSeq(), ObjectSpec::flags, GB(), Object::GetByTile(), DrawTileSprites::ground, GroundSpritePaletteTransform(), IsTileOnWater(), OBJECT_FLAG_DRAW_WATER, PalSpriteID::pal, PalSpriteID::sprite, SPRITE_WIDTH, TileInfo::tile, and TO_STRUCTURES.
Referenced by DrawNewObjectTile().
static uint32 GetClosestObject | ( | TileIndex | tile, | |
ObjectType | type, | |||
const Object * | current | |||
) | [static] |
Get the closest object of a given type.
tile | The tile to start searching from. | |
type | The type of the object to search for. | |
current | The current object (to ignore). |
Definition at line 177 of file newgrf_object.cpp.
References DistanceManhattan(), GetObjectType(), Object::location, min(), and TileArea::tile.
Referenced by GetCountAndDistanceOfClosestInstance().
static uint32 GetCountAndDistanceOfClosestInstance | ( | byte | local_id, | |
uint32 | grfid, | |||
TileIndex | tile, | |||
const Object * | current | |||
) | [static] |
Implementation of var 65.
local_id | Parameter given to the callback, which is the set id, or the local id, in our terminology. | |
grfid | The object's GRFID. | |
tile | The tile to look from. | |
current | Object for which the inquiry is made |
Definition at line 198 of file newgrf_object.cpp.
References _object_mngr, GetClosestObject(), OverrideManagerBase::GetID(), GetRegister(), Object::GetTypeCount(), min(), and NUM_OBJECTS.
Referenced by ObjectGetVariable().
static uint32 GetNearbyObjectTileInformation | ( | byte | parameter, | |
TileIndex | tile, | |||
ObjectID | index | |||
) | [static] |
Based on newhouses equivalent, but adapted for newobjects.
parameter | from callback. It's in fact a pair of coordinates | |
tile | TileIndex from which the callback was initiated | |
index | of the object been queried for |
Definition at line 162 of file newgrf_object.cpp.
References GetNearbyTileInformation(), GetObjectIndex(), IsTileType(), and MP_OBJECT.
Referenced by ObjectGetVariable().
uint16 GetObjectCallback | ( | CallbackID | callback, | |
uint32 | param1, | |||
uint32 | param2, | |||
const ObjectSpec * | spec, | |||
const Object * | o, | |||
TileIndex | tile, | |||
uint8 | view | |||
) |
Perform a callback for an object.
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 == NULL). |
Definition at line 400 of file newgrf_object.cpp.
References CALLBACK_FAILED, GetObjectSpriteGroup(), NewObjectResolver(), and SpriteGroup::Resolve().
Referenced by BuildObject(), CmdBuildObject(), BuildObjectWindow::DrawWidget(), and StubGetObjectCallback().
static uint32 GetObjectIDAtOffset | ( | TileIndex | tile, | |
uint32 | cur_grfid | |||
) | [static] |
Make an analysis of a tile and get the object type.
tile | TileIndex of the tile to query | |
cur_grfid | GRFID of the current callback chain |
Definition at line 135 of file newgrf_object.cpp.
References ObjectSpec::GetByTile(), ObjectSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, IsTileType(), GRFFilePropsBase< Tcnt >::local_id, and MP_OBJECT.
Referenced by ObjectGetVariable().
void GetObjectResolver | ( | ResolverObject * | ro, | |
uint | index | |||
) |
Resolve an object's spec and such so we can get a variable.
ro | The resolver object to fill. | |
index | The object tile to get the data from. |
Definition at line 569 of file newgrf_object.cpp.
References Object::GetByTile(), ObjectSpec::GetByTile(), and NewObjectResolver().
static const SpriteGroup* GetObjectSpriteGroup | ( | const ObjectSpec * | spec, | |
const Object * | o | |||
) | [static] |
Get the object's sprite group.
spec | The specification to get the sprite group from. | |
o | The object to get he sprite group for. |
Definition at line 354 of file newgrf_object.cpp.
References CT_PURCHASE_OBJECT, ObjectSpec::grf_prop, and GRFFilePropsBase< Tcnt >::spritegroup.
Referenced by DrawNewObjectTile(), DrawNewObjectTileInGUI(), and GetObjectCallback().
static uint32 ObjectGetVariable | ( | const ResolverObject * | object, | |
byte | variable, | |||
byte | parameter, | |||
bool * | available | |||
) | [static] |
Used by the resolver to get values for feature 0F deterministic spritegroups.
Definition at line 225 of file newgrf_object.cpp.
References _current_company, _date, Object::build_date, ClosestTownFromTile(), Object::colour, DEBUG, DistanceManhattan(), DistanceSquare(), GetAnimationFrame(), Object::GetByTile(), GetCountAndDistanceOfClosestInstance(), GetNearbyObjectTileInformation(), GetObjectIDAtOffset(), GetObjectRandomBits(), GetTerrainType(), GetTileOwner(), GetTileSlope(), GetTownRadiusGroup(), ResolverObject::grffile, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_OBJECT, IsTileType(), IsValidTile(), Object::location, min(), MP_OBJECT, ResolverObject::scope, TileArea::tile, TileX(), TileY(), Object::town, TownGetVariable(), Object::view, and VSG_SCOPE_PARENT.
void ResetObjects | ( | ) |
This function initialize the spec arrays of objects.
Definition at line 80 of file newgrf_object.cpp.
References ObjectSpec::grf_prop, lengthof, GRFFilePropsBase< Tcnt >::local_id, MemCpyT(), and MemSetT().
Referenced by ResetNewGRFData().
uint16 StubGetObjectCallback | ( | CallbackID | callback, | |
uint32 | param1, | |||
uint32 | param2, | |||
const ObjectSpec * | spec, | |||
const Object * | o, | |||
TileIndex | tile | |||
) |
Perform a callback for an object.
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. |
Definition at line 509 of file newgrf_object.cpp.
References GetObjectCallback().
void TriggerObjectAnimation | ( | const Object * | o, | |
ObjectAnimationTrigger | trigger, | |||
const ObjectSpec * | spec | |||
) |
Trigger the update of animation on a whole object.
o | The object that got triggered. | |
trigger | The trigger that is triggered. | |
spec | The spec associated with the object. |
Definition at line 555 of file newgrf_object.cpp.
References ObjectSpec::animation, HasBit(), Object::location, TILE_AREA_LOOP, TriggerObjectTileAnimation(), and AnimationInfo::triggers.
Referenced by BuildObject().
void TriggerObjectTileAnimation | ( | const Object * | o, | |
TileIndex | tile, | |||
ObjectAnimationTrigger | trigger, | |||
const ObjectSpec * | spec | |||
) |
Trigger the update of animation on a single tile.
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 542 of file newgrf_object.cpp.
References ObjectSpec::animation, CBID_OBJECT_ANIMATION_START_STOP, AnimationBase< ObjectAnimationBase, ObjectSpec, Object, StubGetObjectCallback >::ChangeAnimationFrame(), HasBit(), and AnimationInfo::triggers.
Referenced by TriggerObjectAnimation().
The override manager for our objects.
Referenced by FinaliseObjectsArray(), and GetCountAndDistanceOfClosestInstance().
All the object specifications.
Definition at line 35 of file newgrf_object.cpp.
Referenced by ObjectOverrideManager::SetEntitySpec().