src/dock_gui.cpp
branchNewGRF_ports
changeset 10994 cd9968b6f96b
parent 10991 d8811e327d12
equal deleted inserted replaced
10991:d8811e327d12 10994:cd9968b6f96b
    67 static void PlaceDocks_BuildLock(TileIndex tile)
    67 static void PlaceDocks_BuildLock(TileIndex tile)
    68 {
    68 {
    69 	DoCommandP(tile, 0, 0, CcBuildDocks, CMD_BUILD_LOCK | CMD_MSG(STR_CANT_BUILD_LOCKS));
    69 	DoCommandP(tile, 0, 0, CcBuildDocks, CMD_BUILD_LOCK | CMD_MSG(STR_CANT_BUILD_LOCKS));
    70 }
    70 }
    71 
    71 
       
    72 static void PlaceDocks_Aqueduct(TileIndex tile)
       
    73 {
       
    74 	VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE);
       
    75 }
       
    76 
       
    77 
    72 /** Enum referring to the widgets of the build dock toolbar */
    78 /** Enum referring to the widgets of the build dock toolbar */
    73 enum DockToolbarWidgets {
    79 enum DockToolbarWidgets {
    74 	DTW_BEGIN = 0,                 ///< Start of toolbar widgets
    80 	DTW_BEGIN = 0,                 ///< Start of toolbar widgets
    75 	DTW_CLOSEBOX = DTW_BEGIN,      ///< Close window button
    81 	DTW_CLOSEBOX = DTW_BEGIN,      ///< Close window button
    76 	DTW_CAPTION,                   ///< Window caption
    82 	DTW_CAPTION,                   ///< Window caption
    81 	DTW_SEPERATOR,                 ///< Seperating panel between lock and demolish
    87 	DTW_SEPERATOR,                 ///< Seperating panel between lock and demolish
    82 	DTW_DEMOLISH,                  ///< Demolish aka dynamite button
    88 	DTW_DEMOLISH,                  ///< Demolish aka dynamite button
    83 	DTW_DEPOT,                     ///< Build depot button
    89 	DTW_DEPOT,                     ///< Build depot button
    84 	DTW_STATION,                   ///< Build station button
    90 	DTW_STATION,                   ///< Build station button
    85 	DTW_BUOY,                      ///< Build buoy button
    91 	DTW_BUOY,                      ///< Build buoy button
       
    92 	DTW_BUILD_AQUEDUCT,            ///< Build aqueduct button
    86 	DTW_END,                       ///< End of toolbar widgets
    93 	DTW_END,                       ///< End of toolbar widgets
    87 };
    94 };
    88 
    95 
    89 
    96 
    90 static void BuildDocksClick_Canal(Window *w)
    97 static void BuildDocksClick_Canal(Window *w)
   116 
   123 
   117 static void BuildDocksClick_Buoy(Window *w)
   124 static void BuildDocksClick_Buoy(Window *w)
   118 {
   125 {
   119 	if (!CanBuildVehicleInfrastructure(VEH_SHIP)) return;
   126 	if (!CanBuildVehicleInfrastructure(VEH_SHIP)) return;
   120 	HandlePlacePushButton(w, DTW_BUOY, SPR_CURSOR_BOUY, VHM_RECT, PlaceDocks_Buoy);
   127 	HandlePlacePushButton(w, DTW_BUOY, SPR_CURSOR_BOUY, VHM_RECT, PlaceDocks_Buoy);
       
   128 }
       
   129 
       
   130 static void BuildDocksClick_Aqueduct(Window *w)
       
   131 {
       
   132 	HandlePlacePushButton(w, DTW_BUILD_AQUEDUCT, SPR_CURSOR_AQUEDUCT, VHM_RECT, PlaceDocks_Aqueduct);
   121 }
   133 }
   122 
   134 
   123 
   135 
   124 typedef void OnButtonClick(Window *w);
   136 typedef void OnButtonClick(Window *w);
   125 static OnButtonClick * const _build_docks_button_proc[] = {
   137 static OnButtonClick * const _build_docks_button_proc[] = {
   127 	BuildDocksClick_Lock,
   139 	BuildDocksClick_Lock,
   128 	NULL,
   140 	NULL,
   129 	BuildDocksClick_Demolish,
   141 	BuildDocksClick_Demolish,
   130 	BuildDocksClick_Depot,
   142 	BuildDocksClick_Depot,
   131 	BuildDocksClick_Dock,
   143 	BuildDocksClick_Dock,
   132 	BuildDocksClick_Buoy
   144 	BuildDocksClick_Buoy,
       
   145 	BuildDocksClick_Aqueduct
   133 };
   146 };
   134 
   147 
   135 struct BuildDocksToolbarWindow : Window {
   148 struct BuildDocksToolbarWindow : Window {
   136 	BuildDocksToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
   149 	BuildDocksToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
   137 	{
   150 	{
   162 			case '2': BuildDocksClick_Lock(this); break;
   175 			case '2': BuildDocksClick_Lock(this); break;
   163 			case '3': BuildDocksClick_Demolish(this); break;
   176 			case '3': BuildDocksClick_Demolish(this); break;
   164 			case '4': BuildDocksClick_Depot(this); break;
   177 			case '4': BuildDocksClick_Depot(this); break;
   165 			case '5': BuildDocksClick_Dock(this); break;
   178 			case '5': BuildDocksClick_Dock(this); break;
   166 			case '6': BuildDocksClick_Buoy(this); break;
   179 			case '6': BuildDocksClick_Buoy(this); break;
       
   180 			case 'B':
       
   181 			case '7': BuildDocksClick_Aqueduct(this); break;
   167 			default:  return ES_NOT_HANDLED;
   182 			default:  return ES_NOT_HANDLED;
   168 		}
   183 		}
   169 		return ES_HANDLED;
   184 		return ES_HANDLED;
   170 	}
   185 	}
   171 
   186 
   181 
   196 
   182 	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
   197 	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
   183 	{
   198 	{
   184 		if (pt.x != -1) {
   199 		if (pt.x != -1) {
   185 			switch (select_proc) {
   200 			switch (select_proc) {
       
   201 				case DDSP_BUILD_BRIDGE:
       
   202 					ResetObjectToPlace();
       
   203 					extern void CcBuildBridge(bool success, TileIndex tile, uint32 p1, uint32 p2);
       
   204 					DoCommandP(end_tile, start_tile, TRANSPORT_WATER << 15, CcBuildBridge, CMD_BUILD_BRIDGE | CMD_MSG(STR_CAN_T_BUILD_AQUEDUCT_HERE));
       
   205 
   186 				case DDSP_DEMOLISH_AREA:
   206 				case DDSP_DEMOLISH_AREA:
   187 					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
   207 					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
   188 					break;
   208 					break;
   189 				case DDSP_CREATE_WATER:
   209 				case DDSP_CREATE_WATER:
   190 					DoCommandP(end_tile, start_tile, 0, CcBuildCanal, CMD_BUILD_CANAL | CMD_MSG(STR_CANT_BUILD_CANALS));
   210 					DoCommandP(end_tile, start_tile, 0, CcBuildCanal, CMD_BUILD_CANAL | CMD_MSG(STR_CANT_BUILD_CANALS));
   212 	}
   232 	}
   213 };
   233 };
   214 
   234 
   215 static const Widget _build_docks_toolb_widgets[] = {
   235 static const Widget _build_docks_toolb_widgets[] = {
   216 {   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                   STR_018B_CLOSE_WINDOW},                   // DTW_CLOSEBOX
   236 {   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                   STR_018B_CLOSE_WINDOW},                   // DTW_CLOSEBOX
   217 {    WWT_CAPTION,   RESIZE_NONE,     7,    11,   123,     0,    13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},         // DTW_CAPTION
   237 {    WWT_CAPTION,   RESIZE_NONE,     7,    11,   145,     0,    13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},         // DTW_CAPTION
   218 {  WWT_STICKYBOX,   RESIZE_NONE,     7,   124,   135,     0,    13, 0x0,                        STR_STICKY_BUTTON},                       // DTW_STICKY
   238 {  WWT_STICKYBOX,   RESIZE_NONE,     7,   146,   157,     0,    13, 0x0,                        STR_STICKY_BUTTON},                       // DTW_STICKY
   219 {     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_BUILD_CANAL,        STR_BUILD_CANALS_TIP},                    // DTW_CANAL
   239 {     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_BUILD_CANAL,        STR_BUILD_CANALS_TIP},                    // DTW_CANAL
   220 {     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_BUILD_LOCK,         STR_BUILD_LOCKS_TIP},                     // DTW_LOCK
   240 {     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_BUILD_LOCK,         STR_BUILD_LOCKS_TIP},                     // DTW_LOCK
   221 
   241 
   222 {      WWT_PANEL,   RESIZE_NONE,     7,    44,    47,    14,    35, 0x0,                        STR_NULL},                                // DTW_SEPERATOR
   242 {      WWT_PANEL,   RESIZE_NONE,     7,    44,    47,    14,    35, 0x0,                        STR_NULL},                                // DTW_SEPERATOR
   223 
   243 
   224 {     WWT_IMGBTN,   RESIZE_NONE,     7,    48,    69,    14,    35, SPR_IMG_DYNAMITE,           STR_018D_DEMOLISH_BUILDINGS_ETC},         // DTW_DEMOLISH
   244 {     WWT_IMGBTN,   RESIZE_NONE,     7,    48,    69,    14,    35, SPR_IMG_DYNAMITE,           STR_018D_DEMOLISH_BUILDINGS_ETC},         // DTW_DEMOLISH
   225 {     WWT_IMGBTN,   RESIZE_NONE,     7,    70,    91,    14,    35, SPR_IMG_SHIP_DEPOT,         STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},  // DTW_DEPOT
   245 {     WWT_IMGBTN,   RESIZE_NONE,     7,    70,    91,    14,    35, SPR_IMG_SHIP_DEPOT,         STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},  // DTW_DEPOT
   226 {     WWT_IMGBTN,   RESIZE_NONE,     7,    92,   113,    14,    35, SPR_IMG_SHIP_DOCK,          STR_981D_BUILD_SHIP_DOCK},                // DTW_STATION
   246 {     WWT_IMGBTN,   RESIZE_NONE,     7,    92,   113,    14,    35, SPR_IMG_SHIP_DOCK,          STR_981D_BUILD_SHIP_DOCK},                // DTW_STATION
   227 {     WWT_IMGBTN,   RESIZE_NONE,     7,   114,   135,    14,    35, SPR_IMG_BOUY,               STR_9834_POSITION_BUOY_WHICH_CAN},        // DTW_BUOY
   247 {     WWT_IMGBTN,   RESIZE_NONE,     7,   114,   135,    14,    35, SPR_IMG_BOUY,               STR_9834_POSITION_BUOY_WHICH_CAN},        // DTW_BUOY
       
   248 {     WWT_IMGBTN,   RESIZE_NONE,     7,   136,   157,    14,    35, SPR_IMG_AQUEDUCT,           STR_BUILD_AQUEDUCT},                      // DTW_BUILD_AQUEDUCT
   228 {   WIDGETS_END},
   249 {   WIDGETS_END},
   229 };
   250 };
   230 
   251 
   231 static const WindowDesc _build_docks_toolbar_desc = {
   252 static const WindowDesc _build_docks_toolbar_desc = {
   232 	WDP_ALIGN_TBR, 22, 136, 36, 136, 36,
   253 	WDP_ALIGN_TBR, 22, 158, 36, 158, 36,
   233 	WC_BUILD_TOOLBAR, WC_NONE,
   254 	WC_BUILD_TOOLBAR, WC_NONE,
   234 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
   255 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
   235 	_build_docks_toolb_widgets,
   256 	_build_docks_toolb_widgets,
   236 };
   257 };
   237 
   258