diff --git a/config.lib b/config.lib index ad269fe468..2c46e71279 100644 --- a/config.lib +++ b/config.lib @@ -2940,7 +2940,7 @@ detect_icu() { # It was forced, so it should be found. if [ "$with_icu" != "1" ]; then log 1 "configure: error: icu-config couldn't be found" - log 1 "configure: error: you supplied '$with_icuconfig', but it seems invalid" + log 1 "configure: error: you supplied '$with_icu', but it seems invalid" exit 1 fi diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index ab383794b7..afd1672e44 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -485,31 +485,31 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u RoadTypes roadtypes = GetRoadTypes(tile); RoadBits road = GetRoadBits(tile, ROADTYPE_ROAD); RoadBits tram = GetRoadBits(tile, ROADTYPE_TRAM); - switch (roadtypes) { - default: break; - case ROADTYPES_TRAM: - /* Tram crossings must always have road. */ - if (flags & DC_EXEC) { - SetRoadOwner(tile, ROADTYPE_ROAD, _current_company); - Company *c = Company::GetIfValid(_current_company); - if (c != NULL) { - /* A full diagonal tile has two road bits. */ - c->infrastructure.road[ROADTYPE_ROAD] += 2; - DirtyCompanyInfrastructureWindows(c->index); + if ((track == TRACK_X && (road | tram) == ROAD_Y) || + (track == TRACK_Y && (road | tram) == ROAD_X)) { + switch (roadtypes) { + default: break; + case ROADTYPES_TRAM: + /* Tram crossings must always have road. */ + if (flags & DC_EXEC) { + SetRoadOwner(tile, ROADTYPE_ROAD, _current_company); + Company *c = Company::GetIfValid(_current_company); + if (c != NULL) { + /* A full diagonal tile has two road bits. */ + c->infrastructure.road[ROADTYPE_ROAD] += 2; + DirtyCompanyInfrastructureWindows(c->index); + } } - } - roadtypes |= ROADTYPES_ROAD; - break; + roadtypes |= ROADTYPES_ROAD; + break; - case ROADTYPES_ALL: - if (road != tram) return CMD_ERROR; - break; - } + case ROADTYPES_ALL: + if (road != tram) return CMD_ERROR; + break; + } - road |= tram; + road |= tram; - if ((track == TRACK_X && road == ROAD_Y) || - (track == TRACK_Y && road == ROAD_X)) { if (flags & DC_EXEC) { MakeRoadCrossing(tile, GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), _current_company, (track == TRACK_X ? AXIS_Y : AXIS_X), railtype, roadtypes, GetTownIndex(tile)); UpdateLevelCrossing(tile, false); diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 37b553f1a6..2c87d8f062 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1623,11 +1623,12 @@ CommandCost CmdRemoveFromRailWaypoint(TileIndex start, DoCommandFlag flags, uint * Remove a rail station/waypoint * @param st The station/waypoint to remove the rail part from * @param flags operation to perform + * @param removal_cost the cost for removing a tile * @tparam T the type of station to remove * @return cost or failure of operation */ template -CommandCost RemoveRailStation(T *st, DoCommandFlag flags) +CommandCost RemoveRailStation(T *st, DoCommandFlag flags, Money removal_cost) { /* Current company owns the station? */ if (_current_company != OWNER_WATER) { @@ -1649,7 +1650,7 @@ CommandCost RemoveRailStation(T *st, DoCommandFlag flags) CommandCost ret = EnsureNoVehicleOnGround(tile); if (ret.Failed()) return ret; - cost.AddCost(_price[PR_CLEAR_STATION_RAIL]); + cost.AddCost(removal_cost); if (flags & DC_EXEC) { /* read variables before the station tile is removed */ Track track = GetRailStationTrack(tile); @@ -1704,7 +1705,7 @@ static CommandCost RemoveRailStation(TileIndex tile, DoCommandFlag flags) } Station *st = Station::GetByTile(tile); - CommandCost cost = RemoveRailStation(st, flags); + CommandCost cost = RemoveRailStation(st, flags, _price[PR_CLEAR_STATION_RAIL]); if (flags & DC_EXEC) st->RecomputeIndustriesNear(); @@ -1724,7 +1725,7 @@ static CommandCost RemoveRailWaypoint(TileIndex tile, DoCommandFlag flags) return DoCommand(tile, 0, 0, DC_EXEC, CMD_REMOVE_FROM_RAIL_WAYPOINT); } - return RemoveRailStation(Waypoint::GetByTile(tile), flags); + return RemoveRailStation(Waypoint::GetByTile(tile), flags, _price[PR_CLEAR_WAYPOINT_RAIL]); } diff --git a/src/texteff.cpp b/src/texteff.cpp index 03b5645998..cdb8b8ce6a 100644 --- a/src/texteff.cpp +++ b/src/texteff.cpp @@ -114,7 +114,7 @@ void DrawTextEffects(DrawPixelInfo *dpi) for (TextEffect *te = _text_effects.Begin(); te != end; te++) { if (te->string_id == INVALID_STRING_ID) continue; if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { - ViewportAddString(dpi, ZOOM_LVL_OUT_8X, te, te->string_id, te->string_id - 1, 0, te->params_1, te->params_2); + ViewportAddString(dpi, ZOOM_LVL_OUT_8X, te, te->string_id, te->string_id - 1, STR_NULL, te->params_1, te->params_2); } } } diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 6674c905bd..d2c38e8760 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -377,7 +377,8 @@ void Town::UpdateVirtCoord() SetDParam(0, this->index); SetDParam(1, this->cache.population); this->cache.sign.UpdatePosition(pt.x, pt.y - 24 * ZOOM_LVL_BASE, - _settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP : STR_VIEWPORT_TOWN); + _settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP : STR_VIEWPORT_TOWN, + STR_VIEWPORT_TOWN); SetWindowDirty(WC_TOWN_VIEW, this->index); } diff --git a/src/viewport.cpp b/src/viewport.cpp index ef23f18126..c1d4d61b4e 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -1309,8 +1309,9 @@ static void ViewportAddSigns(DrawPixelInfo *dpi) * @param center the (preferred) center of the viewport sign * @param top the new top of the sign * @param str the string to show in the sign + * @param str_small the string to show when zoomed out. STR_NULL means same as \a str */ -void ViewportSign::UpdatePosition(int center, int top, StringID str) +void ViewportSign::UpdatePosition(int center, int top, StringID str, StringID str_small) { if (this->width_normal != 0) this->MarkDirty(); @@ -1323,6 +1324,9 @@ void ViewportSign::UpdatePosition(int center, int top, StringID str) this->center = center; /* zoomed out version */ + if (str_small != STR_NULL) { + GetString(buffer, str_small, lastof(buffer)); + } this->width_small = VPSM_LEFT + Align(GetStringBoundingBox(buffer, FS_SMALL).width, 2) + VPSM_RIGHT; this->MarkDirty(); diff --git a/src/viewport_type.h b/src/viewport_type.h index 800c8b4952..07485c3243 100644 --- a/src/viewport_type.h +++ b/src/viewport_type.h @@ -14,6 +14,7 @@ #include "zoom_type.h" #include "strings_type.h" +#include "table/strings.h" class LinkGraphOverlay; @@ -50,7 +51,7 @@ struct ViewportSign { uint16 width_normal; ///< The width when not zoomed out (normal font) uint16 width_small; ///< The width when zoomed out (small font) - void UpdatePosition(int center, int top, StringID str); + void UpdatePosition(int center, int top, StringID str, StringID str_small = STR_NULL); void MarkDirty(ZoomLevel maxzoom = ZOOM_LVL_MAX) const; };