src/build_vehicle_gui.cpp
changeset 8834 ef15cacd6894
parent 8780 6f3f3ec6c69a
child 8845 e0eac76d3d16
equal deleted inserted replaced
8833:b2fe42c9ea64 8834:ef15cacd6894
    53 
    53 
    54 enum BuildVehicleWidgets {
    54 enum BuildVehicleWidgets {
    55 	BUILD_VEHICLE_WIDGET_CLOSEBOX = 0,
    55 	BUILD_VEHICLE_WIDGET_CLOSEBOX = 0,
    56 	BUILD_VEHICLE_WIDGET_CAPTION,
    56 	BUILD_VEHICLE_WIDGET_CAPTION,
    57 	BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING,
    57 	BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING,
    58 	BUILD_VEHICLE_WIDGET_SORT_TEXT,
       
    59 	BUILD_VEHICLE_WIDGET_SORT_DROPDOWN,
    58 	BUILD_VEHICLE_WIDGET_SORT_DROPDOWN,
    60 	BUILD_VEHICLE_WIDGET_LIST,
    59 	BUILD_VEHICLE_WIDGET_LIST,
    61 	BUILD_VEHICLE_WIDGET_SCROLLBAR,
    60 	BUILD_VEHICLE_WIDGET_SCROLLBAR,
    62 	BUILD_VEHICLE_WIDGET_PANEL,
    61 	BUILD_VEHICLE_WIDGET_PANEL,
    63 	BUILD_VEHICLE_WIDGET_BUILD,
    62 	BUILD_VEHICLE_WIDGET_BUILD,
    68 
    67 
    69 static const Widget _build_vehicle_widgets[] = {
    68 static const Widget _build_vehicle_widgets[] = {
    70 	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW },
    69 	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW },
    71 	{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   239,     0,    13, 0x0,                     STR_018C_WINDOW_TITLE_DRAG_THIS },
    70 	{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   239,     0,    13, 0x0,                     STR_018C_WINDOW_TITLE_DRAG_THIS },
    72 	{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    80,    14,    25, STR_SORT_BY,             STR_SORT_ORDER_TIP},
    71 	{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    80,    14,    25, STR_SORT_BY,             STR_SORT_ORDER_TIP},
    73 	{      WWT_PANEL,  RESIZE_RIGHT,    14,    81,   227,    14,    25, 0x0,                     STR_SORT_CRITERIA_TIP},
    72 	{   WWT_DROPDOWN,  RESIZE_RIGHT,    14,    81,   239,    14,    25, 0x0,                     STR_SORT_CRITERIA_TIP},
    74 	{    WWT_TEXTBTN,     RESIZE_LR,    14,   228,   239,    14,    25, STR_0225,                STR_SORT_CRITERIA_TIP},
       
    75 	{     WWT_MATRIX,     RESIZE_RB,    14,     0,   227,    26,    39, 0x101,                   STR_NULL },
    73 	{     WWT_MATRIX,     RESIZE_RB,    14,     0,   227,    26,    39, 0x101,                   STR_NULL },
    76 	{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   228,   239,    26,    39, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST },
    74 	{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   228,   239,    26,    39, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST },
    77 	{      WWT_PANEL,    RESIZE_RTB,    14,     0,   239,    40,   161, 0x0,                     STR_NULL },
    75 	{      WWT_PANEL,    RESIZE_RTB,    14,     0,   239,    40,   161, 0x0,                     STR_NULL },
    78 
    76 
    79 	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   114,   162,   173, 0x0,                     STR_NULL },
    77 	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   114,   162,   173, 0x0,                     STR_NULL },
   980 
   978 
   981 	w->SetWidgetDisabledState(BUILD_VEHICLE_WIDGET_BUILD, w->window_number <= VEH_END);
   979 	w->SetWidgetDisabledState(BUILD_VEHICLE_WIDGET_BUILD, w->window_number <= VEH_END);
   982 
   980 
   983 	SetVScrollCount(w, EngList_Count(&bv->eng_list));
   981 	SetVScrollCount(w, EngList_Count(&bv->eng_list));
   984 	SetDParam(0, bv->filter.railtype + STR_881C_NEW_RAIL_VEHICLES); // This should only affect rail vehicles
   982 	SetDParam(0, bv->filter.railtype + STR_881C_NEW_RAIL_VEHICLES); // This should only affect rail vehicles
       
   983 
       
   984 	/* Set text of sort by dropdown */
       
   985 	w->widget[BUILD_VEHICLE_WIDGET_SORT_DROPDOWN].data = _sort_listing[bv->vehicle_type][bv->sort_criteria];
       
   986 
   985 	DrawWindowWidgets(w);
   987 	DrawWindowWidgets(w);
   986 
   988 
   987 	DrawEngineList(bv->vehicle_type, 2, 27, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false, DEFAULT_GROUP);
   989 	DrawEngineList(bv->vehicle_type, 2, 27, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false, DEFAULT_GROUP);
   988 
   990 
   989 	if (bv->sel_engine != INVALID_ENGINE) {
   991 	if (bv->sel_engine != INVALID_ENGINE) {
   991 		int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
   993 		int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
   992 
   994 
   993 		if (text_end > wi->bottom) ExpandPurchaseInfoWidget(w, text_end - wi->bottom);
   995 		if (text_end > wi->bottom) ExpandPurchaseInfoWidget(w, text_end - wi->bottom);
   994 	}
   996 	}
   995 
   997 
   996 	DrawString(85, 15, _sort_listing[bv->vehicle_type][bv->sort_criteria], TC_BLACK);
       
   997 	DoDrawString(bv->descending_sort_order ? DOWNARROW : UPARROW, 69, 15, TC_BLACK);
   998 	DoDrawString(bv->descending_sort_order ? DOWNARROW : UPARROW, 69, 15, TC_BLACK);
   998 }
   999 }
   999 
  1000 
  1000 static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
  1001 static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
  1001 {
  1002 {
  1015 			bv->sel_engine = (i < num_items) ? bv->eng_list[i] : INVALID_ENGINE;
  1016 			bv->sel_engine = (i < num_items) ? bv->eng_list[i] : INVALID_ENGINE;
  1016 			SetWindowDirty(w);
  1017 			SetWindowDirty(w);
  1017 			break;
  1018 			break;
  1018 		}
  1019 		}
  1019 
  1020 
  1020 		case BUILD_VEHICLE_WIDGET_SORT_TEXT: case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
  1021 		case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
  1021 			ShowDropDownMenu(w, _sort_listing[bv->vehicle_type], bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
  1022 			ShowDropDownMenu(w, _sort_listing[bv->vehicle_type], bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
  1022 			break;
  1023 			break;
  1023 
  1024 
  1024 		case BUILD_VEHICLE_WIDGET_BUILD: {
  1025 		case BUILD_VEHICLE_WIDGET_BUILD: {
  1025 			EngineID sel_eng = bv->sel_engine;
  1026 			EngineID sel_eng = bv->sel_engine;