depot_gui.c
changeset 4662 a20121e5442b
parent 4659 2f99f35d5813
child 4663 2e01fabb902f
equal deleted inserted replaced
4661:59492734db06 4662:a20121e5442b
    56 	DEPOT_WIDGET_V_SCROLL, // Vertical scrollbar
    56 	DEPOT_WIDGET_V_SCROLL, // Vertical scrollbar
    57 	DEPOT_WIDGET_H_SCROLL, // Horizontal scrollbar
    57 	DEPOT_WIDGET_H_SCROLL, // Horizontal scrollbar
    58 	DEPOT_WIDGET_BUILD,
    58 	DEPOT_WIDGET_BUILD,
    59 	DEPOT_WIDGET_CLONE,
    59 	DEPOT_WIDGET_CLONE,
    60 	DEPOT_WIDGET_LOCATION,
    60 	DEPOT_WIDGET_LOCATION,
       
    61 	DEPOT_WIDGET_AUTOREPLACE,
    61 	DEPOT_WIDGET_RESIZE,
    62 	DEPOT_WIDGET_RESIZE,
    62 	DEPOT_WIDGET_LAST, // used to assert if DepotWindowWidgets and widget_moves got different lengths. Due to this usage, it needs to be last
    63 	DEPOT_WIDGET_LAST, // used to assert if DepotWindowWidgets and widget_moves got different lengths. Due to this usage, it needs to be last
    63 } DepotWindowWidget;
    64 } DepotWindowWidget;
    64 
    65 
    65 /* Define how to move each widget. The order is important */
    66 /* Define how to move each widget. The order is important */
    76 	DEPOT_MOVE_RIGHT_STRETCH_DOWN, // DEPOT_WIDGET_V_SCROLL
    77 	DEPOT_MOVE_RIGHT_STRETCH_DOWN, // DEPOT_WIDGET_V_SCROLL
    77 	DEPOT_MOVE_NONE,               // DEPOT_WIDGET_H_SCROLL
    78 	DEPOT_MOVE_NONE,               // DEPOT_WIDGET_H_SCROLL
    78 	DEPOT_MOVE_DOWN,               // DEPOT_WIDGET_BUILD
    79 	DEPOT_MOVE_DOWN,               // DEPOT_WIDGET_BUILD
    79 	DEPOT_MOVE_DOWN,               // DEPOT_WIDGET_CLONE
    80 	DEPOT_MOVE_DOWN,               // DEPOT_WIDGET_CLONE
    80 	DEPOT_MOVE_DOWN,               // DEPOT_WIDGET_LOCATION
    81 	DEPOT_MOVE_DOWN,               // DEPOT_WIDGET_LOCATION
       
    82 	DEPOT_MOVE_DOWN_RIGHT,         // DEPOT_WIDGET_AUTOREPLACE
    81 	DEPOT_MOVE_DOWN_RIGHT,         // DEPOT_WIDGET_RESIZE
    83 	DEPOT_MOVE_DOWN_RIGHT,         // DEPOT_WIDGET_RESIZE
    82 };
    84 };
    83 
    85 
    84 /* Widget array for all depot windows.
    86 /* Widget array for all depot windows.
    85  * If a widget is needed in some windows only (like train specific), add it for all windows
    87  * If a widget is needed in some windows only (like train specific), add it for all windows
   110 	/* The buttons in the bottom of the window. left and right is not important as they are later resized to be equal in size
   112 	/* The buttons in the bottom of the window. left and right is not important as they are later resized to be equal in size
   111 	 * This calculation is based on right in DEPOT_WIDGET_LOCATION and it presumes left of DEPOT_WIDGET_BUILD is 0            */
   113 	 * This calculation is based on right in DEPOT_WIDGET_LOCATION and it presumes left of DEPOT_WIDGET_BUILD is 0            */
   112 	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,    96,    84,    95, 0x0,                 STR_NULL},                         // DEPOT_WIDGET_BUILD
   114 	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,    96,    84,    95, 0x0,                 STR_NULL},                         // DEPOT_WIDGET_BUILD
   113 	{WWT_NODISTXTBTN,     RESIZE_TB,    14,    97,   194,    84,    95, 0x0,                 STR_NULL},                         // DEPOT_WIDGET_CLONE
   115 	{WWT_NODISTXTBTN,     RESIZE_TB,    14,    97,   194,    84,    95, 0x0,                 STR_NULL},                         // DEPOT_WIDGET_CLONE
   114 	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   195,   292,    84,    95, STR_00E4_LOCATION,   STR_NULL},                         // DEPOT_WIDGET_LOCATION
   116 	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   195,   292,    84,    95, STR_00E4_LOCATION,   STR_NULL},                         // DEPOT_WIDGET_LOCATION
       
   117 	{ WWT_PUSHIMGBTN,   RESIZE_LRTB,    14,   281,   292,    84,    95, 0x0,                 STR_DEPOT_AUTOREPLACE_TIP},        // DEPOT_WIDGET_AUTOREPLACE
   115 	{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   293,   304,    84,    95, 0x0,                 STR_RESIZE_BUTTON},                // DEPOT_WIDGET_RESIZE
   118 	{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   293,   304,    84,    95, 0x0,                 STR_RESIZE_BUTTON},                // DEPOT_WIDGET_RESIZE
   116 	{   WIDGETS_END},
   119 	{   WIDGETS_END},
   117 };
   120 };
   118 
   121 
   119 static void DepotWndProc(Window *w, WindowEvent *e);
   122 static void DepotWndProc(Window *w, WindowEvent *e);
   254 
   257 
   255 	/* setup disabled buttons */
   258 	/* setup disabled buttons */
   256 	w->disabled_state =
   259 	w->disabled_state =
   257 		IsTileOwner(tile, _local_player) ? 0 : ( (1 << DEPOT_WIDGET_STOP_ALL) | (1 << DEPOT_WIDGET_START_ALL) |
   260 		IsTileOwner(tile, _local_player) ? 0 : ( (1 << DEPOT_WIDGET_STOP_ALL) | (1 << DEPOT_WIDGET_START_ALL) |
   258 			(1 << DEPOT_WIDGET_SELL) | (1 << DEPOT_WIDGET_SELL_CHAIN) | (1 << DEPOT_WIDGET_SELL_ALL) |
   261 			(1 << DEPOT_WIDGET_SELL) | (1 << DEPOT_WIDGET_SELL_CHAIN) | (1 << DEPOT_WIDGET_SELL_ALL) |
   259 			(1 << DEPOT_WIDGET_BUILD) | (1 << DEPOT_WIDGET_CLONE));
   262 			(1 << DEPOT_WIDGET_BUILD) | (1 << DEPOT_WIDGET_CLONE) | (1 << DEPOT_WIDGET_AUTOREPLACE));
   260 
   263 
   261 	/* determine amount of items for scroller */
   264 	/* determine amount of items for scroller */
   262 	if (WP(w, depot_d).type == VEH_Train) {
   265 	if (WP(w, depot_d).type == VEH_Train) {
   263 		hnum = 8;
   266 		hnum = 8;
   264 		for (num = 0; num < WP(w, depot_d).engine_count; num++) {
   267 		for (num = 0; num < WP(w, depot_d).engine_count; num++) {
   576 static void ResizeDepotButtons(Window *w)
   579 static void ResizeDepotButtons(Window *w)
   577 {
   580 {
   578 	/* We got the widget moved around. Now we will make some widgets to fill the gab between some widgets in equal sizes */
   581 	/* We got the widget moved around. Now we will make some widgets to fill the gab between some widgets in equal sizes */
   579 
   582 
   580 	/* Make the buttons in the bottom equal in size */
   583 	/* Make the buttons in the bottom equal in size */
   581 	w->widget[DEPOT_WIDGET_LOCATION].right = w->widget[DEPOT_WIDGET_RESIZE].left - 1;
   584 	w->widget[DEPOT_WIDGET_LOCATION].right = w->widget[DEPOT_WIDGET_AUTOREPLACE].left - 1;
   582 	w->widget[DEPOT_WIDGET_BUILD].right    = w->widget[DEPOT_WIDGET_LOCATION].right / 3;
   585 	w->widget[DEPOT_WIDGET_BUILD].right    = w->widget[DEPOT_WIDGET_LOCATION].right / 3;
   583 	w->widget[DEPOT_WIDGET_LOCATION].left  = w->widget[DEPOT_WIDGET_BUILD].right * 2;
   586 	w->widget[DEPOT_WIDGET_LOCATION].left  = w->widget[DEPOT_WIDGET_BUILD].right * 2;
   584 	w->widget[DEPOT_WIDGET_CLONE].left     = w->widget[DEPOT_WIDGET_BUILD].right + 1;
   587 	w->widget[DEPOT_WIDGET_CLONE].left     = w->widget[DEPOT_WIDGET_BUILD].right + 1;
   585 	w->widget[DEPOT_WIDGET_CLONE].right    = w->widget[DEPOT_WIDGET_LOCATION].left - 1;
   588 	w->widget[DEPOT_WIDGET_CLONE].right    = w->widget[DEPOT_WIDGET_LOCATION].left - 1;
   586 
   589 
   648 					DoCommandP(w->window_number, WP(w, depot_d).type, e->we.click.widget == DEPOT_WIDGET_START_ALL ? 1 : 0, NULL, CMD_MASS_START_STOP);
   651 					DoCommandP(w->window_number, WP(w, depot_d).type, e->we.click.widget == DEPOT_WIDGET_START_ALL ? 1 : 0, NULL, CMD_MASS_START_STOP);
   649 					break;
   652 					break;
   650 
   653 
   651 				case DEPOT_WIDGET_SELL_ALL:
   654 				case DEPOT_WIDGET_SELL_ALL:
   652 					ShowDepotSellAllWindow(w->window_number, WP(w, depot_d).type);
   655 					ShowDepotSellAllWindow(w->window_number, WP(w, depot_d).type);
       
   656 					break;
       
   657 
       
   658 				case DEPOT_WIDGET_AUTOREPLACE:
       
   659 					DoCommandP(w->window_number, WP(w, depot_d).type, 0, NULL, CMD_DEPOT_MASS_AUTOREPLACE);
   653 					break;
   660 					break;
   654 
   661 
   655 			}
   662 			}
   656 			break;
   663 			break;
   657 
   664 
   810 
   817 
   811 			/* Special strings only for hangars (using hangar instead of depot and so on) */
   818 			/* Special strings only for hangars (using hangar instead of depot and so on) */
   812 			w->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_HANGAR_TOOLTIP;
   819 			w->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_HANGAR_TOOLTIP;
   813 			w->widget[DEPOT_WIDGET_START_ALL].tooltips=	STR_MASS_START_HANGAR_TOOLTIP;
   820 			w->widget[DEPOT_WIDGET_START_ALL].tooltips=	STR_MASS_START_HANGAR_TOOLTIP;
   814 			w->widget[DEPOT_WIDGET_SELL_ALL].tooltips =	STR_DEPOT_SELL_ALL_BUTTON_HANGAR_TIP;
   821 			w->widget[DEPOT_WIDGET_SELL_ALL].tooltips =	STR_DEPOT_SELL_ALL_BUTTON_HANGAR_TIP;
       
   822 			w->widget[DEPOT_WIDGET_AUTOREPLACE].tooltips = STR_DEPOT_AUTOREPLACE_HANGAR_TIP;
   815 			break;
   823 			break;
   816 	}
   824 	}
   817 }
   825 }
   818 
   826 
   819 /** Opens a depot window
   827 /** Opens a depot window