(svn r15806) -Codechange: pass both left and right to the vehicle details drawing functions instead of only the left.

This commit is contained in:
rubidium
2009-03-22 10:37:51 +00:00
parent 24facf771d
commit 0cae096d2d
6 changed files with 101 additions and 58 deletions

View File

@@ -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);
}
}