Merge branch 'pr-7490' into jgrpp

# Conflicts:
#	src/dock_gui.cpp
#	src/water_cmd.cpp
This commit is contained in:
Jonathan G Rennison
2019-04-11 18:37:53 +01:00
3 changed files with 16 additions and 9 deletions

View File

@@ -162,7 +162,7 @@ struct BuildDocksToolbarWindow : Window {
case WID_DT_RIVER: // Build river button (in scenario editor) case WID_DT_RIVER: // Build river button (in scenario editor)
if (_game_mode != GM_EDITOR && !_settings_game.construction.enable_build_river) return; if (_game_mode != GM_EDITOR && !_settings_game.construction.enable_build_river) return;
HandlePlacePushButton(this, WID_DT_RIVER, SPR_CURSOR_RIVER, HT_RECT); HandlePlacePushButton(this, WID_DT_RIVER, SPR_CURSOR_RIVER, _game_mode == GM_EDITOR ? HT_RECT | HT_DIAGONAL : HT_RECT);
break; break;
case WID_DT_BUILD_AQUEDUCT: // Build aqueduct button case WID_DT_BUILD_AQUEDUCT: // Build aqueduct button
@@ -212,7 +212,7 @@ struct BuildDocksToolbarWindow : Window {
break; break;
case WID_DT_RIVER: // Build river button (in scenario editor) case WID_DT_RIVER: // Build river button (in scenario editor)
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_RIVER); VpStartPlaceSizing(tile, (_game_mode == GM_EDITOR) ? VPM_X_AND_Y : VPM_X_OR_Y, DDSP_CREATE_RIVER);
break; break;
case WID_DT_BUILD_AQUEDUCT: // Build aqueduct button case WID_DT_BUILD_AQUEDUCT: // Build aqueduct button
@@ -239,7 +239,7 @@ struct BuildDocksToolbarWindow : Window {
DoCommandP(end_tile, start_tile, (_game_mode == GM_EDITOR && _ctrl_pressed) ? WATER_CLASS_SEA : WATER_CLASS_CANAL, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_BUILD_CANALS), CcPlaySound_SPLAT_WATER); DoCommandP(end_tile, start_tile, (_game_mode == GM_EDITOR && _ctrl_pressed) ? WATER_CLASS_SEA : WATER_CLASS_CANAL, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_BUILD_CANALS), CcPlaySound_SPLAT_WATER);
break; break;
case DDSP_CREATE_RIVER: case DDSP_CREATE_RIVER:
DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcPlaySound_SPLAT_WATER); DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER | (_ctrl_pressed ? 1 << 2 : 0), CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcPlaySound_SPLAT_WATER);
break; break;
default: break; default: break;

View File

@@ -2941,7 +2941,7 @@ STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Build sh
STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Place a buoy which can be used as a waypoint. Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Place a buoy which can be used as a waypoint. Shift toggles building/showing cost estimate
STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Build aqueduct. Shift toggles building/showing cost estimate STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Build aqueduct. Shift toggles building/showing cost estimate
STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Define water area.{}Make a canal, unless Ctrl is held down at sea level, when it will flood the surroundings instead STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Define water area.{}Make a canal, unless Ctrl is held down at sea level, when it will flood the surroundings instead
STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Place rivers STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Place rivers. Ctrl selects the area diagonally.
# Ship depot construction window # Ship depot construction window
STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Ship Depot Orientation STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Ship Depot Orientation

View File

@@ -387,7 +387,9 @@ bool RiverModifyDesertZone(TileIndex tile, void *)
* @param tile end tile of stretch-dragging * @param tile end tile of stretch-dragging
* @param flags type of operation * @param flags type of operation
* @param p1 start tile of stretch-dragging * @param p1 start tile of stretch-dragging
* @param p2 waterclass to build. sea and river can only be built in scenario editor, unless enable_build_river is enabled * @param p2 various bitstuffed data
* bits 0-1: waterclass to build. sea and river can only be built in scenario editor, unless enable_build_river is enabled
* bit 2: Whether to use the Orthogonal (0) or Diagonal (1) iterator.
* @param text unused * @param text unused
* @return the cost of this operation or an error * @return the cost of this operation or an error
*/ */
@@ -398,6 +400,7 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
/* Outside of the editor you can only build canals, not oceans */ /* Outside of the editor you can only build canals, not oceans */
if (_game_mode != GM_EDITOR) { if (_game_mode != GM_EDITOR) {
if (HasBit(p2, 2)) return CMD_ERROR;
if (wc == WATER_CLASS_RIVER) { if (wc == WATER_CLASS_RIVER) {
if (!_settings_game.construction.enable_build_river) return CMD_ERROR; if (!_settings_game.construction.enable_build_river) return CMD_ERROR;
} else if (wc != WATER_CLASS_CANAL) { } else if (wc != WATER_CLASS_CANAL) {
@@ -405,13 +408,17 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
} }
} }
TileArea ta(tile, p1);
/* Outside the editor you can only drag canals, and not areas */ /* Outside the editor you can only drag canals, and not areas */
if (_game_mode != GM_EDITOR && ta.w != 1 && ta.h != 1) return CMD_ERROR; if (_game_mode != GM_EDITOR) {
TileArea ta(tile, p1);
if (ta.w != 1 && ta.h != 1) return CMD_ERROR;
}
CommandCost cost(EXPENSES_CONSTRUCTION); CommandCost cost(EXPENSES_CONSTRUCTION);
TILE_AREA_LOOP(tile, ta) {
TileIterator *iter = HasBit(p2, 2) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(tile, p1);
for (; *iter != INVALID_TILE; ++(*iter)) {
TileIndex tile = *iter;
CommandCost ret; CommandCost ret;
Slope slope = GetTileSlope(tile); Slope slope = GetTileSlope(tile);