1
0
Fork 0

Codechange: Move _grow_town_result out of GrowTownWithExtraHouse, GrowTownWithRoad, GrowTownWithBridge and GrowTownWithTunnel.

pull/14149/head
frosch 2025-05-05 12:48:42 +02:00 committed by frosch
parent d70aeb72a7
commit 22af391064
1 changed files with 19 additions and 17 deletions

View File

@ -1234,11 +1234,7 @@ static bool GrowTownWithExtraHouse(Town *t, TileIndex tile)
/* If there are enough neighbours stop here */
if (counter >= 3) {
if (TryBuildTownHouse(t, tile)) {
_grow_town_result = GROWTH_SUCCEED;
return true;
}
return false;
return TryBuildTownHouse(t, tile);
}
}
return false;
@ -1255,11 +1251,7 @@ static bool GrowTownWithExtraHouse(Town *t, TileIndex tile)
static bool GrowTownWithRoad(const Town *t, TileIndex tile, RoadBits rcmd)
{
RoadType rt = GetTownRoadType();
if (Command<CMD_BUILD_ROAD>::Do({DoCommandFlag::Execute, DoCommandFlag::Auto, DoCommandFlag::NoWater}, tile, rcmd, rt, DRD_NONE, t->index).Succeeded()) {
_grow_town_result = GROWTH_SUCCEED;
return true;
}
return false;
return Command<CMD_BUILD_ROAD>::Do({DoCommandFlag::Execute, DoCommandFlag::Auto, DoCommandFlag::NoWater}, tile, rcmd, rt, DRD_NONE, t->index).Succeeded();
}
/**
@ -1389,7 +1381,6 @@ static bool GrowTownWithBridge(const Town *t, const TileIndex tile, const DiagDi
RoadType rt = GetTownRoadType();
if (Command<CMD_BUILD_BRIDGE>::Do(CommandFlagsToDCFlags(GetCommandFlags<CMD_BUILD_BRIDGE>()), tile, bridge_tile, TRANSPORT_ROAD, bridge_type, rt).Succeeded()) {
Command<CMD_BUILD_BRIDGE>::Do(CommandFlagsToDCFlags(GetCommandFlags<CMD_BUILD_BRIDGE>()).Set(DoCommandFlag::Execute), tile, bridge_tile, TRANSPORT_ROAD, bridge_type, rt);
_grow_town_result = GROWTH_SUCCEED;
return true;
}
}
@ -1460,7 +1451,6 @@ static bool GrowTownWithTunnel(const Town *t, const TileIndex tile, const DiagDi
RoadType rt = GetTownRoadType();
if (Command<CMD_BUILD_TUNNEL>::Do(CommandFlagsToDCFlags(GetCommandFlags<CMD_BUILD_TUNNEL>()), tile, TRANSPORT_ROAD, rt).Succeeded()) {
Command<CMD_BUILD_TUNNEL>::Do(CommandFlagsToDCFlags(GetCommandFlags<CMD_BUILD_TUNNEL>()).Set(DoCommandFlag::Execute), tile, TRANSPORT_ROAD, rt);
_grow_town_result = GROWTH_SUCCEED;
return true;
}
@ -1678,7 +1668,9 @@ static void GrowTownInTile(TileIndex *tile_ptr, RoadBits cur_rb, DiagDirection t
default: NOT_REACHED();
case TL_3X3_GRID: // Use 2x2 grid afterwards!
GrowTownWithExtraHouse(t1, TileAddByDiagDir(house_tile, target_dir));
if (GrowTownWithExtraHouse(t1, TileAddByDiagDir(house_tile, target_dir))) {
_grow_town_result = GROWTH_SUCCEED;
}
[[fallthrough]];
case TL_2X2_GRID:
@ -1687,7 +1679,9 @@ static void GrowTownInTile(TileIndex *tile_ptr, RoadBits cur_rb, DiagDirection t
break;
case TL_BETTER_ROADS: // Use original afterwards!
GrowTownWithExtraHouse(t1, TileAddByDiagDir(house_tile, target_dir));
if (GrowTownWithExtraHouse(t1, TileAddByDiagDir(house_tile, target_dir))) {
_grow_town_result = GROWTH_SUCCEED;
}
[[fallthrough]];
case TL_ORIGINAL:
@ -1731,10 +1725,18 @@ static void GrowTownInTile(TileIndex *tile_ptr, RoadBits cur_rb, DiagDirection t
/* Only use the target direction for bridges and tunnels to ensure they're connected.
* The target_dir is as computed previously according to town layout, so
* it will match it perfectly. */
if (GrowTownWithBridge(t1, tile, target_dir)) return;
if (GrowTownWithTunnel(t1, tile, target_dir)) return;
if (GrowTownWithBridge(t1, tile, target_dir)) {
_grow_town_result = GROWTH_SUCCEED;
return;
}
if (GrowTownWithTunnel(t1, tile, target_dir)) {
_grow_town_result = GROWTH_SUCCEED;
return;
}
GrowTownWithRoad(t1, tile, rcmd);
if (GrowTownWithRoad(t1, tile, rcmd)) {
_grow_town_result = GROWTH_SUCCEED;
}
}
/**