summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2013-02-17 14:59:27 +0000
committerrubidium <rubidium@openttd.org>2013-02-17 14:59:27 +0000
commit4367224b35d849ebe0079e7aea0b3939399f5ffd (patch)
treeb428bf54d643a37f238705390c72786ca9f91718
parentcdb0a7695820ac088df6736cb59ac9989f945c8e (diff)
downloadopenttd-4367224b35d849ebe0079e7aea0b3939399f5ffd.tar.xz
(svn r25013) -Feature: show the amount of cargo that has already been reserved by full loading vehicles in the station (fonsinchen)
-rw-r--r--src/cargopacket.h19
-rw-r--r--src/lang/english.txt1
-rw-r--r--src/station_gui.cpp12
3 files changed, 31 insertions, 1 deletions
diff --git a/src/cargopacket.h b/src/cargopacket.h
index 130848d35..bffc845ea 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 718ab9af4..2417042fc 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 b0709e2c2..b25568866 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);