diff --git a/cm_changelog.txt b/cm_changelog.txt index 18babc81a1..cbf20fda09 100644 --- a/cm_changelog.txt +++ b/cm_changelog.txt @@ -74,6 +74,10 @@ This is usable for any OpenTTD servers == CHANGELOG == +*** +- Added active stations highlight to town zoning. Outlines stations that have been serviced in last ~50 days (as in checks for authority rating and town growth rate). +- Fixed next counter in town window (was always showing -1 in case of custom growth rate). + *** 1.5.3 (3 Dec 2015) *** - Update to OpenTTD 1.5.3 - Fixed crash when pressing Ctrl while building tramways. diff --git a/src/lang/english.txt b/src/lang/english.txt index e81d24948c..af829cd63e 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -5077,6 +5077,7 @@ STR_ZONING_CB_TOWN_BORDERS :{BLACK}CB town STR_ZONING_CB_BORDERS :{BLACK}CB borders STR_ZONING_ADVERTISEMENT_ZONES :{BLACK}Advertisement STR_ZONING_TOWN_GROWTH_TILES :{BLACK}Town growth tiles +STR_ZONING_ACTIVE_STATIONS :{BLACK}Active stations # Commands toolbar STR_TOOLBAR_COMMANDS_CAPTION :{WHITE}Commands diff --git a/src/zoning.h b/src/zoning.h index 4a2100fd7d..a8e46751d9 100644 --- a/src/zoning.h +++ b/src/zoning.h @@ -7,16 +7,17 @@ enum EvaluationMode { CHECKNOTHING = 0, - CHECKOPINION = 1, ///< Check the local authority's opinion. - CHECKBUILD = 2, ///< Check wither or not the player can build. - CHECKSTACATCH = 3, ///< Check catchment area for stations - CHECKBULUNSER = 4, ///< Check for unserved buildings - CHECKINDUNSER = 5, ///< Check for unserved industries - CHECKTOWNZONES = 6, ///< Town zones (Tz*) - CHECKCBBORDERS = 7, ///< Citybuilder cargo acceptment zone - CHECKCBTOWNBORDERS = 8, ///< Citybuilder server town borders - CHECKTOWNADZONES = 9, ///< Town advertisement zone - CHECKTOWNGROWTHTILES = 10 ///< Town growth tiles (new house, skipped/removed house) + CHECKOPINION, ///< Check the local authority's opinion. + CHECKBUILD, ///< Check wither or not the player can build. + CHECKSTACATCH, ///< Check catchment area for stations + CHECKACTIVESTATIONS, ///< Active/inactive stations (serviced in 50 days) + CHECKBULUNSER, ///< Check for unserved buildings + CHECKINDUNSER, ///< Check for unserved industries + CHECKTOWNZONES, ///< Town zones (Tz*) + CHECKCBBORDERS, ///< Citybuilder cargo acceptment zone + CHECKCBTOWNBORDERS, ///< Citybuilder server town borders + CHECKTOWNADZONES, ///< Town advertisement zone + CHECKTOWNGROWTHTILES, ///< Town growth tiles (new house, skipped/removed house) }; struct Zoning { diff --git a/src/zoning_cmd.cpp b/src/zoning_cmd.cpp index 94bdb78ee6..e22b532a8d 100644 --- a/src/zoning_cmd.cpp +++ b/src/zoning_cmd.cpp @@ -252,6 +252,26 @@ SpriteID TileZoneCheckTownsGrowthTiles(TileIndex tile) { } } +// For station shows whether it is active +SpriteID TileZoneCheckActiveStations(TileIndex tile) { + // Never on a station. + if (!IsTileType(tile, MP_STATION)){ + return INVALID_SPRITE_ID; + } + + Station *st = Station::GetByTile(tile); + if (st == NULL) { + return INVALID_SPRITE_ID; + } + + if (st->time_since_load <= 20 || st->time_since_unload <= 20) { + return SPR_PALETTE_ZONING_GREEN; + } + + return SPR_PALETTE_ZONING_RED; +} + + /** * General evaluation function; calls all the other functions depending on * evaluation mode. @@ -273,6 +293,7 @@ SpriteID TileZoningSpriteEvaluation(TileIndex tile, Owner owner, EvaluationMode case CHECKCBTOWNBORDERS: return TileZoneCheckCBTownBorders(tile); case CHECKTOWNADZONES: return TileZoneCheckTownAdvertisementZones(tile); case CHECKTOWNGROWTHTILES: return TileZoneCheckTownsGrowthTiles(tile); + case CHECKACTIVESTATIONS: return TileZoneCheckActiveStations(tile); default: return INVALID_SPRITE_ID; } } diff --git a/src/zoning_gui.cpp b/src/zoning_gui.cpp index c0e0d0c925..bc47afff50 100644 --- a/src/zoning_gui.cpp +++ b/src/zoning_gui.cpp @@ -13,6 +13,7 @@ const StringID _zone_types[] = { STR_ZONING_AUTHORITY, STR_ZONING_CAN_BUILD, STR_ZONING_STA_CATCH, + STR_ZONING_ACTIVE_STATIONS, STR_ZONING_BUL_UNSER, STR_ZONING_IND_UNSER, STR_ZONING_TOWN_ZONES, @@ -25,8 +26,8 @@ const StringID _zone_types[] = { enum ZoningToolbarWidgets { ZTW_CAPTION, ZTW_OUTER_FIRST, - ZTW_INNER_FIRST = ZTW_OUTER_FIRST + 10, - ZTW_INNER_END = ZTW_INNER_FIRST + 10, + ZTW_INNER_FIRST = ZTW_OUTER_FIRST + 11, + ZTW_INNER_END = ZTW_INNER_FIRST + 11, }; struct ZoningWindow : public Window { @@ -142,6 +143,7 @@ static Hotkey zoning_hotkeys[] = { Hotkey(WKC_SHIFT | '8', "CB_build_borders", ZTW_OUTER_FIRST + 7), Hotkey(WKC_SHIFT | '9', "advertisement", ZTW_OUTER_FIRST + 8), Hotkey(WKC_SHIFT | '0', "growth_tiles", ZTW_OUTER_FIRST + 9), + Hotkey((uint16)0, "active_stations", ZTW_OUTER_FIRST + 10), HOTKEY_LIST_END };