From 4367224b35d849ebe0079e7aea0b3939399f5ffd Mon Sep 17 00:00:00 2001 From: rubidium Date: Sun, 17 Feb 2013 14:59:27 +0000 Subject: [PATCH] (svn r25013) -Feature: show the amount of cargo that has already been reserved by full loading vehicles in the station (fonsinchen) --- src/cargopacket.h | 19 +++++++++++++++++++ src/lang/english.txt | 1 + src/station_gui.cpp | 12 +++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/cargopacket.h b/src/cargopacket.h index 130848d351..bffc845eab 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -445,6 +445,25 @@ public: friend class CargoReservation; friend class CargoReturn; + /** + * Returns sum of cargo reserved for loading onto vehicles. + * @return Cargo reserved for loading. + */ + inline uint ReservedCount() const + { + return this->reserved_count; + } + + /** + * Returns total count of cargo, including reserved cargo that's not + * actually in the list. + * @return Total cargo count. + */ + inline uint TotalCount() const + { + return this->count + this->reserved_count; + } + void Append(CargoPacket *cp); /* Methods for moving cargo around. First parameter is always maximum diff --git a/src/lang/english.txt b/src/lang/english.txt index 718ab9af41..2417042fce 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -2933,6 +2933,7 @@ STR_STATION_VIEW_CAPTION :{WHITE}{STATION STR_STATION_VIEW_WAITING_TITLE :{BLACK}Waiting: {WHITE}{STRING} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} en-route from {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reserved for loading) STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo diff --git a/src/station_gui.cpp b/src/station_gui.cpp index b0709e2c26..b255688665 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -938,7 +938,7 @@ struct StationViewWindow : public Window { this->cargo_rows[i] = 0; } else { /* Add an entry for total amount of cargo of this type waiting. */ - cargolist->push_back(CargoData(i, INVALID_STATION, st->goods[i].cargo.Count())); + cargolist->push_back(CargoData(i, INVALID_STATION, st->goods[i].cargo.TotalCount())); /* Set the row for this cargo entry for the expand/hide button */ this->cargo_rows[i] = (uint16)cargolist->size(); @@ -969,6 +969,12 @@ struct StationViewWindow : public Window { if (!added) cargolist->push_back(CargoData(i, cp->SourceStation(), cp->Count())); } } + if (st->goods[i].cargo.ReservedCount() > 0) { + SetBit(*transfers, i); + if (HasBit(this->cargo, i)) { + cargolist->push_back(CargoData(i, NEW_STATION, st->goods[i].cargo.ReservedCount())); + } + } } } } @@ -1019,6 +1025,10 @@ struct StationViewWindow : public Window { } else { DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_STATION_VIEW_WAITING_CARGO, TC_FROMSTRING, SA_RIGHT); } + } else if (cd->source == NEW_STATION) { + SetDParam(0, cd->cargo); + SetDParam(1, cd->count); + DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_STATION_VIEW_RESERVED, TC_FROMSTRING, SA_RIGHT); } else { SetDParam(0, cd->cargo); SetDParam(1, cd->count);