59 DoCommandP(tile, 0, 0, CcBuildDocks, CMD_BUILD_BUOY | CMD_MSG(STR_9835_CAN_T_POSITION_BUOY_HERE)); |
59 DoCommandP(tile, 0, 0, CcBuildDocks, CMD_BUILD_BUOY | CMD_MSG(STR_9835_CAN_T_POSITION_BUOY_HERE)); |
60 } |
60 } |
61 |
61 |
62 static void PlaceDocks_BuildCanal(TileIndex tile) |
62 static void PlaceDocks_BuildCanal(TileIndex tile) |
63 { |
63 { |
64 VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_CREATE_WATER); |
64 VpStartPlaceSizing(tile, (_game_mode == GM_EDITOR) ? VPM_X_AND_Y : VPM_X_OR_Y, DDSP_CREATE_WATER); |
65 } |
65 } |
66 |
66 |
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 } |
|
71 |
|
72 static void PlaceDocks_BuildRiver(TileIndex tile) |
|
73 { |
|
74 VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_RIVER); |
70 } |
75 } |
71 |
76 |
72 static void PlaceDocks_Aqueduct(TileIndex tile) |
77 static void PlaceDocks_Aqueduct(TileIndex tile) |
73 { |
78 { |
74 VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE); |
79 VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE); |
87 DTW_SEPERATOR, ///< Seperating panel between lock and demolish |
92 DTW_SEPERATOR, ///< Seperating panel between lock and demolish |
88 DTW_DEMOLISH, ///< Demolish aka dynamite button |
93 DTW_DEMOLISH, ///< Demolish aka dynamite button |
89 DTW_DEPOT, ///< Build depot button |
94 DTW_DEPOT, ///< Build depot button |
90 DTW_STATION, ///< Build station button |
95 DTW_STATION, ///< Build station button |
91 DTW_BUOY, ///< Build buoy button |
96 DTW_BUOY, ///< Build buoy button |
|
97 DTW_RIVER, ///< Build river button (in scenario editor) |
92 DTW_BUILD_AQUEDUCT, ///< Build aqueduct button |
98 DTW_BUILD_AQUEDUCT, ///< Build aqueduct button |
93 DTW_END, ///< End of toolbar widgets |
99 DTW_END, ///< End of toolbar widgets |
94 }; |
100 }; |
95 |
101 |
96 |
102 |
97 static void BuildDocksClick_Canal(Window *w) |
103 static void BuildDocksClick_Canal(Window *w) |
98 { |
104 { |
|
105 |
99 HandlePlacePushButton(w, DTW_CANAL, SPR_CURSOR_CANAL, VHM_RECT, PlaceDocks_BuildCanal); |
106 HandlePlacePushButton(w, DTW_CANAL, SPR_CURSOR_CANAL, VHM_RECT, PlaceDocks_BuildCanal); |
100 } |
107 } |
101 |
108 |
102 static void BuildDocksClick_Lock(Window *w) |
109 static void BuildDocksClick_Lock(Window *w) |
103 { |
110 { |
231 VpSetPresizeRange(tile_from, tile_to); |
249 VpSetPresizeRange(tile_from, tile_to); |
232 } |
250 } |
233 }; |
251 }; |
234 |
252 |
235 static const Widget _build_docks_toolb_widgets[] = { |
253 static const Widget _build_docks_toolb_widgets[] = { |
236 { WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // DTW_CLOSEBOX |
254 { WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // DTW_CLOSEBOX |
237 { WWT_CAPTION, RESIZE_NONE, 7, 11, 145, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // DTW_CAPTION |
255 { WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_9801_WATERWAYS_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // DTW_CAPTION |
238 { WWT_STICKYBOX, RESIZE_NONE, 7, 146, 157, 0, 13, 0x0, STR_STICKY_BUTTON}, // DTW_STICKY |
256 { WWT_STICKYBOX, RESIZE_NONE, 7, 148, 159, 0, 13, 0x0, STR_STICKY_BUTTON}, // DTW_STICKY |
239 { WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_BUILD_CANAL, STR_BUILD_CANALS_TIP}, // DTW_CANAL |
257 { WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_BUILD_CANAL, STR_BUILD_CANALS_TIP}, // DTW_CANAL |
240 { WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_BUILD_LOCK, STR_BUILD_LOCKS_TIP}, // DTW_LOCK |
258 { WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_BUILD_LOCK, STR_BUILD_LOCKS_TIP}, // DTW_LOCK |
241 |
259 |
242 { WWT_PANEL, RESIZE_NONE, 7, 44, 47, 14, 35, 0x0, STR_NULL}, // DTW_SEPERATOR |
260 { WWT_PANEL, RESIZE_NONE, 7, 44, 48, 14, 35, 0x0, STR_NULL}, // DTW_SEPERATOR |
243 |
261 |
244 { WWT_IMGBTN, RESIZE_NONE, 7, 48, 69, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // DTW_DEMOLISH |
262 { WWT_IMGBTN, RESIZE_NONE, 7, 49, 70, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // DTW_DEMOLISH |
245 { WWT_IMGBTN, RESIZE_NONE, 7, 70, 91, 14, 35, SPR_IMG_SHIP_DEPOT, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING}, // DTW_DEPOT |
263 { WWT_IMGBTN, RESIZE_NONE, 7, 71, 92, 14, 35, SPR_IMG_SHIP_DEPOT, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING}, // DTW_DEPOT |
246 { WWT_IMGBTN, RESIZE_NONE, 7, 92, 113, 14, 35, SPR_IMG_SHIP_DOCK, STR_981D_BUILD_SHIP_DOCK}, // DTW_STATION |
264 { WWT_IMGBTN, RESIZE_NONE, 7, 93, 114, 14, 35, SPR_IMG_SHIP_DOCK, STR_981D_BUILD_SHIP_DOCK}, // DTW_STATION |
247 { WWT_IMGBTN, RESIZE_NONE, 7, 114, 135, 14, 35, SPR_IMG_BOUY, STR_9834_POSITION_BUOY_WHICH_CAN}, // DTW_BUOY |
265 { WWT_IMGBTN, RESIZE_NONE, 7, 115, 136, 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 |
266 { WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // DTW_RIVER |
|
267 { WWT_IMGBTN, RESIZE_NONE, 7, 137, 159, 14, 35, SPR_IMG_AQUEDUCT, STR_BUILD_AQUEDUCT}, // DTW_BUILD_AQUEDUCT |
249 { WIDGETS_END}, |
268 { WIDGETS_END}, |
250 }; |
269 }; |
251 |
270 |
252 static const WindowDesc _build_docks_toolbar_desc = { |
271 static const WindowDesc _build_docks_toolbar_desc = { |
253 WDP_ALIGN_TBR, 22, 158, 36, 158, 36, |
272 WDP_ALIGN_TBR, 22, 160, 36, 160, 36, |
254 WC_BUILD_TOOLBAR, WC_NONE, |
273 WC_BUILD_TOOLBAR, WC_NONE, |
255 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
274 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
256 _build_docks_toolb_widgets, |
275 _build_docks_toolb_widgets, |
257 }; |
276 }; |
258 |
277 |
260 { |
279 { |
261 if (!IsValidPlayer(_current_player)) return; |
280 if (!IsValidPlayer(_current_player)) return; |
262 |
281 |
263 DeleteWindowByClass(WC_BUILD_TOOLBAR); |
282 DeleteWindowByClass(WC_BUILD_TOOLBAR); |
264 AllocateWindowDescFront<BuildDocksToolbarWindow>(&_build_docks_toolbar_desc, TRANSPORT_WATER); |
283 AllocateWindowDescFront<BuildDocksToolbarWindow>(&_build_docks_toolbar_desc, TRANSPORT_WATER); |
|
284 } |
|
285 |
|
286 /* Widget definition for the build docks in scenario editor window */ |
|
287 static const Widget _build_docks_scen_toolb_widgets[] = { |
|
288 { WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // DTW_CLOSEBOX |
|
289 { WWT_CAPTION, RESIZE_NONE, 7, 11, 102, 0, 13, STR_9801_WATERWAYS_CONSTRUCTION_SE, STR_018C_WINDOW_TITLE_DRAG_THIS}, // DTW_CAPTION |
|
290 { WWT_STICKYBOX, RESIZE_NONE, 7, 103, 114, 0, 13, 0x0, STR_STICKY_BUTTON}, // DTW_STICKY |
|
291 { WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_BUILD_CANAL, STR_CREATE_LAKE}, // DTW_CANAL |
|
292 { WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_BUILD_LOCK, STR_BUILD_LOCKS_TIP}, // DTW_LOCK |
|
293 |
|
294 { WWT_PANEL, RESIZE_NONE, 7, 44, 48, 14, 35, 0x0, STR_NULL}, // DTW_SEPERATOR |
|
295 |
|
296 { WWT_IMGBTN, RESIZE_NONE, 7, 49, 70, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // DTW_DEMOLISH |
|
297 { WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // DTW_DEPOT |
|
298 { WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // DTW_STATION |
|
299 { WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // DTW_BUOY |
|
300 { WWT_IMGBTN, RESIZE_NONE, 7, 71, 92, 14, 35, SPR_IMG_BUILD_RIVER, STR_CREATE_RIVER}, // DTW_RIVER |
|
301 { WWT_IMGBTN, RESIZE_NONE, 7, 93, 114, 14, 35, SPR_IMG_AQUEDUCT, STR_BUILD_AQUEDUCT}, // DTW_BUILD_AQUEDUCT |
|
302 { WIDGETS_END}, |
|
303 }; |
|
304 |
|
305 /* Window definition for the build docks in scenario editor window */ |
|
306 static const WindowDesc _build_docks_scen_toolbar_desc = { |
|
307 WDP_AUTO, WDP_AUTO, 115, 36, 115, 36, |
|
308 WC_SCEN_BUILD_TOOLBAR, WC_NONE, |
|
309 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
|
310 _build_docks_scen_toolb_widgets, |
|
311 }; |
|
312 |
|
313 void ShowBuildDocksScenToolbar() |
|
314 { |
|
315 AllocateWindowDescFront<BuildDocksToolbarWindow>(&_build_docks_scen_toolbar_desc, TRANSPORT_WATER); |
265 } |
316 } |
266 |
317 |
267 struct BuildDocksStationWindow : public PickerWindowBase { |
318 struct BuildDocksStationWindow : public PickerWindowBase { |
268 private: |
319 private: |
269 enum BuildDockStationWidgets { |
320 enum BuildDockStationWidgets { |