src/build_vehicle_gui.cpp
changeset 7134 c5a90dd41166
parent 7104 59f24cd8470b
child 7139 4ae3ab180d05
equal deleted inserted replaced
7133:fe36226cf557 7134:c5a90dd41166
   541 	YearMonthDay ymd;
   541 	YearMonthDay ymd;
   542 	ConvertDateToYMD(e->intro_date, &ymd);
   542 	ConvertDateToYMD(e->intro_date, &ymd);
   543 	bool refitable = false;
   543 	bool refitable = false;
   544 
   544 
   545 	switch (e->type) {
   545 	switch (e->type) {
       
   546 		default: NOT_REACHED();
   546 		case VEH_TRAIN: {
   547 		case VEH_TRAIN: {
   547 			const RailVehicleInfo *rvi = RailVehInfo(engine_number);
   548 			const RailVehicleInfo *rvi = RailVehInfo(engine_number);
   548 			uint capacity = GetEngineProperty(engine_number, 0x14, rvi->capacity);
   549 			uint capacity = GetEngineProperty(engine_number, 0x14, rvi->capacity);
   549 
   550 
   550 			refitable = (EngInfo(engine_number)->refit_mask != 0) && (capacity > 0);
   551 			refitable = (EngInfo(engine_number)->refit_mask != 0) && (capacity > 0);
   718 static void GenerateBuildList(Window *w)
   719 static void GenerateBuildList(Window *w)
   719 {
   720 {
   720 	buildvehicle_d *bv = &WP(w, buildvehicle_d);
   721 	buildvehicle_d *bv = &WP(w, buildvehicle_d);
   721 
   722 
   722 	switch (bv->vehicle_type) {
   723 	switch (bv->vehicle_type) {
       
   724 		default: NOT_REACHED();
   723 		case VEH_TRAIN:
   725 		case VEH_TRAIN:
   724 			GenerateBuildTrainList(w);
   726 			GenerateBuildTrainList(w);
   725 			return; // trains should not reach the last sorting
   727 			return; // trains should not reach the last sorting
   726 		case VEH_ROAD:
   728 		case VEH_ROAD:
   727 			GenerateBuildRoadVehList(w);
   729 			GenerateBuildRoadVehList(w);
   755  * @param min where to start in the list
   757  * @param min where to start in the list
   756  * @param max where in the list to end
   758  * @param max where in the list to end
   757  * @param selected_id what engine to highlight as selected, if any
   759  * @param selected_id what engine to highlight as selected, if any
   758  * @param show_count Display the number of vehicles (used by autoreplace)
   760  * @param show_count Display the number of vehicles (used by autoreplace)
   759  */
   761  */
   760 void DrawEngineList(byte type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count)
   762 void DrawEngineList(VehicleType type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count)
   761 {
   763 {
   762 	byte step_size = GetVehicleListHeight(type);
   764 	byte step_size = GetVehicleListHeight(type);
   763 	byte x_offset = 0;
   765 	byte x_offset = 0;
   764 	byte y_offset = 0;
   766 	byte y_offset = 0;
   765 	Player *p = GetPlayer(_local_player);
   767 	Player *p = GetPlayer(_local_player);
   870 
   872 
   871 		case BUILD_VEHICLE_WIDGET_BUILD: {
   873 		case BUILD_VEHICLE_WIDGET_BUILD: {
   872 			EngineID sel_eng = bv->sel_engine;
   874 			EngineID sel_eng = bv->sel_engine;
   873 			if (sel_eng != INVALID_ENGINE) {
   875 			if (sel_eng != INVALID_ENGINE) {
   874 				switch (bv->vehicle_type) {
   876 				switch (bv->vehicle_type) {
       
   877 					default: NOT_REACHED();
   875 					case VEH_TRAIN:
   878 					case VEH_TRAIN:
   876 						DoCommandP(w->window_number, sel_eng, 0, (RailVehInfo(sel_eng)->railveh_type == RAILVEH_WAGON) ? CcBuildWagon : CcBuildLoco,
   879 						DoCommandP(w->window_number, sel_eng, 0, (RailVehInfo(sel_eng)->railveh_type == RAILVEH_WAGON) ? CcBuildWagon : CcBuildLoco,
   877 								   CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE));
   880 								   CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE));
   878 						break;
   881 						break;
   879 					case VEH_ROAD:
   882 					case VEH_ROAD:
   895 			if (sel_eng != INVALID_ENGINE) {
   898 			if (sel_eng != INVALID_ENGINE) {
   896 				StringID str = STR_NULL;
   899 				StringID str = STR_NULL;
   897 
   900 
   898 				bv->rename_engine = sel_eng;
   901 				bv->rename_engine = sel_eng;
   899 				switch (bv->vehicle_type) {
   902 				switch (bv->vehicle_type) {
       
   903 					default: NOT_REACHED();
   900 					case VEH_TRAIN:    str = STR_886A_RENAME_TRAIN_VEHICLE_TYPE; break;
   904 					case VEH_TRAIN:    str = STR_886A_RENAME_TRAIN_VEHICLE_TYPE; break;
   901 					case VEH_ROAD:     str = STR_9036_RENAME_ROAD_VEHICLE_TYPE;  break;
   905 					case VEH_ROAD:     str = STR_9036_RENAME_ROAD_VEHICLE_TYPE;  break;
   902 					case VEH_SHIP:     str = STR_9838_RENAME_SHIP_TYPE;          break;
   906 					case VEH_SHIP:     str = STR_9838_RENAME_SHIP_TYPE;          break;
   903 					case VEH_AIRCRAFT: str = STR_A039_RENAME_AIRCRAFT_TYPE;      break;
   907 					case VEH_AIRCRAFT: str = STR_A039_RENAME_AIRCRAFT_TYPE;      break;
   904 				}
   908 				}
   938 		case WE_ON_EDIT_TEXT: {
   942 		case WE_ON_EDIT_TEXT: {
   939 			if (e->we.edittext.str[0] != '\0') {
   943 			if (e->we.edittext.str[0] != '\0') {
   940 				StringID str = STR_NULL;
   944 				StringID str = STR_NULL;
   941 				_cmd_text = e->we.edittext.str;
   945 				_cmd_text = e->we.edittext.str;
   942 				switch (bv->vehicle_type) {
   946 				switch (bv->vehicle_type) {
       
   947 					default: NOT_REACHED();
   943 					case VEH_TRAIN:    str = STR_886B_CAN_T_RENAME_TRAIN_VEHICLE; break;
   948 					case VEH_TRAIN:    str = STR_886B_CAN_T_RENAME_TRAIN_VEHICLE; break;
   944 					case VEH_ROAD:     str = STR_9037_CAN_T_RENAME_ROAD_VEHICLE;  break;
   949 					case VEH_ROAD:     str = STR_9037_CAN_T_RENAME_ROAD_VEHICLE;  break;
   945 					case VEH_SHIP:     str = STR_9839_CAN_T_RENAME_SHIP_TYPE;     break;
   950 					case VEH_SHIP:     str = STR_9839_CAN_T_RENAME_SHIP_TYPE;     break;
   946 					case VEH_AIRCRAFT: str = STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE; break;
   951 					case VEH_AIRCRAFT: str = STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE; break;
   947 				}
   952 				}
   975 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
   980 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
   976 	_build_vehicle_widgets,
   981 	_build_vehicle_widgets,
   977 	NewVehicleWndProc
   982 	NewVehicleWndProc
   978 };
   983 };
   979 
   984 
   980 void ShowBuildVehicleWindow(TileIndex tile, byte type)
   985 void ShowBuildVehicleWindow(TileIndex tile, VehicleType type)
   981 {
   986 {
   982 	buildvehicle_d *bv;
   987 	buildvehicle_d *bv;
   983 	Window *w;
   988 	Window *w;
   984 
   989 
   985 	assert(IsPlayerBuildableVehicleType(type));
   990 	assert(IsPlayerBuildableVehicleType(type));
  1004 
  1009 
  1005 	bv->sort_criteria         = _last_sort_criteria[type];
  1010 	bv->sort_criteria         = _last_sort_criteria[type];
  1006 	bv->descending_sort_order = _last_sort_order[type];
  1011 	bv->descending_sort_order = _last_sort_order[type];
  1007 
  1012 
  1008 	switch (type) {
  1013 	switch (type) {
       
  1014 		default: NOT_REACHED();
  1009 		case VEH_TRAIN:
  1015 		case VEH_TRAIN:
  1010 			WP(w, buildvehicle_d).filter.railtype = (tile == 0) ? RAILTYPE_END : GetRailType(tile);
  1016 			WP(w, buildvehicle_d).filter.railtype = (tile == 0) ? RAILTYPE_END : GetRailType(tile);
  1011 			ResizeWindow(w, 0, 16);
  1017 			ResizeWindow(w, 0, 16);
  1012 			break;
  1018 			break;
  1013 		case VEH_ROAD:
  1019 		case VEH_ROAD: