File diff r5418:a305874d4e01 → r5419:7d0beb86d3ca
depot_gui.c
Show inline comments
 
@@ -142,89 +142,12 @@ static inline void ShowVehicleViewWindow
 
	}
 
}
 

	
 
static void DepotSellAllWndProc(Window *w, WindowEvent *e)
 
static void DepotSellAllConfirmationCallback(Window *w, bool confirmed)
 
{
 
	TileIndex tile = w->window_number;
 
	byte vehicle_type = WP(w, depot_d).type;
 

	
 
	switch (e->event) {
 
		case WE_PAINT:
 
			if (vehicle_type == VEH_Aircraft) {
 
				SetDParam(0, GetStationIndex(tile)); // Airport name
 
			} else {
 
				Depot *depot = GetDepotByTile(tile);
 
				assert(depot != NULL);
 

	
 
				SetDParam(0, depot->town_index);
 
			}
 
			DrawWindowWidgets(w);
 

	
 
			DrawStringCentered(150, 25, STR_DEPOT_SELL_ALL_VEHICLE_CONFIRM, 0);
 
			DrawStringCentered(150, 38, STR_ARE_YOU_SURE, 0);
 
			break;
 

	
 
		case WE_CLICK:
 
			switch (e->we.click.widget) {
 
				case 4:
 
					DoCommandP(tile, vehicle_type, 0, NULL, CMD_DEPOT_SELL_ALL_VEHICLES);
 
					/* Fallthrough */
 
				case 3:
 
					DeleteWindow(w);
 
					break;
 
			}
 
			break;
 
	}
 
}
 

	
 
static const Widget _depot_sell_all_widgets[] = {
 
	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,        STR_018B_CLOSE_WINDOW},
 
	{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   299,     0,    13, 0x0,             STR_018C_WINDOW_TITLE_DRAG_THIS},
 
	{      WWT_PANEL,   RESIZE_NONE,    14,     0,   299,    14,    71, 0x0,             STR_NULL},
 
	{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,    85,   144,    52,    63, STR_012E_CANCEL, STR_NULL},
 
	{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   155,   214,    52,    63, STR_SELL,        STR_NULL},
 
	{   WIDGETS_END},
 
};
 

	
 
static const WindowDesc _depot_sell_all_desc = {
 
	WDP_CENTER, WDP_CENTER, 300, 72,
 
	WC_DEPOT_SELL_ALL, WC_VEHICLE_DEPOT,
 
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
 
	_depot_sell_all_widgets,
 
	DepotSellAllWndProc
 
};
 

	
 
static void ShowDepotSellAllWindow(TileIndex tile, byte type)
 
{
 
	Window *w = AllocateWindowDescFront(&_depot_sell_all_desc, tile);
 

	
 
	if (w != NULL) {
 
		w->caption_color = GetTileOwner(tile);
 
		WP(w, depot_d).type = type;
 
		switch (type) {
 
			case VEH_Train:
 
				w->widget[1].data     = STR_8800_TRAIN_DEPOT;
 
				w->widget[3].tooltips = STR_DEPOT_SELL_ALL_CANCEL_TRAIN_TIP;
 
				w->widget[4].tooltips = STR_DEPOT_SELL_ALL_TRAIN_TIP;
 
				break;
 

	
 
			case VEH_Road:
 
				w->widget[1].data     = STR_9003_ROAD_VEHICLE_DEPOT;
 
				w->widget[3].tooltips = STR_DEPOT_SELL_ALL_CANCEL_ROADVEH_TIP;
 
				w->widget[4].tooltips = STR_DEPOT_SELL_ALL_ROADVEH_TIP;
 
				break;
 

	
 
			case VEH_Ship:
 
				w->widget[1].data     = STR_9803_SHIP_DEPOT;
 
				w->widget[3].tooltips = STR_DEPOT_SELL_ALL_CANCEL_SHIP_TIP;
 
				w->widget[4].tooltips = STR_DEPOT_SELL_ALL_SHIP_TIP;
 
				break;
 

	
 
			case VEH_Aircraft:
 
				w->widget[1].data     = STR_A002_AIRCRAFT_HANGAR;
 
				w->widget[3].tooltips = STR_DEPOT_SELL_ALL_CANCEL_AIRCRAFT_TIP;
 
				w->widget[4].tooltips = STR_DEPOT_SELL_ALL_AIRCRAFT_TIP;
 
				break;
 
		}
 
	if (confirmed) {
 
		TileIndex tile = w->window_number;
 
		byte vehtype = WP(w, depot_d).type;
 
		DoCommandP(tile, vehtype, 0, NULL, CMD_DEPOT_SELL_ALL_VEHICLES);
 
	}
 
}
 

	
 
@@ -849,7 +772,22 @@ static void DepotWndProc(Window *w, Wind
 
				case DEPOT_WIDGET_SELL_ALL:
 
					/* Only open the confimation window if there are anything to sell */
 
					if (WP(w, depot_d).engine_count != 0 || WP(w, depot_d).wagon_count != 0) {
 
						ShowDepotSellAllWindow(w->window_number, WP(w, depot_d).type);
 
						static const StringID confirm_captions[] = {
 
							STR_8800_TRAIN_DEPOT,
 
							STR_9003_ROAD_VEHICLE_DEPOT,
 
							STR_9803_SHIP_DEPOT,
 
							STR_A002_AIRCRAFT_HANGAR
 
						};
 
						TileIndex tile = w->window_number;
 
						byte vehtype = WP(w, depot_d).type - VEH_Train;
 

	
 
						SetDParam(0, (vehtype == VEH_Aircraft) ? GetStationIndex(tile) : GetDepotByTile(tile)->town_index);
 
						ShowQuery(
 
							confirm_captions[vehtype],
 
							STR_DEPOT_SELL_CONFIRMATION_TEXT,
 
							w,
 
							DepotSellAllConfirmationCallback
 
						);
 
					}
 
					break;