train_gui.c
changeset 534 306bc86eb23e
parent 524 bcbcedbf5ccd
child 538 24fdb517fbe5
equal deleted inserted replaced
533:404f9e37bff1 534:306bc86eb23e
   104 					count++;
   104 					count++;
   105 			}
   105 			}
   106 			SetVScrollCount(w, count);
   106 			SetVScrollCount(w, count);
   107 		}
   107 		}
   108 
   108 
   109 		SET_DPARAM16(0, WP(w,buildtrain_d).railtype + STR_881C_NEW_RAIL_VEHICLES);
   109 		SetDParam(0, WP(w,buildtrain_d).railtype + STR_881C_NEW_RAIL_VEHICLES);
   110 		DrawWindowWidgets(w);
   110 		DrawWindowWidgets(w);
   111 
   111 
   112 		{
   112 		{
   113 			byte railtype = WP(w,buildtrain_d).railtype;
   113 			byte railtype = WP(w,buildtrain_d).railtype;
   114 			int sel = WP(w,buildtrain_d).sel_index;
   114 			int sel = WP(w,buildtrain_d).sel_index;
   134 
   134 
   135 				if (!(rvi->flags & RVI_WAGON)) {
   135 				if (!(rvi->flags & RVI_WAGON)) {
   136 					/* it's an engine */
   136 					/* it's an engine */
   137 					int multihead = (rvi->flags&RVI_MULTIHEAD?1:0);
   137 					int multihead = (rvi->flags&RVI_MULTIHEAD?1:0);
   138 
   138 
   139 					SET_DPARAM32(0, rvi->base_cost * (_price.build_railvehicle >> 3) >> 5);
   139 					SetDParam(0, rvi->base_cost * (_price.build_railvehicle >> 3) >> 5);
   140 					SET_DPARAM16(2, rvi->max_speed * 10 >> 4);
   140 					SetDParam(2, rvi->max_speed * 10 >> 4);
   141 					SET_DPARAM16(3, rvi->power << multihead);
   141 					SetDParam(3, rvi->power << multihead);
   142 					SET_DPARAM16(1, rvi->weight << multihead);
   142 					SetDParam(1, rvi->weight << multihead);
   143 					SET_DPARAM32(4, (rvi->running_cost_base * _price.running_rail[rvi->engclass] >> 8) << multihead);
   143 					SetDParam(4, (rvi->running_cost_base * _price.running_rail[rvi->engclass] >> 8) << multihead);
   144 
   144 
   145 					SET_DPARAM16(5, STR_8838_N_A);
   145 					SetDParam(5, STR_8838_N_A);
   146 					if (rvi->capacity != 0) {
   146 					if (rvi->capacity != 0) {
   147 						SET_DPARAM16(6, rvi->capacity << multihead);
   147 						SetDParam(6, rvi->capacity << multihead);
   148 						SET_DPARAM16(5, _cargoc.names_long_p[rvi->cargo_type]);
   148 						SetDParam(5, _cargoc.names_long_p[rvi->cargo_type]);
   149 					}
   149 					}
   150 
   150 
   151 					e = &_engines[selected_id];
   151 					e = &_engines[selected_id];
   152 
   152 
   153 					SET_DPARAM16(8, e->lifelength);
   153 					SetDParam(8, e->lifelength);
   154 					SET_DPARAM8(9, e->reliability * 100 >> 16);
   154 					SetDParam(9, e->reliability * 100 >> 16);
   155 					ConvertDayToYMD(&ymd, e->intro_date);
   155 					ConvertDayToYMD(&ymd, e->intro_date);
   156 					SET_DPARAM16(7, ymd.year + 1920);
   156 					SetDParam(7, ymd.year + 1920);
   157 
   157 
   158 					DrawString(2, 0x7F, STR_8817_COST_WEIGHT_T_SPEED_POWER, 0);
   158 					DrawString(2, 0x7F, STR_8817_COST_WEIGHT_T_SPEED_POWER, 0);
   159 				} else {
   159 				} else {
   160 					/* it's a wagon */
   160 					/* it's a wagon */
   161 
   161 
   162 					SET_DPARAM32(0,
   162 					SetDParam(0,
   163 						DoCommandByTile(w->window_number, selected_id, 0, DC_QUERY_COST, CMD_BUILD_RAIL_VEHICLE)
   163 						DoCommandByTile(w->window_number, selected_id, 0, DC_QUERY_COST, CMD_BUILD_RAIL_VEHICLE)
   164 					);
   164 					);
   165 					SET_DPARAM16(4, rvi->capacity);
   165 					SetDParam(4, rvi->capacity);
   166 					SET_DPARAM16(1, rvi->weight);
   166 					SetDParam(1, rvi->weight);
   167 					SET_DPARAM16(3, _cargoc.names_long_p[rvi->cargo_type]);
   167 					SetDParam(3, _cargoc.names_long_p[rvi->cargo_type]);
   168 					SET_DPARAM16(2, (_cargoc.weights[rvi->cargo_type] * rvi->capacity >> 4) + rvi->weight);
   168 					SetDParam(2, (_cargoc.weights[rvi->cargo_type] * rvi->capacity >> 4) + rvi->weight);
   169 					DrawString(2, 0x7F, STR_8821_COST_WEIGHT_T_T_CAPACITY, 0);
   169 					DrawString(2, 0x7F, STR_8821_COST_WEIGHT_T_T_CAPACITY, 0);
   170 				}
   170 				}
   171 			}
   171 			}
   172 		}
   172 		}
   173 	break;
   173 	break;
   307 	SetHScrollCount(w, hnum);
   307 	SetHScrollCount(w, hnum);
   308 
   308 
   309 	/* locate the depot struct */
   309 	/* locate the depot struct */
   310 	for(d=_depots; d->xy != (TileIndex)tile; d++) {}
   310 	for(d=_depots; d->xy != (TileIndex)tile; d++) {}
   311 
   311 
   312 	SET_DPARAM16(0,d->town_index);
   312 	SetDParam(0,d->town_index);
   313 	DrawWindowWidgets(w);
   313 	DrawWindowWidgets(w);
   314 
   314 
   315 	x = 2;
   315 	x = 2;
   316 	y = 15;
   316 	y = 15;
   317 	num = w->vscroll.pos;
   317 	num = w->vscroll.pos;
   324 				v->u.rail.track == 0x80 &&
   324 				v->u.rail.track == 0x80 &&
   325 				--num < 0 && num >= -6) {
   325 				--num < 0 && num >= -6) {
   326 
   326 
   327 			DrawTrainImage(v, x+21, y, 10, w->hscroll.pos, WP(w,traindepot_d).sel);
   327 			DrawTrainImage(v, x+21, y, 10, w->hscroll.pos, WP(w,traindepot_d).sel);
   328 			/* Draw the train number */
   328 			/* Draw the train number */
   329 			SET_DPARAM16(0, v->unitnumber);
   329 			SetDParam(0, v->unitnumber);
   330 			DrawString(x, y, (v->max_age - 366 < v->age) ? STR_00E3 : STR_00E2, 0);
   330 			DrawString(x, y, (v->max_age - 366 < v->age) ? STR_00E3 : STR_00E2, 0);
   331 			/* Draw the pretty flag */
   331 			/* Draw the pretty flag */
   332 			DrawSprite(v->vehstatus&VS_STOPPED ? 0xC12 : 0xC13, x+15, y);
   332 			DrawSprite(v->vehstatus&VS_STOPPED ? 0xC12 : 0xC13, x+15, y);
   333 
   333 
   334 			y += 14;
   334 			y += 14;
   620 		int sel;
   620 		int sel;
   621 		int x,y;
   621 		int x,y;
   622 		byte color;
   622 		byte color;
   623 		int cargo;
   623 		int cargo;
   624 
   624 
   625 		SET_DPARAM16(0, v->string_id);
   625 		SetDParam(0, v->string_id);
   626 		SET_DPARAM16(1, v->unitnumber);
   626 		SetDParam(1, v->unitnumber);
   627 		DrawWindowWidgets(w);
   627 		DrawWindowWidgets(w);
   628 
   628 
   629 		DrawString(1, 15, STR_983F_SELECT_CARGO_TYPE_TO_CARRY, 0);
   629 		DrawString(1, 15, STR_983F_SELECT_CARGO_TYPE_TO_CARRY, 0);
   630 
   630 
   631 		cargo = -1;
   631 		cargo = -1;
   669 		WP(w,refit_d).cargo = cargo;
   669 		WP(w,refit_d).cargo = cargo;
   670 
   670 
   671 		if (cargo != -1) {
   671 		if (cargo != -1) {
   672 			int32 cost = DoCommandByTile(v->tile, v->index, cargo, 0, CMD_REFIT_RAIL_VEHICLE);
   672 			int32 cost = DoCommandByTile(v->tile, v->index, cargo, 0, CMD_REFIT_RAIL_VEHICLE);
   673 			if (cost != CMD_ERROR) {
   673 			if (cost != CMD_ERROR) {
   674 				SET_DPARAM32(2, cost);
   674 				SetDParam(2, cost);
   675 				SET_DPARAM16(0, _cargoc.names_long_p[cargo]);
   675 				SetDParam(0, _cargoc.names_long_p[cargo]);
   676 				SET_DPARAM16(1, _returned_refit_amount);
   676 				SetDParam(1, _returned_refit_amount);
   677 				DrawString(1, 137, STR_9840_NEW_CAPACITY_COST_OF_REFIT, 0);
   677 				DrawString(1, 137, STR_9840_NEW_CAPACITY_COST_OF_REFIT, 0);
   678 			}
   678 			}
   679 		}
   679 		}
   680 		break;
   680 		break;
   681 	}
   681 	}
   757 
   757 
   758 		w->disabled_state = (v->owner == _local_player) ? 0 : 0x1C0;
   758 		w->disabled_state = (v->owner == _local_player) ? 0 : 0x1C0;
   759 
   759 
   760 
   760 
   761 		/* draw widgets & caption */
   761 		/* draw widgets & caption */
   762 		SET_DPARAM16(0, v->string_id);
   762 		SetDParam(0, v->string_id);
   763 		SET_DPARAM16(1, v->unitnumber);
   763 		SetDParam(1, v->unitnumber);
   764 		DrawWindowWidgets(w);
   764 		DrawWindowWidgets(w);
   765 
   765 
   766 		/* draw the flag */
   766 		/* draw the flag */
   767 		DrawSprite( (v->vehstatus&VS_STOPPED) ? 0xC12 : 0xC13, 2, 123);
   767 		DrawSprite( (v->vehstatus&VS_STOPPED) ? 0xC12 : 0xC13, 2, 123);
   768 
   768 
   772 			str = STR_885C_BROKEN_DOWN;
   772 			str = STR_885C_BROKEN_DOWN;
   773 		} else if (v->vehstatus & VS_STOPPED) {
   773 		} else if (v->vehstatus & VS_STOPPED) {
   774 			if (v->u.rail.last_speed == 0) {
   774 			if (v->u.rail.last_speed == 0) {
   775 				str = STR_8861_STOPPED;
   775 				str = STR_8861_STOPPED;
   776 			} else {
   776 			} else {
   777 				SET_DPARAM16(0, v->u.rail.last_speed * 10 >> 4);
   777 				SetDParam(0, v->u.rail.last_speed * 10 >> 4);
   778 				str = STR_TRAIN_STOPPING + _patches.vehicle_speed;
   778 				str = STR_TRAIN_STOPPING + _patches.vehicle_speed;
   779 			}
   779 			}
   780 		} else {
   780 		} else {
   781 			switch(v->next_order & OT_MASK) {
   781 			switch(v->next_order & OT_MASK) {
   782 			case OT_GOTO_STATION: {
   782 			case OT_GOTO_STATION: {
   783 				str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
   783 				str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
   784 				SET_DPARAM16(0, v->next_order_param);
   784 				SetDParam(0, v->next_order_param);
   785 				SET_DPARAM16(1, v->u.rail.last_speed * 10 >> 4);
   785 				SetDParam(1, v->u.rail.last_speed * 10 >> 4);
   786 			} break;
   786 			} break;
   787 
   787 
   788 			case OT_GOTO_DEPOT: {
   788 			case OT_GOTO_DEPOT: {
   789 				Depot *dep = &_depots[v->next_order_param];
   789 				Depot *dep = &_depots[v->next_order_param];
   790 				SET_DPARAM16(0, dep->town_index);
   790 				SetDParam(0, dep->town_index);
   791 				str = STR_HEADING_FOR_TRAIN_DEPOT + _patches.vehicle_speed;
   791 				str = STR_HEADING_FOR_TRAIN_DEPOT + _patches.vehicle_speed;
   792 				SET_DPARAM16(1, v->u.rail.last_speed * 10 >> 4);
   792 				SetDParam(1, v->u.rail.last_speed * 10 >> 4);
   793 			} break;
   793 			} break;
   794 
   794 
   795 			case OT_LOADING:
   795 			case OT_LOADING:
   796 			case OT_LEAVESTATION:
   796 			case OT_LEAVESTATION:
   797 				str = STR_882F_LOADING_UNLOADING;
   797 				str = STR_882F_LOADING_UNLOADING;
   798 				break;
   798 				break;
   799 
   799 
   800 			case OT_GOTO_WAYPOINT: {
   800 			case OT_GOTO_WAYPOINT: {
   801 				SET_DPARAM16(0, v->next_order_param);
   801 				SetDParam(0, v->next_order_param);
   802 				str = STR_HEADING_FOR_WAYPOINT + _patches.vehicle_speed;
   802 				str = STR_HEADING_FOR_WAYPOINT + _patches.vehicle_speed;
   803 				SET_DPARAM16(1, v->u.rail.last_speed * 10 >> 4);
   803 				SetDParam(1, v->u.rail.last_speed * 10 >> 4);
   804 				break;
   804 				break;
   805 			}
   805 			}
   806 
   806 
   807 			default:
   807 			default:
   808 				if (v->num_orders == 0) {
   808 				if (v->num_orders == 0) {
   809 					str = STR_NO_ORDERS + _patches.vehicle_speed;
   809 					str = STR_NO_ORDERS + _patches.vehicle_speed;
   810 					SET_DPARAM16(0, v->u.rail.last_speed * 10 >> 4);
   810 					SetDParam(0, v->u.rail.last_speed * 10 >> 4);
   811 				} else
   811 				} else
   812 					str = STR_EMPTY;
   812 					str = STR_EMPTY;
   813 				break;
   813 				break;
   814 			}
   814 			}
   815 		}
   815 		}
   899 
   899 
   900 	if (v->cargo_cap != 0) {
   900 	if (v->cargo_cap != 0) {
   901 		num = v->cargo_count;
   901 		num = v->cargo_count;
   902 		str = STR_8812_EMPTY;
   902 		str = STR_8812_EMPTY;
   903 		if (num != 0) {
   903 		if (num != 0) {
   904 			SET_DPARAM8(0, v->cargo_type);
   904 			SetDParam(0, v->cargo_type);
   905 			SET_DPARAM16(1, num);
   905 			SetDParam(1, num);
   906 			SET_DPARAM16(2, v->cargo_source);
   906 			SetDParam(2, v->cargo_source);
   907 			str = STR_8813_FROM;
   907 			str = STR_8813_FROM;
   908 		}
   908 		}
   909 		DrawString(x, y, str, 0);
   909 		DrawString(x, y, str, 0);
   910 	}
   910 	}
   911 }
   911 }
   915 	const RailVehicleInfo *rvi;
   915 	const RailVehicleInfo *rvi;
   916 
   916 
   917 	rvi = &_rail_vehicle_info[v->engine_type];
   917 	rvi = &_rail_vehicle_info[v->engine_type];
   918 
   918 
   919 	if (!(rvi->flags & RVI_WAGON)) {
   919 	if (!(rvi->flags & RVI_WAGON)) {
   920 		SET_DPARAM16(0, GetCustomEngineName(v->engine_type));
   920 		SetDParam(0, GetCustomEngineName(v->engine_type));
   921 		SET_DPARAM16(1, v->build_year + 1920);
   921 		SetDParam(1, v->build_year + 1920);
   922 		SET_DPARAM32(2, v->value);
   922 		SetDParam(2, v->value);
   923 		DrawString(x, y, STR_882C_BUILT_VALUE, 0x10);
   923 		DrawString(x, y, STR_882C_BUILT_VALUE, 0x10);
   924 	} else {
   924 	} else {
   925 		SET_DPARAM16(0, GetCustomEngineName(v->engine_type));
   925 		SetDParam(0, GetCustomEngineName(v->engine_type));
   926 		SET_DPARAM32(1, v->value);
   926 		SetDParam(1, v->value);
   927 		DrawString(x, y, STR_882D_VALUE, 0x10);
   927 		DrawString(x, y, STR_882D_VALUE, 0x10);
   928 	}
   928 	}
   929 }
   929 }
   930 
   930 
   931 static void TrainDetailsCapacityTab(Vehicle *v, int x, int y)
   931 static void TrainDetailsCapacityTab(Vehicle *v, int x, int y)
   932 {
   932 {
   933 	if (v->cargo_cap != 0) {
   933 	if (v->cargo_cap != 0) {
   934 		SET_DPARAM16(1, v->cargo_cap);
   934 		SetDParam(1, v->cargo_cap);
   935 		SET_DPARAM16(0, _cargoc.names_long_p[v->cargo_type]);
   935 		SetDParam(0, _cargoc.names_long_p[v->cargo_type]);
   936 		DrawString(x, y, STR_013F_CAPACITY, 0);
   936 		DrawString(x, y, STR_013F_CAPACITY, 0);
   937 	}
   937 	}
   938 }
   938 }
   939 
   939 
   940 typedef void TrainDetailsDrawerProc(Vehicle *v, int x, int y);
   940 typedef void TrainDetailsDrawerProc(Vehicle *v, int x, int y);
   988 		w->disabled_state |= (1 << 2);
   988 		w->disabled_state |= (1 << 2);
   989 
   989 
   990 	if (!_patches.servint_trains) // disable service-scroller when interval is set to disabled
   990 	if (!_patches.servint_trains) // disable service-scroller when interval is set to disabled
   991 		w->disabled_state |= (1 << 6) | (1 << 7);
   991 		w->disabled_state |= (1 << 6) | (1 << 7);
   992 
   992 
   993 	SET_DPARAM16(0, v->string_id);
   993 	SetDParam(0, v->string_id);
   994 	SET_DPARAM16(1, v->unitnumber);
   994 	SetDParam(1, v->unitnumber);
   995 	DrawWindowWidgets(w);
   995 	DrawWindowWidgets(w);
   996 
   996 
   997 	num = v->age / 366;
   997 	num = v->age / 366;
   998 	SET_DPARAM16(1, num);
   998 	SetDParam(1, num);
   999 
   999 
  1000 	x = 2;
  1000 	x = 2;
  1001 
  1001 
  1002 	str = STR_0199_YEAR;
  1002 	str = STR_0199_YEAR;
  1003 	if (num != 1) {
  1003 	if (num != 1) {
  1004 		str += STR_019A_YEARS - STR_0199_YEAR;
  1004 		str += STR_019A_YEARS - STR_0199_YEAR;
  1005 		if ((uint16)(v->max_age - 366) < v->age)
  1005 		if ((uint16)(v->max_age - 366) < v->age)
  1006 			str += STR_019B_YEARS - STR_019A_YEARS;
  1006 			str += STR_019B_YEARS - STR_019A_YEARS;
  1007 	}
  1007 	}
  1008 	SET_DPARAM16(0, str);
  1008 	SetDParam(0, str);
  1009 	SET_DPARAM16(2, v->max_age / 366);
  1009 	SetDParam(2, v->max_age / 366);
  1010 	SET_DPARAM32(3, GetTrainRunningCost(v) >> 8);
  1010 	SetDParam(3, GetTrainRunningCost(v) >> 8);
  1011 	DrawString(x, 15, STR_885D_AGE_RUNNING_COST_YR, 0);
  1011 	DrawString(x, 15, STR_885D_AGE_RUNNING_COST_YR, 0);
  1012 
  1012 
  1013 	SET_DPARAM16(2, v->max_speed * 10 >> 4);
  1013 	SetDParam(2, v->max_speed * 10 >> 4);
  1014 	SET_DPARAM32(1, v->u.rail.cached_power);
  1014 	SetDParam(1, v->u.rail.cached_power);
  1015 	SET_DPARAM16(0, v->u.rail.cached_weight);
  1015 	SetDParam(0, v->u.rail.cached_weight);
  1016 	DrawString(x, 25, STR_885E_WEIGHT_T_POWER_HP_MAX_SPEED, 0);
  1016 	DrawString(x, 25, STR_885E_WEIGHT_T_POWER_HP_MAX_SPEED, 0);
  1017 
  1017 
  1018 	SET_DPARAM32(0, v->profit_this_year);
  1018 	SetDParam(0, v->profit_this_year);
  1019 	SET_DPARAM32(1, v->profit_last_year);
  1019 	SetDParam(1, v->profit_last_year);
  1020 	DrawString(x, 35, STR_885F_PROFIT_THIS_YEAR_LAST_YEAR, 0);
  1020 	DrawString(x, 35, STR_885F_PROFIT_THIS_YEAR_LAST_YEAR, 0);
  1021 
  1021 
  1022 	SET_DPARAM8(0, 100 * (v->reliability>>8) >> 8);
  1022 	SetDParam(0, 100 * (v->reliability>>8) >> 8);
  1023 	SET_DPARAM16(1, v->breakdowns_since_last_service);
  1023 	SetDParam(1, v->breakdowns_since_last_service);
  1024 	DrawString(x, 45, STR_8860_RELIABILITY_BREAKDOWNS, 0);
  1024 	DrawString(x, 45, STR_8860_RELIABILITY_BREAKDOWNS, 0);
  1025 
  1025 
  1026 	SET_DPARAM16(0, v->service_interval);
  1026 	SetDParam(0, v->service_interval);
  1027 	SET_DPARAM16(1, v->date_of_last_service);
  1027 	SetDParam(1, v->date_of_last_service);
  1028 	DrawString(x + 11, 141, _patches.servint_ispercent?STR_SERVICING_INTERVAL_PERCENT:STR_883C_SERVICING_INTERVAL_DAYS, 0);
  1028 	DrawString(x + 11, 141, _patches.servint_ispercent?STR_SERVICING_INTERVAL_PERCENT:STR_883C_SERVICING_INTERVAL_DAYS, 0);
  1029 
  1029 
  1030 	x = 1;
  1030 	x = 1;
  1031 	y = 57;
  1031 	y = 57;
  1032 	sel = w->vscroll.pos;
  1032 	sel = w->vscroll.pos;
  1048 		DrawString(x, y + 2, STR_013F_TOTAL_CAPACITY_TEXT, 0);
  1048 		DrawString(x, y + 2, STR_013F_TOTAL_CAPACITY_TEXT, 0);
  1049 		do {
  1049 		do {
  1050 			if (tot_cargo[i][1] > 0 && --sel < 0 && sel >= -5) {
  1050 			if (tot_cargo[i][1] > 0 && --sel < 0 && sel >= -5) {
  1051 				y += 14;
  1051 				y += 14;
  1052 				// STR_013F_TOTAL_CAPACITY			:{LTBLUE}- {CARGO} ({SHORTCARGO})
  1052 				// STR_013F_TOTAL_CAPACITY			:{LTBLUE}- {CARGO} ({SHORTCARGO})
  1053 				SET_DPARAM8(0, i);								// {CARGO} #1
  1053 				SetDParam(0, i);								// {CARGO} #1
  1054 				SET_DPARAM16(1, tot_cargo[i][0]);	// {CARGO} #2
  1054 				SetDParam(1, tot_cargo[i][0]);	// {CARGO} #2
  1055 				SET_DPARAM8(2, i);								// {SHORTCARGO} #1
  1055 				SetDParam(2, i);								// {SHORTCARGO} #1
  1056 				SET_DPARAM16(3, tot_cargo[i][1]);	// {SHORTCARGO} #2
  1056 				SetDParam(3, tot_cargo[i][1]);	// {SHORTCARGO} #2
  1057 				DrawString(x, y, STR_013F_TOTAL_CAPACITY, 0);
  1057 				DrawString(x, y, STR_013F_TOTAL_CAPACITY, 0);
  1058 			}
  1058 			}
  1059 		} while (++i != NUM_CARGO);
  1059 		} while (++i != NUM_CARGO);
  1060 	}
  1060 	}
  1061 }
  1061 }
  1070 		int mod;
  1070 		int mod;
  1071 		Vehicle *v;
  1071 		Vehicle *v;
  1072 		switch(e->click.widget) {
  1072 		switch(e->click.widget) {
  1073 		case 2: /* name train */
  1073 		case 2: /* name train */
  1074 			v = &_vehicles[w->window_number];
  1074 			v = &_vehicles[w->window_number];
  1075 			SET_DPARAM16(0, v->unitnumber);
  1075 			SetDParam(0, v->unitnumber);
  1076 			ShowQueryString(v->string_id, STR_8865_NAME_TRAIN, 31, 150, w->window_class, w->window_number);
  1076 			ShowQueryString(v->string_id, STR_8865_NAME_TRAIN, 31, 150, w->window_class, w->window_number);
  1077 			break;
  1077 			break;
  1078 		case 6:	/* inc serv interval */
  1078 		case 6:	/* inc serv interval */
  1079 			mod = _ctrl_pressed? 5 : 10;
  1079 			mod = _ctrl_pressed? 5 : 10;
  1080 			goto do_change_service_int;
  1080 			goto do_change_service_int;
  1254 
  1254 
  1255 		/* draw the widgets */
  1255 		/* draw the widgets */
  1256 		{
  1256 		{
  1257 			Player *p = DEREF_PLAYER(window_number);
  1257 			Player *p = DEREF_PLAYER(window_number);
  1258 			/* Company Name -- (###) Trains */
  1258 			/* Company Name -- (###) Trains */
  1259 			SET_DPARAM16(0, p->name_1);
  1259 			SetDParam(0, p->name_1);
  1260 			SET_DPARAM32(1, p->name_2);
  1260 			SetDParam(1, p->name_2);
  1261 			SET_DPARAM16(2, w->vscroll.count);
  1261 			SetDParam(2, w->vscroll.count);
  1262 			DrawWindowWidgets(w);
  1262 			DrawWindowWidgets(w);
  1263 		}
  1263 		}
  1264 		/* draw sorting criteria string */
  1264 		/* draw sorting criteria string */
  1265 		DrawString(85, 15, _vehicle_sort_listing[_train_sort_type[window_number]], 0x10);
  1265 		DrawString(85, 15, _vehicle_sort_listing[_train_sort_type[window_number]], 0x10);
  1266 		/* draw arrow pointing up/down for ascending/descending soring */
  1266 		/* draw arrow pointing up/down for ascending/descending soring */
  1281 				assert(v->type == VEH_Train && v->subtype == 0 && v->owner == window_number);
  1281 				assert(v->type == VEH_Train && v->subtype == 0 && v->owner == window_number);
  1282 
  1282 
  1283 				DrawTrainImage(v, x + 21, y + 6 + _traininfo_vehicle_pitch, 10, 0, INVALID_VEHICLE);
  1283 				DrawTrainImage(v, x + 21, y + 6 + _traininfo_vehicle_pitch, 10, 0, INVALID_VEHICLE);
  1284 				DrawVehicleProfitButton(v, x, y+13);
  1284 				DrawVehicleProfitButton(v, x, y+13);
  1285 
  1285 
  1286 				SET_DPARAM16(0, v->unitnumber);
  1286 				SetDParam(0, v->unitnumber);
  1287 				if (IsTrainDepotTile(v->tile)) {
  1287 				if (IsTrainDepotTile(v->tile)) {
  1288 					str = STR_021F;
  1288 					str = STR_021F;
  1289 				} else {
  1289 				} else {
  1290 					str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
  1290 					str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
  1291 				}
  1291 				}
  1292 				DrawString(x, y+2, str, 0);
  1292 				DrawString(x, y+2, str, 0);
  1293 
  1293 
  1294 				SET_DPARAM32(0, v->profit_this_year);
  1294 				SetDParam(0, v->profit_this_year);
  1295 				SET_DPARAM32(1, v->profit_last_year);
  1295 				SetDParam(1, v->profit_last_year);
  1296 				DrawString(x + 21, y + 18, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
  1296 				DrawString(x + 21, y + 18, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
  1297 
  1297 
  1298 				if (v->string_id != STR_SV_TRAIN_NAME) {
  1298 				if (v->string_id != STR_SV_TRAIN_NAME) {
  1299 					SET_DPARAM16(0, v->string_id);
  1299 					SetDParam(0, v->string_id);
  1300 					DrawString(x+21, y, STR_01AB, 0);
  1300 					DrawString(x+21, y, STR_01AB, 0);
  1301 				}
  1301 				}
  1302 
  1302 
  1303 				y += PLY_WND_PRC__SIZE_OF_ROW_SMALL;
  1303 				y += PLY_WND_PRC__SIZE_OF_ROW_SMALL;
  1304 				i++; // next train
  1304 				i++; // next train