src/build_vehicle_gui.cpp
branchgamebalance
changeset 9895 7bd07f43b0e3
parent 6519 367d6f96e23f
child 9903 dc85aaa556ae
equal deleted inserted replaced
9894:70d78ac95d6c 9895:7bd07f43b0e3
    61 
    61 
    62 /* Setup widget strings to fit the different types of vehicles */
    62 /* Setup widget strings to fit the different types of vehicles */
    63 static void SetupWindowStrings(Window *w, byte type)
    63 static void SetupWindowStrings(Window *w, byte type)
    64 {
    64 {
    65 	switch (type) {
    65 	switch (type) {
    66 		case VEH_Train:
    66 		case VEH_TRAIN:
    67 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_JUST_STRING;
    67 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_JUST_STRING;
    68 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_8843_TRAIN_VEHICLE_SELECTION;
    68 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_8843_TRAIN_VEHICLE_SELECTION;
    69 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_881F_BUILD_VEHICLE;
    69 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_881F_BUILD_VEHICLE;
    70 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN;
    70 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN;
    71 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_8820_RENAME;
    71 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_8820_RENAME;
    72 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_8845_RENAME_TRAIN_VEHICLE_TYPE;
    72 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_8845_RENAME_TRAIN_VEHICLE_TYPE;
    73 			break;
    73 			break;
    74 		case VEH_Road:
    74 		case VEH_ROAD:
    75 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_9006_NEW_ROAD_VEHICLES;
    75 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_9006_NEW_ROAD_VEHICLES;
    76 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_9026_ROAD_VEHICLE_SELECTION;
    76 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_9026_ROAD_VEHICLE_SELECTION;
    77 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_9007_BUILD_VEHICLE;
    77 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_9007_BUILD_VEHICLE;
    78 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_9027_BUILD_THE_HIGHLIGHTED_ROAD;
    78 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_9027_BUILD_THE_HIGHLIGHTED_ROAD;
    79 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_9034_RENAME;
    79 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_9034_RENAME;
    80 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9035_RENAME_ROAD_VEHICLE_TYPE;
    80 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9035_RENAME_ROAD_VEHICLE_TYPE;
    81 			break;
    81 			break;
    82 		case VEH_Ship:
    82 		case VEH_SHIP:
    83 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_9808_NEW_SHIPS;
    83 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_9808_NEW_SHIPS;
    84 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_9825_SHIP_SELECTION_LIST_CLICK;
    84 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_9825_SHIP_SELECTION_LIST_CLICK;
    85 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_9809_BUILD_SHIP;
    85 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_9809_BUILD_SHIP;
    86 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_9826_BUILD_THE_HIGHLIGHTED_SHIP;
    86 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_9826_BUILD_THE_HIGHLIGHTED_SHIP;
    87 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_9836_RENAME;
    87 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_9836_RENAME;
    88 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9837_RENAME_SHIP_TYPE;
    88 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9837_RENAME_SHIP_TYPE;
    89 			break;
    89 			break;
    90 		case VEH_Aircraft:
    90 		case VEH_AIRCRAFT:
    91 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_A005_NEW_AIRCRAFT;
    91 			w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data    = STR_A005_NEW_AIRCRAFT;
    92 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_A025_AIRCRAFT_SELECTION_LIST;
    92 			w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips   = STR_A025_AIRCRAFT_SELECTION_LIST;
    93 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_A006_BUILD_AIRCRAFT;
    93 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].data      = STR_A006_BUILD_AIRCRAFT;
    94 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT;
    94 			w->widget[BUILD_VEHICLE_WIDGET_BUILD].tooltips  = STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT;
    95 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_A037_RENAME;
    95 			w->widget[BUILD_VEHICLE_WIDGET_RENAME].data     = STR_A037_RENAME;
   534 	YearMonthDay ymd;
   534 	YearMonthDay ymd;
   535 	ConvertDateToYMD(e->intro_date, &ymd);
   535 	ConvertDateToYMD(e->intro_date, &ymd);
   536 	bool refitable = false;
   536 	bool refitable = false;
   537 
   537 
   538 	switch (e->type) {
   538 	switch (e->type) {
   539 		case VEH_Train: {
   539 		case VEH_TRAIN: {
   540 			const RailVehicleInfo *rvi = RailVehInfo(engine_number);
   540 			const RailVehicleInfo *rvi = RailVehInfo(engine_number);
   541 
   541 
   542 			refitable = (EngInfo(engine_number)->refit_mask != 0) && (rvi->capacity > 0);
   542 			refitable = (EngInfo(engine_number)->refit_mask != 0) && (rvi->capacity > 0);
   543 
   543 
   544 			if (rvi->railveh_type == RAILVEH_WAGON) {
   544 			if (rvi->railveh_type == RAILVEH_WAGON) {
   560 			}
   560 			}
   561 			DrawString(x,y, STR_PURCHASE_INFO_CAPACITY, 0);
   561 			DrawString(x,y, STR_PURCHASE_INFO_CAPACITY, 0);
   562 			y += 10;
   562 			y += 10;
   563 		}
   563 		}
   564 			break;
   564 			break;
   565 		case VEH_Road:
   565 		case VEH_ROAD:
   566 			y = DrawRoadVehPurchaseInfo(x, y, engine_number, RoadVehInfo(engine_number));
   566 			y = DrawRoadVehPurchaseInfo(x, y, engine_number, RoadVehInfo(engine_number));
   567 			refitable = true;
   567 			refitable = true;
   568 			break;
   568 			break;
   569 		case VEH_Ship: {
   569 		case VEH_SHIP: {
   570 			const ShipVehicleInfo *svi = ShipVehInfo(engine_number);
   570 			const ShipVehicleInfo *svi = ShipVehInfo(engine_number);
   571 			y = DrawShipPurchaseInfo(x, y, engine_number, svi);
   571 			y = DrawShipPurchaseInfo(x, y, engine_number, svi);
   572 			refitable = svi->refittable;
   572 			refitable = svi->refittable;
   573 		} break;
   573 		} break;
   574 		case VEH_Aircraft:
   574 		case VEH_AIRCRAFT:
   575 			y = DrawAircraftPurchaseInfo(x, y, engine_number, AircraftVehInfo(engine_number));
   575 			y = DrawAircraftPurchaseInfo(x, y, engine_number, AircraftVehInfo(engine_number));
   576 			refitable = true;
   576 			refitable = true;
   577 			break;
   577 			break;
   578 	}
   578 	}
   579 
   579 
   580 	/* Draw details, that applies to all types except rail wagons */
   580 	/* Draw details, that applies to all types except rail wagons */
   581 	if (e->type != VEH_Train || RailVehInfo(engine_number)->railveh_type != RAILVEH_WAGON) {
   581 	if (e->type != VEH_TRAIN || RailVehInfo(engine_number)->railveh_type != RAILVEH_WAGON) {
   582 		/* Design date - Life length */
   582 		/* Design date - Life length */
   583 		SetDParam(0, ymd.year);
   583 		SetDParam(0, ymd.year);
   584 		SetDParam(1, e->lifelength);
   584 		SetDParam(1, e->lifelength);
   585 		DrawString(x, y, STR_PURCHASE_INFO_DESIGNED_LIFE, 0);
   585 		DrawString(x, y, STR_PURCHASE_INFO_DESIGNED_LIFE, 0);
   586 		y += 10;
   586 		y += 10;
   614 	 * when engines become obsolete and are removed */
   614 	 * when engines become obsolete and are removed */
   615 	for (sel_id = INVALID_ENGINE, eid = 0; eid < NUM_TRAIN_ENGINES; eid++) {
   615 	for (sel_id = INVALID_ENGINE, eid = 0; eid < NUM_TRAIN_ENGINES; eid++) {
   616 		const RailVehicleInfo *rvi = RailVehInfo(eid);
   616 		const RailVehicleInfo *rvi = RailVehInfo(eid);
   617 
   617 
   618 		if (bv->filter.railtype != RAILTYPE_END && !HasPowerOnRail(rvi->railtype, bv->filter.railtype)) continue;
   618 		if (bv->filter.railtype != RAILTYPE_END && !HasPowerOnRail(rvi->railtype, bv->filter.railtype)) continue;
   619 		if (!IsEngineBuildable(eid, VEH_Train, _local_player)) continue;
   619 		if (!IsEngineBuildable(eid, VEH_TRAIN, _local_player)) continue;
   620 
   620 
   621 		EngList_Add(&bv->eng_list, eid);
   621 		EngList_Add(&bv->eng_list, eid);
   622 		if (rvi->railveh_type != RAILVEH_WAGON) {
   622 		if (rvi->railveh_type != RAILVEH_WAGON) {
   623 			num_engines++;
   623 			num_engines++;
   624 		} else {
   624 		} else {
   651 	EngList_RemoveAll(&bv->eng_list);
   651 	EngList_RemoveAll(&bv->eng_list);
   652 
   652 
   653 	sel_id = INVALID_ENGINE;
   653 	sel_id = INVALID_ENGINE;
   654 
   654 
   655 	for (eid = ROAD_ENGINES_INDEX; eid < ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES; eid++) {
   655 	for (eid = ROAD_ENGINES_INDEX; eid < ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES; eid++) {
   656 		if (!IsEngineBuildable(eid, VEH_Road, _local_player)) continue;
   656 		if (!IsEngineBuildable(eid, VEH_ROAD, _local_player)) continue;
   657 		EngList_Add(&bv->eng_list, eid);
   657 		EngList_Add(&bv->eng_list, eid);
   658 
   658 
   659 		if (eid == bv->sel_engine) sel_id = eid;
   659 		if (eid == bv->sel_engine) sel_id = eid;
   660 	}
   660 	}
   661 	bv->sel_engine = sel_id;
   661 	bv->sel_engine = sel_id;
   670 	EngList_RemoveAll(&bv->eng_list);
   670 	EngList_RemoveAll(&bv->eng_list);
   671 
   671 
   672 	sel_id = INVALID_ENGINE;
   672 	sel_id = INVALID_ENGINE;
   673 
   673 
   674 	for (eid = SHIP_ENGINES_INDEX; eid < SHIP_ENGINES_INDEX + NUM_SHIP_ENGINES; eid++) {
   674 	for (eid = SHIP_ENGINES_INDEX; eid < SHIP_ENGINES_INDEX + NUM_SHIP_ENGINES; eid++) {
   675 		if (!IsEngineBuildable(eid, VEH_Ship, _local_player)) continue;
   675 		if (!IsEngineBuildable(eid, VEH_SHIP, _local_player)) continue;
   676 		EngList_Add(&bv->eng_list, eid);
   676 		EngList_Add(&bv->eng_list, eid);
   677 
   677 
   678 		if (eid == bv->sel_engine) sel_id = eid;
   678 		if (eid == bv->sel_engine) sel_id = eid;
   679 	}
   679 	}
   680 	bv->sel_engine = sel_id;
   680 	bv->sel_engine = sel_id;
   692 	 * Also check to see if the previously selected plane is still available,
   692 	 * Also check to see if the previously selected plane is still available,
   693 	 * and if not, reset selection to INVALID_ENGINE. This could be the case
   693 	 * and if not, reset selection to INVALID_ENGINE. This could be the case
   694 	 * when planes become obsolete and are removed */
   694 	 * when planes become obsolete and are removed */
   695 	sel_id = INVALID_ENGINE;
   695 	sel_id = INVALID_ENGINE;
   696 	for (eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) {
   696 	for (eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) {
   697 		if (IsEngineBuildable(eid, VEH_Aircraft, _local_player)) {
   697 		if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_player)) continue;
   698 			const AircraftVehicleInfo *avi = AircraftVehInfo(eid);
   698 		if (w->window_number != 0 && !IsAircraftBuildableAtStation(eid, w->window_number)) continue;
   699 			switch (bv->filter.flags & ~AirportFTAClass::SHORT_STRIP) { // we don't care about the length of the runway here
   699 
   700 				case AirportFTAClass::HELICOPTERS:
   700 		EngList_Add(&bv->eng_list, eid);
   701 					if (avi->subtype != AIR_HELI) continue;
   701 		if (eid == bv->sel_engine) sel_id = eid;
   702 					break;
       
   703 
       
   704 				case AirportFTAClass::AIRPLANES:
       
   705 					if (!(avi->subtype & AIR_CTOL)) continue;
       
   706 					break;
       
   707 
       
   708 				case AirportFTAClass::ALL: break;
       
   709 				default:
       
   710 					NOT_REACHED();
       
   711 			}
       
   712 
       
   713 			EngList_Add(&bv->eng_list, eid);
       
   714 
       
   715 			if (eid == bv->sel_engine) sel_id = eid;
       
   716 		}
       
   717 	}
   702 	}
   718 
   703 
   719 	bv->sel_engine = sel_id;
   704 	bv->sel_engine = sel_id;
   720 }
   705 }
   721 
   706 
   723 static void GenerateBuildList(Window *w)
   708 static void GenerateBuildList(Window *w)
   724 {
   709 {
   725 	buildvehicle_d *bv = &WP(w, buildvehicle_d);
   710 	buildvehicle_d *bv = &WP(w, buildvehicle_d);
   726 
   711 
   727 	switch (bv->vehicle_type) {
   712 	switch (bv->vehicle_type) {
   728 		case VEH_Train:
   713 		case VEH_TRAIN:
   729 			GenerateBuildTrainList(w);
   714 			GenerateBuildTrainList(w);
   730 			return; // trains should not reach the last sorting
   715 			return; // trains should not reach the last sorting
   731 		case VEH_Road:
   716 		case VEH_ROAD:
   732 			GenerateBuildRoadVehList(w);
   717 			GenerateBuildRoadVehList(w);
   733 			break;
   718 			break;
   734 		case VEH_Ship:
   719 		case VEH_SHIP:
   735 			GenerateBuildShipList(w);
   720 			GenerateBuildShipList(w);
   736 			break;
   721 			break;
   737 		case VEH_Aircraft:
   722 		case VEH_AIRCRAFT:
   738 			GenerateBuildAircraftList(w);
   723 			GenerateBuildAircraftList(w);
   739 			break;
   724 			break;
   740 	}
   725 	}
   741 	_internal_sort_order = bv->descending_sort_order;
   726 	_internal_sort_order = bv->descending_sort_order;
   742 	EngList_Sort(&bv->eng_list, _sorter[bv->vehicle_type][bv->sort_criteria]);
   727 	EngList_Sort(&bv->eng_list, _sorter[bv->vehicle_type][bv->sort_criteria]);
   743 }
   728 }
   744 
   729 
   745 static void DrawVehicleEngine(byte type, int x, int y, EngineID engine, SpriteID pal)
   730 static void DrawVehicleEngine(byte type, int x, int y, EngineID engine, SpriteID pal)
   746 {
   731 {
   747 	switch (type) {
   732 	switch (type) {
   748 		case VEH_Train:    DrawTrainEngine(   x, y, engine, pal); break;
   733 		case VEH_TRAIN:    DrawTrainEngine(   x, y, engine, pal); break;
   749 		case VEH_Road:     DrawRoadVehEngine( x, y, engine, pal); break;
   734 		case VEH_ROAD:     DrawRoadVehEngine( x, y, engine, pal); break;
   750 		case VEH_Ship:     DrawShipEngine(    x, y, engine, pal); break;
   735 		case VEH_SHIP:     DrawShipEngine(    x, y, engine, pal); break;
   751 		case VEH_Aircraft: DrawAircraftEngine(x, y, engine, pal); break;
   736 		case VEH_AIRCRAFT: DrawAircraftEngine(x, y, engine, pal); break;
   752 		default: NOT_REACHED();
   737 		default: NOT_REACHED();
   753 	}
   738 	}
   754 }
   739 }
   755 
   740 
   756 /** Engine drawing loop
   741 /** Engine drawing loop
   770 	Player *p = GetPlayer(_local_player);
   755 	Player *p = GetPlayer(_local_player);
   771 
   756 
   772 	assert(max <= EngList_Count(&eng_list));
   757 	assert(max <= EngList_Count(&eng_list));
   773 
   758 
   774 	switch (type) {
   759 	switch (type) {
   775 		case VEH_Train:
   760 		case VEH_TRAIN:
   776 			x++; // train and road vehicles use the same offset, except trains are one more pixel to the right
   761 			x++; // train and road vehicles use the same offset, except trains are one more pixel to the right
   777 			/* Fallthough */
   762 			/* Fallthough */
   778 		case VEH_Road:
   763 		case VEH_ROAD:
   779 			x += 26;
   764 			x += 26;
   780 			x_offset = 30;
   765 			x_offset = 30;
   781 			y += 2;
   766 			y += 2;
   782 			y_offset = 4;
   767 			y_offset = 4;
   783 			break;
   768 			break;
   784 		case VEH_Ship:
   769 		case VEH_SHIP:
   785 			x += 35;
   770 			x += 35;
   786 			x_offset = 40;
   771 			x_offset = 40;
   787 			y += 7;
   772 			y += 7;
   788 			y_offset = 3;
   773 			y_offset = 3;
   789 			break;
   774 			break;
   790 		case VEH_Aircraft:
   775 		case VEH_AIRCRAFT:
   791 			x += 27;
   776 			x += 27;
   792 			x_offset = 33;
   777 			x_offset = 33;
   793 			y += 7;
   778 			y += 7;
   794 			y_offset = 3;
   779 			y_offset = 3;
   795 			break;
   780 			break;
   856 
   841 
   857 		case BUILD_VEHICLE_WIDGET_BUILD: {
   842 		case BUILD_VEHICLE_WIDGET_BUILD: {
   858 			EngineID sel_eng = bv->sel_engine;
   843 			EngineID sel_eng = bv->sel_engine;
   859 			if (sel_eng != INVALID_ENGINE) {
   844 			if (sel_eng != INVALID_ENGINE) {
   860 				switch (bv->vehicle_type) {
   845 				switch (bv->vehicle_type) {
   861 					case VEH_Train:
   846 					case VEH_TRAIN:
   862 						DoCommandP(w->window_number, sel_eng, 0, (RailVehInfo(sel_eng)->railveh_type == RAILVEH_WAGON) ? CcBuildWagon : CcBuildLoco,
   847 						DoCommandP(w->window_number, sel_eng, 0, (RailVehInfo(sel_eng)->railveh_type == RAILVEH_WAGON) ? CcBuildWagon : CcBuildLoco,
   863 								   CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE));
   848 								   CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE));
   864 						break;
   849 						break;
   865 					case VEH_Road:
   850 					case VEH_ROAD:
   866 						DoCommandP(w->window_number, sel_eng, 0, CcBuildRoadVeh, CMD_BUILD_ROAD_VEH | CMD_MSG(STR_9009_CAN_T_BUILD_ROAD_VEHICLE));
   851 						DoCommandP(w->window_number, sel_eng, 0, CcBuildRoadVeh, CMD_BUILD_ROAD_VEH | CMD_MSG(STR_9009_CAN_T_BUILD_ROAD_VEHICLE));
   867 						break;
   852 						break;
   868 					case VEH_Ship:
   853 					case VEH_SHIP:
   869 						DoCommandP(w->window_number, sel_eng, 0, CcBuildShip, CMD_BUILD_SHIP | CMD_MSG(STR_980D_CAN_T_BUILD_SHIP));
   854 						DoCommandP(w->window_number, sel_eng, 0, CcBuildShip, CMD_BUILD_SHIP | CMD_MSG(STR_980D_CAN_T_BUILD_SHIP));
   870 						break;
   855 						break;
   871 					case VEH_Aircraft:
   856 					case VEH_AIRCRAFT:
   872 						DoCommandP(w->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT));
   857 						DoCommandP(w->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT));
   873 						break;
   858 						break;
   874 				}
   859 				}
   875 			}
   860 			}
   876 			break;
   861 			break;
   881 			if (sel_eng != INVALID_ENGINE) {
   866 			if (sel_eng != INVALID_ENGINE) {
   882 				StringID str = STR_NULL;
   867 				StringID str = STR_NULL;
   883 
   868 
   884 				bv->rename_engine = sel_eng;
   869 				bv->rename_engine = sel_eng;
   885 				switch (bv->vehicle_type) {
   870 				switch (bv->vehicle_type) {
   886 					case VEH_Train:    str = STR_886A_RENAME_TRAIN_VEHICLE_TYPE; break;
   871 					case VEH_TRAIN:    str = STR_886A_RENAME_TRAIN_VEHICLE_TYPE; break;
   887 					case VEH_Road:     str = STR_9036_RENAME_ROAD_VEHICLE_TYPE;  break;
   872 					case VEH_ROAD:     str = STR_9036_RENAME_ROAD_VEHICLE_TYPE;  break;
   888 					case VEH_Ship:     str = STR_9838_RENAME_SHIP_TYPE;          break;
   873 					case VEH_SHIP:     str = STR_9838_RENAME_SHIP_TYPE;          break;
   889 					case VEH_Aircraft: str = STR_A039_RENAME_AIRCRAFT_TYPE;      break;
   874 					case VEH_AIRCRAFT: str = STR_A039_RENAME_AIRCRAFT_TYPE;      break;
   890 				}
   875 				}
   891 				ShowQueryString(GetCustomEngineName(sel_eng), str, 31, 160, w, CS_ALPHANUMERAL);
   876 				ShowQueryString(GetCustomEngineName(sel_eng), str, 31, 160, w, CS_ALPHANUMERAL);
   892 			}
   877 			}
   893 			break;
   878 			break;
   894 		}
   879 		}
   924 		case WE_ON_EDIT_TEXT: {
   909 		case WE_ON_EDIT_TEXT: {
   925 			if (e->we.edittext.str[0] != '\0') {
   910 			if (e->we.edittext.str[0] != '\0') {
   926 				StringID str = STR_NULL;
   911 				StringID str = STR_NULL;
   927 				_cmd_text = e->we.edittext.str;
   912 				_cmd_text = e->we.edittext.str;
   928 				switch (bv->vehicle_type) {
   913 				switch (bv->vehicle_type) {
   929 					case VEH_Train:    str = STR_886B_CAN_T_RENAME_TRAIN_VEHICLE; break;
   914 					case VEH_TRAIN:    str = STR_886B_CAN_T_RENAME_TRAIN_VEHICLE; break;
   930 					case VEH_Road:     str = STR_9037_CAN_T_RENAME_ROAD_VEHICLE;  break;
   915 					case VEH_ROAD:     str = STR_9037_CAN_T_RENAME_ROAD_VEHICLE;  break;
   931 					case VEH_Ship:     str = STR_9839_CAN_T_RENAME_SHIP_TYPE;     break;
   916 					case VEH_SHIP:     str = STR_9839_CAN_T_RENAME_SHIP_TYPE;     break;
   932 					case VEH_Aircraft: str = STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE; break;
   917 					case VEH_AIRCRAFT: str = STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE; break;
   933 				}
   918 				}
   934 				DoCommandP(0, bv->rename_engine, 0, NULL, CMD_RENAME_ENGINE | CMD_MSG(str));
   919 				DoCommandP(0, bv->rename_engine, 0, NULL, CMD_RENAME_ENGINE | CMD_MSG(str));
   935 			}
   920 			}
   936 			break;
   921 			break;
   937 		}
   922 		}
   990 
   975 
   991 	bv->sort_criteria         = _last_sort_criteria[type];
   976 	bv->sort_criteria         = _last_sort_criteria[type];
   992 	bv->descending_sort_order = _last_sort_order[type];
   977 	bv->descending_sort_order = _last_sort_order[type];
   993 
   978 
   994 	switch (type) {
   979 	switch (type) {
   995 		case VEH_Train:
   980 		case VEH_TRAIN:
   996 			WP(w,buildvehicle_d).filter.railtype = (tile == 0) ? RAILTYPE_END : GetRailType(tile);
   981 			WP(w,buildvehicle_d).filter.railtype = (tile == 0) ? RAILTYPE_END : GetRailType(tile);
   997 			ResizeWindow(w, 0, 16);
   982 			ResizeWindow(w, 0, 16);
   998 			break;
   983 			break;
   999 		case VEH_Road:
   984 		case VEH_ROAD:
  1000 			ResizeWindow(w, 20, 16);
   985 			ResizeWindow(w, 20, 16);
  1001 		case VEH_Ship:
   986 		case VEH_SHIP:
  1002 			ResizeWindow(w, 27, 0);
   987 			ResizeWindow(w, 27, 0);
  1003 			break;
   988 			break;
  1004 		case VEH_Aircraft:
   989 		case VEH_AIRCRAFT:
  1005 			bv->filter.flags =
   990 			bv->filter.flags =
  1006 				tile == 0 ? AirportFTAClass::ALL : GetStationByTile(tile)->Airport()->flags;
   991 				tile == 0 ? AirportFTAClass::ALL : GetStationByTile(tile)->Airport()->flags;
  1007 			ResizeWindow(w, 12, 0);
   992 			ResizeWindow(w, 12, 0);
  1008 			break;
   993 			break;
  1009 	}
   994 	}