summaryrefslogtreecommitdiff
path: root/src/train_gui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/train_gui.cpp')
-rw-r--r--src/train_gui.cpp62
1 files changed, 47 insertions, 15 deletions
diff --git a/src/train_gui.cpp b/src/train_gui.cpp
index b36b1484a..e61755fe8 100644
--- a/src/train_gui.cpp
+++ b/src/train_gui.cpp
@@ -110,7 +110,15 @@ void DrawTrainImage(const Vehicle *v, int x, int y, VehicleID selection, int cou
_cur_dpi = old_dpi;
}
-static void TrainDetailsCargoTab(const Vehicle *v, int x, int y)
+/**
+ * Draw the details cargo tab for the given vehicle at the given position
+ *
+ * @param v current vehicle
+ * @param left The left most coordinate to draw
+ * @param right The right most coordinate to draw
+ * @param y The y coordinate
+ */
+static void TrainDetailsCargoTab(const Vehicle *v, int left, int right, int y)
{
if (v->cargo_cap != 0) {
StringID str = STR_8812_EMPTY;
@@ -122,32 +130,48 @@ static void TrainDetailsCargoTab(const Vehicle *v, int x, int y)
SetDParam(3, _settings_game.vehicle.freight_trains);
str = FreightWagonMult(v->cargo_type) > 1 ? STR_FROM_MULT : STR_8813_FROM;
}
- DrawString(x, y, str, TC_FROMSTRING);
+ DrawString(left, right, y, str, TC_FROMSTRING);
}
}
-static void TrainDetailsInfoTab(const Vehicle *v, int x, int y)
+/**
+ * Draw the details info tab for the given vehicle at the given position
+ *
+ * @param v current vehicle
+ * @param left The left most coordinate to draw
+ * @param right The right most coordinate to draw
+ * @param y The y coordinate
+ */
+static void TrainDetailsInfoTab(const Vehicle *v, int left, int right, int y)
{
if (RailVehInfo(v->engine_type)->railveh_type == RAILVEH_WAGON) {
SetDParam(0, v->engine_type);
SetDParam(1, v->value);
- DrawString(x, y, STR_882D_VALUE, TC_BLACK);
+ DrawString(left, right, y, STR_882D_VALUE, TC_BLACK);
} else {
SetDParam(0, v->engine_type);
SetDParam(1, v->build_year);
SetDParam(2, v->value);
- DrawString(x, y, STR_882C_BUILT_VALUE, TC_BLACK);
+ DrawString(left, right, y, STR_882C_BUILT_VALUE, TC_BLACK);
}
}
-static void TrainDetailsCapacityTab(const Vehicle *v, int x, int y)
+/**
+ * Draw the details capacity tab for the given vehicle at the given position
+ *
+ * @param v current vehicle
+ * @param left The left most coordinate to draw
+ * @param right The right most coordinate to draw
+ * @param y The y coordinate
+ */
+static void TrainDetailsCapacityTab(const Vehicle *v, int left, int right, int y)
{
if (v->cargo_cap != 0) {
SetDParam(0, v->cargo_type);
SetDParam(1, v->cargo_cap);
SetDParam(2, GetCargoSubtypeText(v));
SetDParam(3, _settings_game.vehicle.freight_trains);
- DrawString(x, y, FreightWagonMult(v->cargo_type) > 1 ? STR_CAPACITY_MULT : STR_013F_CAPACITY, TC_FROMSTRING);
+ DrawString(left, right, y, FreightWagonMult(v->cargo_type) > 1 ? STR_CAPACITY_MULT : STR_013F_CAPACITY, TC_FROMSTRING);
}
}
@@ -182,12 +206,20 @@ int GetTrainDetailsWndVScroll(VehicleID veh_id, byte det_tab)
return num;
}
-void DrawTrainDetails(const Vehicle *v, int x, int y, int vscroll_pos, uint16 vscroll_cap, byte det_tab)
+/**
+ * Draw the details for the given vehicle at the given position
+ *
+ * @param v current vehicle
+ * @param left The left most coordinate to draw
+ * @param right The right most coordinate to draw
+ * @param y The y coordinate
+ */
+void DrawTrainDetails(const Vehicle *v, int left, int right, int y, int vscroll_pos, uint16 vscroll_cap, byte det_tab)
{
/* draw the first 3 details tabs */
if (det_tab != 3) {
const Vehicle *u = v;
- x = 1;
+ int x = 1;
for (;;) {
if (--vscroll_pos < 0 && vscroll_pos >= -vscroll_cap) {
int dx = 0;
@@ -204,14 +236,14 @@ void DrawTrainDetails(const Vehicle *v, int x, int y, int vscroll_pos, uint16 vs
int py = y + 2;
switch (det_tab) {
default: NOT_REACHED();
- case 0: TrainDetailsCargoTab( v, px, py); break;
+ case 0: TrainDetailsCargoTab( v, px, right, py); break;
case 1:
/* Only show name and value for the 'real' part */
if (!IsArticulatedPart(v)) {
- TrainDetailsInfoTab(v, px, py);
+ TrainDetailsInfoTab(v, px, right, py);
}
break;
- case 2: TrainDetailsCapacityTab(v, px, py); break;
+ case 2: TrainDetailsCapacityTab(v, px, right, py); break;
}
y += 14;
@@ -239,7 +271,7 @@ void DrawTrainDetails(const Vehicle *v, int x, int y, int vscroll_pos, uint16 vs
}
/* draw total cargo tab */
- DrawString(x, y + 2, STR_TOTAL_CAPACITY_TEXT, TC_FROMSTRING);
+ DrawString(left, right, y + 2, STR_TOTAL_CAPACITY_TEXT, TC_FROMSTRING);
for (CargoID i = 0; i < NUM_CARGO; i++) {
if (max_cargo[i] > 0 && --vscroll_pos < 0 && vscroll_pos > -vscroll_cap) {
y += 14;
@@ -248,10 +280,10 @@ void DrawTrainDetails(const Vehicle *v, int x, int y, int vscroll_pos, uint16 vs
SetDParam(2, i); // {SHORTCARGO} #1
SetDParam(3, max_cargo[i]); // {SHORTCARGO} #2
SetDParam(4, _settings_game.vehicle.freight_trains);
- DrawString(x, y + 2, FreightWagonMult(i) > 1 ? STR_TOTAL_CAPACITY_MULT : STR_TOTAL_CAPACITY, TC_FROMSTRING);
+ DrawString(left, right, y + 2, FreightWagonMult(i) > 1 ? STR_TOTAL_CAPACITY_MULT : STR_TOTAL_CAPACITY, TC_FROMSTRING);
}
}
SetDParam(0, feeder_share);
- DrawString(x, y + 15, STR_FEEDER_CARGO_VALUE, TC_FROMSTRING);
+ DrawString(left, right, y + 15, STR_FEEDER_CARGO_VALUE, TC_FROMSTRING);
}
}