| OpenTTD
    | 
Handling of object NewGRFs. More...
#include "stdafx.h"#include "company_base.h"#include "company_func.h"#include "debug.h"#include "genworld.h"#include "newgrf_class_func.h"#include "newgrf_object.h"#include "newgrf_sound.h"#include "object_base.h"#include "object_map.h"#include "tile_cmd.h"#include "town.h"#include "water.h"#include "newgrf_animation_base.h"#include "safeguards.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 | 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, bool grf_version8) | 
| 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. | |
| uint16 | GetObjectCallback (CallbackID callback, uint32 param1, uint32 param2, const ObjectSpec *spec, 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, Object *o, TileIndex tile, int extra_data) | 
| Perform a callback for an object. | |
| void | AnimateNewObjectTile (TileIndex tile) | 
| Handle the animation of the object tile. | |
| void | TriggerObjectTileAnimation (Object *o, TileIndex tile, ObjectAnimationTrigger trigger, const ObjectSpec *spec) | 
| Trigger the update of animation on a single tile. | |
| void | TriggerObjectAnimation (Object *o, ObjectAnimationTrigger trigger, const ObjectSpec *spec) | 
| Trigger the update of animation on a whole object. | |
| 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 531 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.
| 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 452 of file newgrf_object.cpp.
References DrawTileLayout(), Object::GetByTile(), 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 470 of file newgrf_object.cpp.
References _local_company, Livery::colour1, Livery::colour2, DrawNewGRFTileSeqInGUI(), DrawSprite(), ObjectSpec::flags, GB(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), DrawTileSprites::ground, GroundSpritePaletteTransform(), INVALID_TILE, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), OBJECT_FLAG_2CC_COLOUR, PalSpriteID::pal, PALETTE_RECOLOUR_START, SpriteGroup::Resolve(), PalSpriteID::sprite, and SPRITE_WIDTH.
Referenced by BuildObjectWindow::DrawWidget().
| 
 | 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 426 of file newgrf_object.cpp.
References Object::colour, DrawGroundSprite(), DrawNewGRFTileSeq(), ObjectSpec::flags, GB(), Object::GetByTile(), DrawTileSprites::ground, GroundSpritePaletteTransform(), IsTileOnWater(), OBJECT_FLAG_2CC_COLOUR, OBJECT_FLAG_DRAW_WATER, PalSpriteID::pal, PALETTE_RECOLOUR_START, TileLayoutSpriteGroup::ProcessRegisters(), PalSpriteID::sprite, SPRITE_WIDTH, TileInfo::tile, and TO_STRUCTURES.
Referenced by DrawNewObjectTile().
| 
 | 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 201 of file newgrf_object.cpp.
References DistanceManhattan(), Object::location, min(), OrthogonalTileArea::tile, and Object::type.
Referenced by GetCountAndDistanceOfClosestInstance().
| 
 | 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 222 of file newgrf_object.cpp.
References _object_mngr, GetClosestObject(), OverrideManagerBase::GetID(), GetRegister(), Object::GetTypeCount(), min(), and NUM_OBJECTS.
Referenced by ObjectScopeResolver::GetVariable().
| 
 | 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 | 
| grf_version8 | True, if we are dealing with a new NewGRF which uses GRF version >= 8. | 
Definition at line 186 of file newgrf_object.cpp.
References GetNearbyTile(), GetNearbyTileInformation(), GetObjectIndex(), IsTileType(), and MP_OBJECT.
Referenced by ObjectScopeResolver::GetVariable().
| uint16 GetObjectCallback | ( | CallbackID | callback, | 
| uint32 | param1, | ||
| uint32 | param2, | ||
| const ObjectSpec * | spec, | ||
| 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 414 of file newgrf_object.cpp.
Referenced by BuildObject(), CmdBuildObject(), BuildObjectWindow::DrawWidget(), and StubGetObjectCallback().
| 
 | 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 157 of file newgrf_object.cpp.
References ObjectSpec::Get(), Object::GetByTile(), ObjectSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, IsTileType(), GRFFilePropsBase< Tcnt >::local_id, MP_OBJECT, Object::type, and Object::view.
Referenced by ObjectScopeResolver::GetVariable().
| void ResetObjects | ( | ) | 
This function initialize the spec arrays of objects.
Definition at line 96 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, | ||
| Object * | o, | ||
| TileIndex | tile, | ||
| int | extra_data | ||
| ) | 
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. | 
| extra_data | Ignored. | 
Definition at line 513 of file newgrf_object.cpp.
References GetObjectCallback().
| void TriggerObjectAnimation | ( | 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 559 of file newgrf_object.cpp.
References ObjectSpec::animation, HasBit(), Object::location, TILE_AREA_LOOP, TriggerObjectTileAnimation(), and AnimationInfo::triggers.
Referenced by BuildObject().
| void TriggerObjectTileAnimation | ( | 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 546 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().
| ObjectOverrideManager _object_mngr(NEW_OBJECT_OFFSET, NUM_OBJECTS, INVALID_OBJECT_TYPE) | 
The override manager for our objects.
Referenced by FinaliseObjectsArray(), and GetCountAndDistanceOfClosestInstance().
| ObjectSpec _object_specs[NUM_OBJECTS] | 
All the object specifications.
Definition at line 34 of file newgrf_object.cpp.
Referenced by ObjectSpec::Index(), and ObjectOverrideManager::SetEntitySpec().
 1.8.1.2
 1.8.1.2