summaryrefslogtreecommitdiff
path: root/train_gui.c
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-06-20 07:07:28 +0000
committerpeter1138 <peter1138@openttd.org>2006-06-20 07:07:28 +0000
commit34ba92b488f41c496fb83a09a5e39b4ed8c15877 (patch)
tree706cb489c517d18a35e83c613e046b80480815f1 /train_gui.c
parente6b7fbd949e4e5465aff3816d7b4b559e00e62a2 (diff)
downloadopenttd-34ba92b488f41c496fb83a09a5e39b4ed8c15877.tar.xz
(svn r5318) - Allow room for a single pixel overflow on the first engine when drawing a train's image.
- Draw the depot highlight box after drawing all engines on a line, so that the box isn't hidden.
Diffstat (limited to 'train_gui.c')
-rw-r--r--train_gui.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/train_gui.c b/train_gui.c
index 3a2b2c590..7cb491666 100644
--- a/train_gui.c
+++ b/train_gui.c
@@ -359,8 +359,11 @@ static void DrawTrainImage(const Vehicle *v, int x, int y, int count, int skip,
{
DrawPixelInfo tmp_dpi, *old_dpi;
int dx = -(skip * 8) / _traininfo_vehicle_width;
+ /* Position of highlight box */
+ int highlight_l = 0;
+ int highlight_r = 0;
- if (!FillDrawPixelInfo(&tmp_dpi, NULL, x - 1, y - 1, count, 14)) return;
+ if (!FillDrawPixelInfo(&tmp_dpi, NULL, x - 2, y - 1, count + 1, 14)) return;
count = (count * 8) / _traininfo_vehicle_width;
@@ -373,9 +376,12 @@ static void DrawTrainImage(const Vehicle *v, int x, int y, int count, int skip,
if (dx + width > 0) {
if (dx <= count) {
PalSpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
- DrawSprite(GetTrainImage(v, DIR_W) | pal, 15 + WagonLengthToPixels(dx), 7 + (is_custom_sprite(RailVehInfo(v->engine_type)->image_index) ? _traininfo_vehicle_pitch : 0));
- if (v->index == selection)
- DrawFrameRect(WagonLengthToPixels(dx), 0, WagonLengthToPixels(dx + width), 13, 15, FR_BORDERONLY);
+ DrawSprite(GetTrainImage(v, DIR_W) | pal, 16 + WagonLengthToPixels(dx), 7 + (is_custom_sprite(RailVehInfo(v->engine_type)->image_index) ? _traininfo_vehicle_pitch : 0));
+ if (v->index == selection) {
+ /* Set the highlight position */
+ highlight_l = WagonLengthToPixels(dx) + 1;
+ highlight_r = WagonLengthToPixels(dx + width) + 1;
+ }
}
}
dx += width;
@@ -383,6 +389,12 @@ static void DrawTrainImage(const Vehicle *v, int x, int y, int count, int skip,
v = v->next;
} while (dx < count && v != NULL);
+ if (highlight_l != highlight_r) {
+ /* Draw the highlight. Now done after drawing all the engines, as
+ * the next engine after the highlight could overlap it. */
+ DrawFrameRect(highlight_l, 0, highlight_r, 13, 15, FR_BORDERONLY);
+ }
+
_cur_dpi = old_dpi;
}