changeset 20079:27d20dcc9664 draft

(svn r25013) -Feature: show the amount of cargo that has already been reserved by full loading vehicles in the station (fonsinchen)
author rubidium <rubidium@openttd.org>
date Sun, 17 Feb 2013 14:59:27 +0000
parents ad738879626a
children 8e7714dbc02e
files src/cargopacket.h src/lang/english.txt src/station_gui.cpp
diffstat 3 files changed, 31 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/cargopacket.h
+++ b/src/cargopacket.h
@@ -445,6 +445,25 @@
 	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
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -2933,6 +2933,7 @@
 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
--- a/src/station_gui.cpp
+++ b/src/station_gui.cpp
@@ -938,7 +938,7 @@
 				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 @@
 						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 @@
 					} 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);