summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-03-28 04:57:32 +0000
committerrubidium <rubidium@openttd.org>2008-03-28 04:57:32 +0000
commitd8cfb4f064d5492770d3325ef6e288b630e34e7c (patch)
tree054d82fc3797d11e8a32609a8112e9799cc33682
parent79f033c78fe7a92cabce880225b8466a3a68c61c (diff)
downloadopenttd-d8cfb4f064d5492770d3325ef6e288b630e34e7c.tar.xz
(svn r12458) -Codechange: split acquiring the sprite ID for cargos from the actual drawing of them.
-rw-r--r--src/cargotype.h2
-rw-r--r--src/station_gui.cpp31
2 files changed, 21 insertions, 12 deletions
diff --git a/src/cargotype.h b/src/cargotype.h
index 67b63e3dd..7d770b1b9 100644
--- a/src/cargotype.h
+++ b/src/cargotype.h
@@ -59,6 +59,8 @@ extern CargoSpec _cargo[NUM_CARGO];
void SetupCargoForClimate(LandscapeID l);
/* Retrieve cargo details for the given cargo ID */
const CargoSpec *GetCargo(CargoID c);
+/* 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);
diff --git a/src/station_gui.cpp b/src/station_gui.cpp
index 82fe883c9..8a4f7a6f5 100644
--- a/src/station_gui.cpp
+++ b/src/station_gui.cpp
@@ -682,19 +682,8 @@ static const Widget _station_view_widgets[] = {
{ WIDGETS_END},
};
-/**
- * Draws icons of wainting cargo in the StationView window
- *
- * @param i type of cargo
- * @param waiting number of wainting units
- * @param x x on-screen coordinate where to start with drawing icons
- * @param y y coordinate
- */
-static void DrawCargoIcons(CargoID i, uint waiting, int x, int y, uint width)
+SpriteID GetCargoSprite(CargoID i)
{
- uint num = min((waiting + 5) / 10, width / 10); // maximum is width / 10 icons so it won't overflow
- if (num == 0) return;
-
const CargoSpec *cs = GetCargo(i);
SpriteID sprite;
@@ -707,6 +696,24 @@ static void DrawCargoIcons(CargoID i, uint waiting, int x, int y, uint width)
if (sprite == 0) sprite = SPR_CARGO_GOODS;
+ return sprite;
+}
+
+/**
+ * Draws icons of waiting cargo in the StationView window
+ *
+ * @param i type of cargo
+ * @param waiting number of waiting units
+ * @param x x on-screen coordinate where to start with drawing icons
+ * @param y y coordinate
+ */
+static void DrawCargoIcons(CargoID i, uint waiting, int x, int y, uint width)
+{
+ uint num = min((waiting + 5) / 10, width / 10); // maximum is width / 10 icons so it won't overflow
+ if (num == 0) return;
+
+ SpriteID sprite = GetCargoSprite(i);
+
do {
DrawSprite(sprite, PAL_NONE, x, y);
x += 10;