src/group_gui.cpp
branchnoai
changeset 9694 e72987579514
parent 9686 d3c195c226f9
child 9701 d1ac22c62f64
equal deleted inserted replaced
9693:31fcaa5375a1 9694:e72987579514
   137 };
   137 };
   138 
   138 
   139 
   139 
   140 static const Widget _group_widgets[] = {
   140 static const Widget _group_widgets[] = {
   141 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,             STR_018B_CLOSE_WINDOW},
   141 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,             STR_018B_CLOSE_WINDOW},
   142 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   513,     0,    13, 0x0,                  STR_018C_WINDOW_TITLE_DRAG_THIS},
   142 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   447,     0,    13, 0x0,                  STR_018C_WINDOW_TITLE_DRAG_THIS},
   143 {  WWT_STICKYBOX,     RESIZE_LR,    14,   514,   525,     0,    13, 0x0,                  STR_STICKY_BUTTON},
   143 {  WWT_STICKYBOX,     RESIZE_LR,    14,   448,   459,     0,    13, 0x0,                  STR_STICKY_BUTTON},
   144 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    14,    25, 0x0,                  STR_NULL},
   144 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    14,    25, 0x0,                  STR_NULL},
   145 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    26,    38, 0x0,                  STR_NULL},
   145 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    26,    38, 0x0,                  STR_NULL},
   146 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    39,    52, 0x0,                  STR_NULL},
   146 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    39,    52, 0x0,                  STR_NULL},
   147 {     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   188,    52,   220, 0x701,                STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
   147 {     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   188,    52,   168, 0x701,                STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
   148 {  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   189,   200,    26,   220, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
   148 {  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   189,   200,    26,   168, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
   149 { WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   201,   281,    14,    25, STR_SORT_BY,          STR_SORT_ORDER_TIP},
   149 { WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   201,   281,    14,    25, STR_SORT_BY,          STR_SORT_ORDER_TIP},
   150 {      WWT_PANEL,   RESIZE_NONE,    14,   282,   435,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
   150 {      WWT_PANEL,   RESIZE_NONE,    14,   282,   435,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
   151 {    WWT_TEXTBTN,   RESIZE_NONE,    14,   436,   447,    14,    25, STR_0225,             STR_SORT_CRITERIA_TIP},
   151 {    WWT_TEXTBTN,   RESIZE_NONE,    14,   436,   447,    14,    25, STR_0225,             STR_SORT_CRITERIA_TIP},
   152 {      WWT_PANEL,  RESIZE_RIGHT,    14,   448,   525,    14,    25, 0x0,                  STR_NULL},
   152 {      WWT_PANEL,  RESIZE_RIGHT,    14,   448,   459,    14,    25, 0x0,                  STR_NULL},
   153 {     WWT_MATRIX,     RESIZE_RB,    14,   201,   513,    26,   233, 0x701,                STR_NULL},
   153 {     WWT_MATRIX,     RESIZE_RB,    14,   201,   447,    26,   181, 0x701,                STR_NULL},
   154 { WWT_SCROLL2BAR,    RESIZE_LRB,    14,   514,   525,    26,   233, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
   154 { WWT_SCROLL2BAR,    RESIZE_LRB,    14,   448,   459,    26,   181, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
   155 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,     0,    23,   221,   245, 0x0,                  STR_GROUP_CREATE_TIP},
   155 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,     0,    23,   169,   193, 0x0,                  STR_GROUP_CREATE_TIP},
   156 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,    24,    47,   221,   245, 0x0,                  STR_GROUP_DELETE_TIP},
   156 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,    24,    47,   169,   193, 0x0,                  STR_GROUP_DELETE_TIP},
   157 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,    48,    71,   221,   245, 0x0,                  STR_GROUP_RENAME_TIP},
   157 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,    48,    71,   169,   193, 0x0,                  STR_GROUP_RENAME_TIP},
   158 {      WWT_PANEL,     RESIZE_TB,    14,    72,   164,   221,   245, 0x0,                  STR_NULL},
   158 {      WWT_PANEL,     RESIZE_TB,    14,    72,   164,   169,   193, 0x0,                  STR_NULL},
   159 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   165,   188,   221,   245, 0x0,                  STR_GROUP_REPLACE_PROTECTION_TIP},
   159 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   165,   188,   169,   193, 0x0,                  STR_GROUP_REPLACE_PROTECTION_TIP},
   160 {      WWT_PANEL,     RESIZE_TB,    14,   189,   200,   221,   245, 0x0,                  STR_NULL},
   160 {      WWT_PANEL,     RESIZE_TB,    14,   189,   200,   169,   193, 0x0,                  STR_NULL},
   161 { WWT_PUSHTXTBTN,     RESIZE_TB,    14,   201,   306,   234,   245, 0x0,                  STR_AVAILABLE_ENGINES_TIP},
   161 { WWT_PUSHTXTBTN,     RESIZE_TB,    14,   201,   306,   182,   193, 0x0,                  STR_AVAILABLE_ENGINES_TIP},
   162 {    WWT_TEXTBTN,     RESIZE_TB,    14,   307,   411,   234,   245, STR_MANAGE_LIST,      STR_MANAGE_LIST_TIP},
   162 {    WWT_TEXTBTN,     RESIZE_TB,    14,   307,   411,   182,   193, STR_MANAGE_LIST,      STR_MANAGE_LIST_TIP},
   163 {    WWT_TEXTBTN,     RESIZE_TB,    14,   412,   423,   234,   245, STR_0225,             STR_MANAGE_LIST_TIP},
   163 {    WWT_TEXTBTN,     RESIZE_TB,    14,   412,   423,   182,   193, STR_0225,             STR_MANAGE_LIST_TIP},
   164 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   424,   435,   234,   245, SPR_FLAG_VEH_STOPPED, STR_MASS_STOP_LIST_TIP},
   164 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   424,   435,   182,   193, SPR_FLAG_VEH_STOPPED, STR_MASS_STOP_LIST_TIP},
   165 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   436,   447,   234,   245, SPR_FLAG_VEH_RUNNING, STR_MASS_START_LIST_TIP},
   165 { WWT_PUSHIMGBTN,     RESIZE_TB,    14,   436,   447,   182,   193, SPR_FLAG_VEH_RUNNING, STR_MASS_START_LIST_TIP},
   166 {      WWT_PANEL,    RESIZE_RTB,    14,   448,   513,   234,   245, 0x0,                  STR_NULL},
   166 {      WWT_PANEL,    RESIZE_RTB,    14,   448,   447,   182,   193, 0x0,                  STR_NULL},
   167 {  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   514,   525,   234,   245, 0x0,                  STR_RESIZE_BUTTON},
   167 {  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   448,   459,   182,   193, 0x0,                  STR_RESIZE_BUTTON},
   168 {   WIDGETS_END},
   168 {   WIDGETS_END},
   169 };
   169 };
   170 
   170 
   171 
   171 
   172 static void CreateVehicleGroupWindow(Window *w)
   172 static void CreateVehicleGroupWindow(Window *w)
   174 	const PlayerID owner = (PlayerID)GB(w->window_number, 0, 8);
   174 	const PlayerID owner = (PlayerID)GB(w->window_number, 0, 8);
   175 	groupveh_d *gv = &WP(w, groupveh_d);
   175 	groupveh_d *gv = &WP(w, groupveh_d);
   176 	grouplist_d *gl = &WP(w, groupveh_d).gl;
   176 	grouplist_d *gl = &WP(w, groupveh_d).gl;
   177 
   177 
   178 	w->caption_color = owner;
   178 	w->caption_color = owner;
   179 	w->hscroll.cap = 10 * 29;
   179 	w->hscroll.cap = 224;
   180 	w->resize.step_width = 1;
   180 	w->resize.step_width = 1;
   181 
   181 
   182 	switch (gv->vehicle_type) {
   182 	switch (gv->vehicle_type) {
   183 		default: NOT_REACHED();
   183 		default: NOT_REACHED();
   184 		case VEH_TRAIN:
   184 		case VEH_TRAIN:
   185 		case VEH_ROAD:
   185 		case VEH_ROAD:
   186 			w->vscroll.cap = 13;
   186 			w->vscroll.cap = 9;
   187 			w->vscroll2.cap = 8;
   187 			w->vscroll2.cap = 6;
   188 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_SMALL;
   188 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_SMALL;
   189 			break;
   189 			break;
   190 		case VEH_SHIP:
   190 		case VEH_SHIP:
   191 		case VEH_AIRCRAFT:
   191 		case VEH_AIRCRAFT:
   192 			w->vscroll.cap = 9;
   192 			w->vscroll.cap = 9;
   555 
   555 
   556 					v = gv->sort_list[id_v];
   556 					v = gv->sort_list[id_v];
   557 
   557 
   558 					gv->vehicle_sel = v->index;
   558 					gv->vehicle_sel = v->index;
   559 
   559 
   560 					if (IsValidVehicle(v)) {
   560 					if (v->IsValid()) {
   561 						SetObjectToPlaceWnd(v->GetImage(DIR_W), GetVehiclePalette(v), 4, w);
   561 						SetObjectToPlaceWnd(v->GetImage(DIR_W), GetVehiclePalette(v), 4, w);
   562 					}
   562 					}
   563 
   563 
   564 					SetWindowDirty(w);
   564 					SetWindowDirty(w);
   565 					break;
   565 					break;
   769 		}
   769 		}
   770 }
   770 }
   771 
   771 
   772 
   772 
   773 static const WindowDesc _group_desc = {
   773 static const WindowDesc _group_desc = {
   774 	WDP_AUTO, WDP_AUTO, 526, 246,
   774 	WDP_AUTO, WDP_AUTO, 460, 194, 526, 246,
   775 	WC_TRAINS_LIST, WC_NONE,
   775 	WC_TRAINS_LIST, WC_NONE,
   776 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
   776 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
   777 	_group_widgets,
   777 	_group_widgets,
   778 	GroupWndProc
   778 	GroupWndProc
   779 };
   779 };
   794 	DeleteWindowById(wc, num);
   794 	DeleteWindowById(wc, num);
   795 	Window *w = AllocateWindowDescFront(&_group_desc, num);
   795 	Window *w = AllocateWindowDescFront(&_group_desc, num);
   796 	if (w == NULL) return;
   796 	if (w == NULL) return;
   797 
   797 
   798 	w->window_class = wc;
   798 	w->window_class = wc;
   799 
       
   800 	switch (vehicle_type) {
       
   801 		default: NOT_REACHED();
       
   802 		case VEH_ROAD:
       
   803 			ResizeWindow(w, -66,   0);
       
   804 			/* FALL THROUGH */
       
   805 		case VEH_TRAIN:
       
   806 			w->resize.height = w->height - (PLY_WND_PRC__SIZE_OF_ROW_SMALL * 4); // Minimum of 4 vehicles
       
   807 			break;
       
   808 
       
   809 		case VEH_SHIP:
       
   810 		case VEH_AIRCRAFT:
       
   811 			ResizeWindow(w, -66, -52);
       
   812 			w->resize.height = w->height;  // Minimum of 4 vehicles
       
   813 			break;
       
   814 	}
       
   815 
       
   816 	/* Set the minimum window size to the current window size */
       
   817 	w->resize.width = w->width;
       
   818 }
   799 }