(svn r18410) -Codechange: Move GetCargoSprite() to CargoSpec::GetCargoIcon().

This commit is contained in:
alberth 2009-12-05 16:00:58 +00:00
parent 1e7403d372
commit c38f3ce380
3 changed files with 20 additions and 21 deletions

View File

@ -12,6 +12,7 @@
#include "stdafx.h"
#include "cargotype.h"
#include "core/bitmath_func.hpp"
#include "newgrf_cargo.h"
#include "table/sprites.h"
#include "table/strings.h"
@ -89,3 +90,19 @@ CargoID GetCargoIDByBitnum(uint8 bitnum)
return CT_INVALID;
}
/** Get sprite for showing cargo of this type.
* @return Sprite number to use.
*/
SpriteID CargoSpec::GetCargoIcon() const
{
SpriteID sprite = this->sprite;
if (sprite == 0xFFFF) {
/* A value of 0xFFFF indicates we should draw a custom icon */
sprite = GetCustomCargoSprite(this);
}
if (sprite == 0) sprite = SPR_CARGO_GOODS;
return sprite;
}

View File

@ -113,6 +113,8 @@ struct CargoSpec {
return &CargoSpec::array[index];
}
SpriteID GetCargoIcon() const;
private:
static CargoSpec array[NUM_CARGO]; ///< Array holding all CargoSpecs
@ -123,8 +125,6 @@ extern uint32 _cargo_mask;
/* Set up the default cargo types for the given landscape type */
void SetupCargoForClimate(LandscapeID l);
/* Get the cargo icon for a given cargo ID */
SpriteID GetCargoSprite(CargoID i);
/* Get the cargo ID with the cargo label */
CargoID GetCargoIDByLabel(CargoLabel cl);
CargoID GetCargoIDByBitnum(uint8 bitnum);

View File

@ -25,7 +25,6 @@
#include "viewport_func.h"
#include "gfx_func.h"
#include "widgets/dropdown_func.h"
#include "newgrf_cargo.h"
#include "station_base.h"
#include "waypoint_base.h"
#include "tilehighlight_func.h"
@ -751,23 +750,6 @@ static const NWidgetPart _nested_station_view_widgets[] = {
EndContainer(),
};
SpriteID GetCargoSprite(CargoID i)
{
const CargoSpec *cs = CargoSpec::Get(i);
SpriteID sprite;
if (cs->sprite == 0xFFFF) {
/* A value of 0xFFFF indicates we should draw a custom icon */
sprite = GetCustomCargoSprite(cs);
} else {
sprite = cs->sprite;
}
if (sprite == 0) sprite = SPR_CARGO_GOODS;
return sprite;
}
/**
* Draws icons of waiting cargo in the StationView window
*
@ -783,7 +765,7 @@ static void DrawCargoIcons(CargoID i, uint waiting, int left, int right, int y)
uint num = min((waiting + 5) / 10, (right - left) / 10); // maximum is width / 10 icons so it won't overflow
if (num == 0) return;
SpriteID sprite = GetCargoSprite(i);
SpriteID sprite = CargoSpec::Get(i)->GetCargoIcon();
int x = _dynlang.text_dir == TD_RTL ? right - num * 10 : left;
do {