changeset 15167:2ef5704286b9 draft

(svn r19796) -Codechange: introduce and use a {DEPOT} string command
author rubidium <rubidium@openttd.org>
date Wed, 12 May 2010 18:19:36 +0000
parents 72f99e07bfa9
children 45b619549a32
files src/depot_gui.cpp src/lang/english.txt src/order_gui.cpp src/strings.cpp src/table/control_codes.h src/table/strgen_tables.h src/vehicle_gui.cpp
diffstat 7 files changed, 54 insertions(+), 76 deletions(-) [+]
line wrap: on
line diff
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -62,7 +62,7 @@
 static const NWidgetPart _nested_train_depot_widgets[] = {
 	NWidget(NWID_HORIZONTAL),
 		NWidget(WWT_CLOSEBOX, COLOUR_GREY),
-		NWidget(WWT_CAPTION, COLOUR_GREY, DEPOT_WIDGET_CAPTION),
+		NWidget(WWT_CAPTION, COLOUR_GREY, DEPOT_WIDGET_CAPTION), SetDataTip(STR_DEPOT_CAPTION, STR_NULL),
 		NWidget(WWT_SHADEBOX, COLOUR_GREY),
 		NWidget(WWT_STICKYBOX, COLOUR_GREY),
 	EndContainer(),
@@ -340,14 +340,8 @@
 
 		/* locate the depot struct */
 		TileIndex tile = this->window_number;
-		if (this->type == VEH_AIRCRAFT) {
-			SetDParam(0, GetStationIndex(tile)); // Airport name
-		} else {
-			Depot *depot = Depot::GetByTile(tile);
-			assert(depot != NULL);
-
-			SetDParam(0, depot->town_index);
-		}
+		SetDParam(0, this->type);
+		SetDParam(1, (this->type == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile));
 	}
 
 	struct GetDepotVehiclePtData {
@@ -543,7 +537,6 @@
 	{
 		if (type != VEH_TRAIN) this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL_CHAIN)->fill_y = 0; // Disable vertical filling of chain-sell widget for non-train windows.
 
-		this->GetWidget<NWidgetCore>(DEPOT_WIDGET_CAPTION)->widget_data   = STR_DEPOT_TRAIN_CAPTION + type;
 		this->GetWidget<NWidgetCore>(DEPOT_WIDGET_STOP_ALL)->tool_tip     = STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP + type;
 		this->GetWidget<NWidgetCore>(DEPOT_WIDGET_START_ALL)->tool_tip    = STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP + type;
 		this->GetWidget<NWidgetCore>(DEPOT_WIDGET_SELL)->tool_tip         = STR_DEPOT_TRAIN_SELL_TOOLTIP + type;
@@ -752,9 +745,10 @@
 					TileIndex tile = this->window_number;
 					byte vehtype = this->type;
 
-					SetDParam(0, (vehtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : Depot::GetByTile(tile)->town_index);
+					SetDParam(0, vehtype);
+					SetDParam(1, (vehtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile));
 					ShowQuery(
-						STR_DEPOT_TRAIN_CAPTION + vehtype,
+						STR_DEPOT_CAPTION,
 						STR_DEPOT_SELL_CONFIRMATION_TEXT,
 						this,
 						DepotSellAllConfirmationCallback
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -2666,10 +2666,10 @@
 STR_CONFIG_GAME_PRODUCTION                                      :{WHITE}Change production (multiple of 8, up to 2040)
 
 # Vehicle lists
-STR_VEHICLE_LIST_TRAIN_CAPTION                                  :{WHITE}{STRING1} - {COMMA} Train{P "" s}
-STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION                           :{WHITE}{STRING1} - {COMMA} Road Vehicle{P "" s}
-STR_VEHICLE_LIST_SHIP_CAPTION                                   :{WHITE}{STRING1} - {COMMA} Ship{P "" s}
-STR_VEHICLE_LIST_AIRCRAFT_CAPTION                               :{WHITE}{STRING1} - {COMMA} Aircraft
+STR_VEHICLE_LIST_TRAIN_CAPTION                                  :{WHITE}{STRING2} - {COMMA} Train{P "" s}
+STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION                           :{WHITE}{STRING2} - {COMMA} Road Vehicle{P "" s}
+STR_VEHICLE_LIST_SHIP_CAPTION                                   :{WHITE}{STRING2} - {COMMA} Ship{P "" s}
+STR_VEHICLE_LIST_AIRCRAFT_CAPTION                               :{WHITE}{STRING2} - {COMMA} Aircraft
 
 STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP                             :{BLACK}Trains - click on train for information
 STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP                           :{BLACK}Road vehicles - click on vehicle for information
@@ -2781,10 +2781,7 @@
 STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION                          :{WHITE}Rename aircraft type
 
 # Depot window
-STR_DEPOT_TRAIN_CAPTION                                         :{WHITE}{TOWN} Train Depot
-STR_DEPOT_ROAD_VEHICLE_CAPTION                                  :{WHITE}{TOWN} Road Vehicle Depot
-STR_DEPOT_SHIP_CAPTION                                          :{WHITE}{TOWN} Ship Depot
-STR_DEPOT_AIRCRAFT_CAPTION                                      :{WHITE}{STATION} Aircraft Hangar
+STR_DEPOT_CAPTION                                               :{WHITE}{DEPOT}
 
 STR_DEPOT_NO_ENGINE                                             :{BLACK}-
 STR_DEPOT_VEHICLE_TOOLTIP                                       :{BLACK}{ENGINE}{RAW_STRING}
@@ -2964,23 +2961,11 @@
 STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT                         :{LTBLUE}Heading for {WAYPOINT}
 STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL                     :{LTBLUE}Heading for {WAYPOINT}, {VELOCITY}
 
-STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT                      :{ORANGE}Heading for {TOWN} Train Depot
-STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT_VEL                  :{ORANGE}Heading for {TOWN} Train Depot, {VELOCITY}
-STR_VEHICLE_STATUS_HEADING_FOR_ROAD_VEHICLE_DEPOT               :{ORANGE}Heading for {TOWN} Road Depot
-STR_VEHICLE_STATUS_HEADING_FOR_ROAD_VEHICLE_DEPOT_VEL           :{ORANGE}Heading for {TOWN} Road Depot, {VELOCITY}
-STR_VEHICLE_STATUS_HEADING_FOR_SHIP_DEPOT                       :{ORANGE}Heading for {TOWN} Ship Depot
-STR_VEHICLE_STATUS_HEADING_FOR_SHIP_DEPOT_VEL                   :{ORANGE}Heading for {TOWN} Ship Depot, {VELOCITY}
-STR_VEHICLE_STATUS_HEADING_FOR_HANGAR                           :{ORANGE}Heading for {STATION} Hangar
-STR_VEHICLE_STATUS_HEADING_FOR_HANGAR_VEL                       :{ORANGE}Heading for {STATION} Hangar, {VELOCITY}
-
-STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT_SERVICE              :{LTBLUE}Service at {TOWN} Train Depot
-STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL          :{LTBLUE}Service at {TOWN} Train Depot, {VELOCITY}
-STR_VEHICLE_STATUS_HEADING_FOR_ROAD_VEHICLE_DEPOT_SERVICE       :{LTBLUE}Service at {TOWN} Road Depot
-STR_VEHICLE_STATUS_HEADING_FOR_ROAD_VEHICLE_DEPOT_SERVICE_VEL   :{LTBLUE}Service at {TOWN} Road Depot, {VELOCITY}
-STR_VEHICLE_STATUS_HEADING_FOR_SHIP_DEPOT_SERVICE               :{LTBLUE}Service at {TOWN} Ship Depot
-STR_VEHICLE_STATUS_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL           :{LTBLUE}Service at {TOWN} Ship Depot, {VELOCITY}
-STR_VEHICLE_STATUS_HEADING_FOR_HANGAR_SERVICE                   :{LTBLUE}Service at {STATION} Hangar
-STR_VEHICLE_STATUS_HEADING_FOR_HANGAR_SERVICE_VEL               :{LTBLUE}Service at {STATION} Hangar, {VELOCITY}
+STR_VEHICLE_STATUS_HEADING_FOR_DEPOT                            :{ORANGE}Heading for {DEPOT}
+STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL                        :{ORANGE}Heading for {DEPOT}, {VELOCITY}
+
+STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE                    :{LTBLUE}Service at {DEPOT}
+STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL                :{LTBLUE}Service at {DEPOT}, {VELOCITY}
 
 # Vehicle stopped/started animations
 STR_VEHICLE_COMMAND_STOPPED_SMALL                               :{TINYFONT}{RED}Stopped
@@ -3161,9 +3146,8 @@
 STR_ORDER_TRAIN_DEPOT                                           :Train Depot
 STR_ORDER_ROAD_VEHICLE_DEPOT                                    :Road Vehicle Depot
 STR_ORDER_SHIP_DEPOT                                            :Ship Depot
-STR_ORDER_GO_TO_DEPOT_FORMAT                                    :{STRING} {TOWN} {STRING}
 STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT                            :{STRING} {STRING} {STRING}
-STR_ORDER_GO_TO_HANGAR_FORMAT                                   :{STRING} {STATION} Hangar
+STR_ORDER_GO_TO_DEPOT_FORMAT                                    :{STRING} {DEPOT}
 
 STR_ORDER_REFIT_ORDER                                           :(Refit to {STRING})
 STR_ORDER_REFIT_STOP_ORDER                                      :(Refit to {STRING} and stop)
@@ -4075,6 +4059,11 @@
 STR_FORMAT_WAYPOINT_NAME                                        :{TOWN} Waypoint
 STR_FORMAT_WAYPOINT_NAME_SERIAL                                 :{TOWN} Waypoint #{COMMA}
 
+STR_FORMAT_DEPOT_NAME_TRAIN                                     :{TOWN} Train Depot
+STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE                              :{TOWN} Road Vehicle Depot
+STR_FORMAT_DEPOT_NAME_SHIP                                      :{TOWN} Ship Depot
+STR_FORMAT_DEPOT_NAME_AIRCRAFT                                  :{STATION} Hangar
+
 STR_UNKNOWN_STATION                                             :unknown station
 STR_DEFAULT_SIGN_NAME                                           :Sign
 STR_COMPANY_SOMEONE                                             :someone
--- a/src/order_gui.cpp
+++ b/src/order_gui.cpp
@@ -232,25 +232,19 @@
 		} break;
 
 		case OT_GOTO_DEPOT:
-			if (v->type == VEH_AIRCRAFT) {
-				if (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) {
-					SetDParam(0, STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT);
+			if (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) {
+				SetDParam(0, STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT);
+				if (v->type == VEH_AIRCRAFT) {
 					SetDParam(2, STR_ORDER_NEAREST_HANGAR);
+					SetDParam(3, STR_EMPTY);
 				} else {
-					SetDParam(0, STR_ORDER_GO_TO_HANGAR_FORMAT);
-					SetDParam(2, order->GetDestination());
+					SetDParam(2, STR_ORDER_NEAREST_DEPOT);
+					SetDParam(3, STR_ORDER_TRAIN_DEPOT + v->type);
 				}
-				SetDParam(3, STR_EMPTY);
 			} else {
-				if (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) {
-					SetDParam(0, STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT);
-					SetDParam(2, STR_ORDER_NEAREST_DEPOT);
-				} else {
-					SetDParam(0, STR_ORDER_GO_TO_DEPOT_FORMAT);
-					SetDParam(2, Depot::Get(order->GetDestination())->town_index);
-				}
-
-				SetDParam(3, STR_ORDER_TRAIN_DEPOT + v->type);
+				SetDParam(0, STR_ORDER_GO_TO_DEPOT_FORMAT);
+				SetDParam(2, v->type);
+				SetDParam(3, order->GetDestination());
 			}
 
 			if (order->GetDepotOrderType() & ODTFB_SERVICE) {
--- a/src/strings.cpp
+++ b/src/strings.cpp
@@ -15,6 +15,7 @@
 #include "town.h"
 #include "screenshot.h"
 #include "waypoint_base.h"
+#include "depot_base.h"
 #include "industry.h"
 #include "newgrf_text.h"
 #include "fileio_func.h"
@@ -944,6 +945,13 @@
 				break;
 			}
 
+			case SCC_DEPOT_NAME: { // {DEPOT}
+				VehicleType vt = (VehicleType)GetInt32(&argv);
+				int64 temp[1] = { vt == VEH_AIRCRAFT ? GetInt32(&argv) : Depot::Get(GetInt32(&argv))->town_index };
+				buff = GetStringWithArgs(buff, STR_FORMAT_DEPOT_NAME_TRAIN + vt, temp, last);
+				break;
+			}
+
 			case SCC_TOWN_NAME: { // {TOWN}
 				const Town *t = Town::Get(GetInt32(&argv));
 
--- a/src/table/control_codes.h
+++ b/src/table/control_codes.h
@@ -36,6 +36,7 @@
 	SCC_INDUSTRY_NAME,
 	SCC_WAYPOINT_NAME,
 	SCC_STATION_NAME,
+	SCC_DEPOT_NAME,
 	SCC_TOWN_NAME,
 	SCC_GROUP_NAME,
 	SCC_VEHICLE_NAME,
--- a/src/table/strgen_tables.h
+++ b/src/table/strgen_tables.h
@@ -101,6 +101,7 @@
 
 	{"WAYPOINT",        EmitSingleChar, SCC_WAYPOINT_NAME,      1, C_NONE | C_GENDER}, // waypoint name
 	{"STATION",         EmitSingleChar, SCC_STATION_NAME,       1, C_NONE | C_GENDER},
+	{"DEPOT",           EmitSingleChar, SCC_DEPOT_NAME,         2, C_NONE | C_GENDER},
 	{"TOWN",            EmitSingleChar, SCC_TOWN_NAME,          1, C_NONE | C_GENDER},
 	{"GROUP",           EmitSingleChar, SCC_GROUP_NAME,         1, C_NONE | C_GENDER},
 	{"SIGN",            EmitSingleChar, SCC_SIGN_NAME,          1, C_NONE | C_GENDER},
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -1073,29 +1073,26 @@
 			case VLW_STANDARD: // Company Name
 				SetDParam(0, STR_COMPANY_NAME);
 				SetDParam(1, index);
-				SetDParam(2, this->vscroll.GetCount());
+				SetDParam(3, this->vscroll.GetCount());
 				break;
 
 			case VLW_WAYPOINT_LIST:
 				SetDParam(0, STR_WAYPOINT_NAME);
 				SetDParam(1, index);
-				SetDParam(2, this->vscroll.GetCount());
+				SetDParam(3, this->vscroll.GetCount());
 				break;
 
 			case VLW_STATION_LIST: // Station Name
 				SetDParam(0, STR_STATION_NAME);
 				SetDParam(1, index);
-				SetDParam(2, this->vscroll.GetCount());
+				SetDParam(3, this->vscroll.GetCount());
 				break;
 
 			case VLW_DEPOT_LIST:
-				SetDParam(0, STR_DEPOT_TRAIN_CAPTION + this->vehicle_type);
-				if (this->vehicle_type == VEH_AIRCRAFT) {
-					SetDParam(1, index); // Airport name
-				} else {
-					SetDParam(1, Depot::Get(index)->town_index);
-				}
-				SetDParam(2, this->vscroll.GetCount());
+				SetDParam(0, STR_DEPOT_CAPTION);
+				SetDParam(1, this->vehicle_type);
+				SetDParam(2, index);
+				SetDParam(3, this->vscroll.GetCount());
 				break;
 			default: NOT_REACHED();
 		}
@@ -2086,19 +2083,13 @@
 				} break;
 
 				case OT_GOTO_DEPOT: {
-					if (v->type == VEH_AIRCRAFT) {
-						/* Aircrafts always go to a station, even if you say depot */
-						SetDParam(0, v->current_order.GetDestination());
-						SetDParam(1, v->GetDisplaySpeed());
+					SetDParam(0, v->type);
+					SetDParam(1, v->current_order.GetDestination());
+					SetDParam(2, v->GetDisplaySpeed());
+					if (v->current_order.GetDepotActionType() & ODATFB_HALT) {
+						str = STR_VEHICLE_STATUS_HEADING_FOR_DEPOT + _settings_client.gui.vehicle_speed;
 					} else {
-						Depot *depot = Depot::Get(v->current_order.GetDestination());
-						SetDParam(0, depot->town_index);
-						SetDParam(1, v->GetDisplaySpeed());
-					}
-					if (v->current_order.GetDepotActionType() & ODATFB_HALT) {
-						str = STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT + 2 * v->type + _settings_client.gui.vehicle_speed;
-					} else {
-						str = STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT_SERVICE + 2 * v->type + _settings_client.gui.vehicle_speed;
+						str = STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE + _settings_client.gui.vehicle_speed;
 					}
 				} break;