summaryrefslogtreecommitdiff
path: root/src/group_gui.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-10-03 17:25:44 +0000
committerfrosch <frosch@openttd.org>2011-10-03 17:25:44 +0000
commit23a2f23eb35cec39f7a31fe6b541c95a11e0102f (patch)
tree0e25194fcb6683e3b9355a26d6fc85cd3c063a5a /src/group_gui.cpp
parentd6e6e8a9d4d4e6937fc030a7d5d5a0e38cf6f991 (diff)
downloadopenttd-23a2f23eb35cec39f7a31fe6b541c95a11e0102f.tar.xz
(svn r22984) -Feature: Display profit icons for groups in the group GUI.
Diffstat (limited to 'src/group_gui.cpp')
-rw-r--r--src/group_gui.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/group_gui.cpp b/src/group_gui.cpp
index 048d346dc..5a0a46b7f 100644
--- a/src/group_gui.cpp
+++ b/src/group_gui.cpp
@@ -117,6 +117,7 @@ private:
/* Columns in the group list */
enum ListColumns {
VGC_NAME, ///< Group name.
+ VGC_PROFIT, ///< Profit icon.
VGC_NUMBER, ///< Number of vehicles in the group.
VGC_END
@@ -185,6 +186,15 @@ private:
this->column_size[VGC_NAME].width = max(170u, this->column_size[VGC_NAME].width);
this->tiny_step_height = this->column_size[VGC_NAME].height;
+ this->column_size[VGC_PROFIT].width = 0;
+ this->column_size[VGC_PROFIT].height = 0;
+ static const SpriteID profit_sprites[] = {SPR_PROFIT_NA, SPR_PROFIT_NEGATIVE, SPR_PROFIT_SOME, SPR_PROFIT_LOT};
+ for (uint i = 0; i < lengthof(profit_sprites); i++) {
+ Dimension d = GetSpriteSize(profit_sprites[i]);
+ this->column_size[VGC_PROFIT] = maxdim(this->column_size[VGC_PROFIT], d);
+ }
+ this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_PROFIT].height);
+
SetDParam(0, GroupStatistics::Get(this->vli.company, ALL_GROUP, this->vli.vtype).num_vehicle > 900 ? 9999 : 999);
this->column_size[VGC_NUMBER] = GetStringBoundingBox(STR_TINY_COMMA);
this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_NUMBER].height);
@@ -193,6 +203,7 @@ private:
return WD_FRAMERECT_LEFT + 8 +
this->column_size[VGC_NAME].width + 8 +
+ this->column_size[VGC_PROFIT].width + 2 +
this->column_size[VGC_NUMBER].width + 2 +
WD_FRAMERECT_RIGHT;
}
@@ -224,8 +235,22 @@ private:
int x = rtl ? right - WD_FRAMERECT_RIGHT - 8 - this->column_size[VGC_NAME].width + 1 : left + WD_FRAMERECT_LEFT + 8;
DrawString(x, x + this->column_size[VGC_NAME].width - 1, y + (this->tiny_step_height - this->column_size[VGC_NAME].height) / 2, str, colour);
+ /* draw the profit icon */
+ x = rtl ? x - 8 - this->column_size[VGC_PROFIT].width : x + 8 + this->column_size[VGC_NAME].width;
+ SpriteID spr;
+ if (stats.num_profit_vehicle == 0) {
+ spr = SPR_PROFIT_NA;
+ } else if (stats.profit_last_year < 0) {
+ spr = SPR_PROFIT_NEGATIVE;
+ } else if (stats.profit_last_year < 10000 * stats.num_profit_vehicle) { // TODO magic number
+ spr = SPR_PROFIT_SOME;
+ } else {
+ spr = SPR_PROFIT_LOT;
+ }
+ DrawSprite(spr, PAL_NONE, x, y + (this->tiny_step_height - this->column_size[VGC_PROFIT].height) / 2);
+
/* draw the number of vehicles of the group */
- x = rtl ? x - 8 - this->column_size[VGC_NUMBER].width : x + 8 + this->column_size[VGC_NAME].width;
+ x = rtl ? x - 2 - this->column_size[VGC_NUMBER].width : x + 2 + this->column_size[VGC_PROFIT].width;
SetDParam(0, stats.num_vehicle);
DrawString(x, x + this->column_size[VGC_NUMBER].width - 1, y + (this->tiny_step_height - this->column_size[VGC_NUMBER].height) / 2, STR_TINY_COMMA, colour, SA_RIGHT | SA_FORCE);
}