mirror of https://github.com/OpenTTD/OpenTTD
(svn r9417) -Fix (r1): Waiting cargo icons in the station view window were incorrectly drawn if the cargo list was scrolled, resulting in overlapping images
parent
2e32df30dd
commit
8353032129
|
@ -667,6 +667,21 @@ static const Widget _station_view_widgets[] = {
|
||||||
{ WIDGETS_END},
|
{ WIDGETS_END},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void DrawCargoIcons(CargoID i, uint waiting, int x, int y)
|
||||||
|
{
|
||||||
|
uint num = min((waiting + 5) / 10, 23);
|
||||||
|
if (num == 0) return;
|
||||||
|
|
||||||
|
const CargoSpec *cs = GetCargo(i);
|
||||||
|
SpriteID sprite = cs->sprite;
|
||||||
|
|
||||||
|
do {
|
||||||
|
DrawSprite(sprite, PAL_NONE, x, y);
|
||||||
|
x += 10;
|
||||||
|
} while (--num);
|
||||||
|
}
|
||||||
|
|
||||||
static void DrawStationViewWindow(Window *w)
|
static void DrawStationViewWindow(Window *w)
|
||||||
{
|
{
|
||||||
StationID station_id = w->window_number;
|
StationID station_id = w->window_number;
|
||||||
|
@ -713,18 +728,9 @@ static void DrawStationViewWindow(Window *w)
|
||||||
uint waiting = GB(st->goods[i].waiting_acceptance, 0, 12);
|
uint waiting = GB(st->goods[i].waiting_acceptance, 0, 12);
|
||||||
if (waiting == 0) continue;
|
if (waiting == 0) continue;
|
||||||
|
|
||||||
num = (waiting + 5) / 10;
|
|
||||||
if (num != 0) {
|
|
||||||
int cur_x = x;
|
|
||||||
num = min(num, 23);
|
|
||||||
do {
|
|
||||||
DrawSprite(GetCargo(i)->sprite, PAL_NONE, cur_x, y);
|
|
||||||
cur_x += 10;
|
|
||||||
} while (--num);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (st->goods[i].enroute_from == station_id) {
|
if (st->goods[i].enroute_from == station_id) {
|
||||||
if (--pos < 0) {
|
if (--pos < 0) {
|
||||||
|
DrawCargoIcons(i, waiting, x, y);
|
||||||
SetDParam(1, waiting);
|
SetDParam(1, waiting);
|
||||||
SetDParam(0, i);
|
SetDParam(0, i);
|
||||||
DrawStringRightAligned(x + 234, y, STR_0009, 0);
|
DrawStringRightAligned(x + 234, y, STR_0009, 0);
|
||||||
|
@ -733,6 +739,7 @@ static void DrawStationViewWindow(Window *w)
|
||||||
} else {
|
} else {
|
||||||
/* enroute */
|
/* enroute */
|
||||||
if (--pos < 0) {
|
if (--pos < 0) {
|
||||||
|
DrawCargoIcons(i, waiting, x, y);
|
||||||
SetDParam(1, waiting);
|
SetDParam(1, waiting);
|
||||||
SetDParam(0, i);
|
SetDParam(0, i);
|
||||||
DrawStringRightAligned(x + 234, y, STR_000A_EN_ROUTE_FROM, 0);
|
DrawStringRightAligned(x + 234, y, STR_000A_EN_ROUTE_FROM, 0);
|
||||||
|
|
Loading…
Reference in New Issue