Changeset - r17669:32f87f18c3c6
[Not reviewed]
master
0 3 0
frosch - 13 years ago 2011-05-14 13:12:47
frosch@openttd.org
(svn r22454) -Codechange: Deduplicate GetCustomStationGroundRelocation() into GetCustomStationRelocation() and only call it if actually needed.
3 files changed with 23 insertions and 24 deletions:
0 comments (0 inline, 0 general)
src/newgrf_station.cpp
Show inline comments
 
@@ -576,28 +576,21 @@ static const SpriteGroup *ResolveStation
 
	return SpriteGroup::Resolve(group, object);
 
}
 

	
 
SpriteID GetCustomStationRelocation(const StationSpec *statspec, const BaseStation *st, TileIndex tile)
 
/**
 
 * Resolve sprites for drawing a station tile.
 
 * @param statspec Station spec
 
 * @param st Station (NULL in GUI)
 
 * @param tile Station tile being drawn (INVALID_TILE in GUI)
 
 * @param var10 Value to put in variable 10; normally 0; 1 when resolving the groundsprite and SSF_SEPARATE_GROUND is set.
 
 * @return First sprite of the Action 1 spriteset ot use, minus an offset of 0x42D to accommodate for weird NewGRF specs.
 
 */
 
SpriteID GetCustomStationRelocation(const StationSpec *statspec, const BaseStation *st, TileIndex tile, uint32 var10)
 
{
 
	const SpriteGroup *group;
 
	ResolverObject object;
 

	
 
	NewStationResolver(&object, statspec, st, tile);
 

	
 
	group = ResolveStation(&object);
 
	if (group == NULL || group->type != SGT_RESULT) return 0;
 
	return group->GetResult() - 0x42D;
 
}
 

	
 

	
 
SpriteID GetCustomStationGroundRelocation(const StationSpec *statspec, const BaseStation *st, TileIndex tile)
 
{
 
	const SpriteGroup *group;
 
	ResolverObject object;
 

	
 
	NewStationResolver(&object, statspec, st, tile);
 
	if (HasBit(statspec->flags, SSF_SEPARATE_GROUND)) {
 
		object.callback_param1 = 1; // Indicate we are resolving the ground sprite
 
	}
 
	object.callback_param1 = var10;
 

	
 
	group = ResolveStation(&object);
 
	if (group == NULL || group->type != SGT_RESULT) return 0;
 
@@ -777,7 +770,12 @@ bool DrawStationTile(int x, int y, RailT
 
	SpriteID image = sprites->ground.sprite;
 
	PaletteID pal = sprites->ground.pal;
 
	if (HasBit(image, SPRITE_MODIFIER_CUSTOM_SPRITE)) {
 
		image += GetCustomStationGroundRelocation(statspec, NULL, INVALID_TILE);
 
		if (HasBit(statspec->flags, SSF_SEPARATE_GROUND)) {
 
			/* Use separate action 1-2-3 chain for ground sprite */
 
			image += GetCustomStationRelocation(statspec, NULL, INVALID_TILE, 1);
 
		} else {
 
			image += relocation;
 
		}
 
		image += rti->fallback_railtype;
 
	} else {
 
		image += rti->GetRailtypeSpriteOffset();
src/newgrf_station.h
Show inline comments
 
@@ -111,11 +111,7 @@ const StationSpec *GetStationSpec(TileIn
 
/* Evaluate a tile's position within a station, and return the result a bitstuffed format. */
 
uint32 GetPlatformInfo(Axis axis, byte tile, int platforms, int length, int x, int y, bool centred);
 

	
 
/* Get sprite offset for a given custom station and station structure (may be
 
 * NULL - that means we are in a build dialog). The station structure is used
 
 * for variational sprite groups. */
 
SpriteID GetCustomStationRelocation(const StationSpec *statspec, const BaseStation *st, TileIndex tile);
 
SpriteID GetCustomStationGroundRelocation(const StationSpec *statspec, const BaseStation *st, TileIndex tile);
 
SpriteID GetCustomStationRelocation(const StationSpec *statspec, const BaseStation *st, TileIndex tile, uint32 var10 = 0);
 
SpriteID GetCustomStationFoundationRelocation(const StationSpec *statspec, const BaseStation *st, TileIndex tile, uint layout, uint edge_info);
 
uint16 GetStationCallback(CallbackID callback, uint32 param1, uint32 param2, const StationSpec *statspec, const BaseStation *st, TileIndex tile);
 

	
src/station_cmd.cpp
Show inline comments
 
@@ -2678,7 +2678,12 @@ draw_default_foundation:
 
			}
 
		} else {
 
			if (HasBit(image, SPRITE_MODIFIER_CUSTOM_SPRITE)) {
 
				image += GetCustomStationGroundRelocation(statspec, st, ti->tile);
 
				if (HasBit(statspec->flags, SSF_SEPARATE_GROUND)) {
 
					/* Use separate action 1-2-3 chain for ground sprite */
 
					image += GetCustomStationRelocation(statspec, st, ti->tile, 1);
 
				} else {
 
					image += relocation;
 
				}
 
				image += custom_ground_offset;
 
			} else {
 
				image += total_offset;
0 comments (0 inline, 0 general)