Change: Use Rect for drawing vehicle details.

This commit is contained in:
Peter Nelson
2022-10-18 13:52:22 +01:00
committed by PeterN
parent 3ff05321dc
commit c9a81fd67b
5 changed files with 84 additions and 91 deletions

View File

@@ -23,20 +23,19 @@
* 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
* @param r the Rect to draw within
*/
void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y)
void DrawRoadVehDetails(const Vehicle *v, const Rect &r)
{
uint y_offset = v->HasArticulatedPart() ? ScaleGUITrad(15) : 0; // Draw the first line below the sprite of an articulated RV instead of after it.
int y = r.top + (v->HasArticulatedPart() ? ScaleGUITrad(15) : 0); // Draw the first line below the sprite of an articulated RV instead of after it.
StringID str;
Money feeder_share = 0;
SetDParam(0, v->engine_type);
SetDParam(1, v->build_year);
SetDParam(2, v->value);
DrawString(left, right, y + y_offset, STR_VEHICLE_INFO_BUILT_VALUE);
DrawString(r.left, r.right, y, STR_VEHICLE_INFO_BUILT_VALUE);
y += FONT_HEIGHT_NORMAL;
if (v->HasArticulatedPart()) {
CargoArray max_cargo;
@@ -76,7 +75,8 @@ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y)
}
}
DrawString(left, right, y + FONT_HEIGHT_NORMAL + y_offset, capacity, TC_BLUE);
DrawString(r.left, r.right, y, capacity, TC_BLUE);
y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
for (const Vehicle *u = v; u != nullptr; u = u->Next()) {
if (u->cargo_cap == 0) continue;
@@ -89,17 +89,16 @@ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y)
str = STR_VEHICLE_DETAILS_CARGO_FROM;
feeder_share += u->cargo.FeederShare();
}
DrawString(left, right, y + 2 * FONT_HEIGHT_NORMAL + 1 + y_offset, str);
y_offset += FONT_HEIGHT_NORMAL + 1;
DrawString(r.left, r.right, y, str);
y += FONT_HEIGHT_NORMAL;
}
y_offset -= FONT_HEIGHT_NORMAL + 1;
y += WD_PAR_VSEP_NORMAL;
} else {
SetDParam(0, v->cargo_type);
SetDParam(1, v->cargo_cap);
SetDParam(4, GetCargoSubtypeText(v));
DrawString(left, right, y + FONT_HEIGHT_NORMAL + y_offset, STR_VEHICLE_INFO_CAPACITY);
DrawString(r.left, r.right, y, STR_VEHICLE_INFO_CAPACITY);
y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
str = STR_VEHICLE_DETAILS_CARGO_EMPTY;
if (v->cargo.StoredCount() > 0) {
@@ -109,12 +108,13 @@ void DrawRoadVehDetails(const Vehicle *v, int left, int right, int y)
str = STR_VEHICLE_DETAILS_CARGO_FROM;
feeder_share += v->cargo.FeederShare();
}
DrawString(left, right, y + 2 * FONT_HEIGHT_NORMAL + 1 + y_offset, str);
DrawString(r.left, r.right, y, str);
y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
}
/* Draw Transfer credits text */
SetDParam(0, feeder_share);
DrawString(left, right, y + 3 * FONT_HEIGHT_NORMAL + 3 + y_offset, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE);
DrawString(r.left, r.right, y, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE);
}
/**