|
OpenTTD Source
14.0-beta3
|
#include "viewport_type.h"#include "timer/timer_game_tick.h"#include "town_map.h"#include "subsidy_type.h"#include "newgrf_storage.h"#include "cargotype.h"Go to the source code of this file.
Data Structures | |
| struct | BuildingCounts< T > |
| struct | TownCache |
| Data structure with cached data of towns. More... | |
| struct | Town |
| Town data structure. More... | |
Typedefs | |
| typedef Pool< Town, TownID, 64, 64000 > | TownPool |
Enumerations | |
| enum | TownCouncilAttitudes { TOWN_COUNCIL_LENIENT = 0, TOWN_COUNCIL_TOLERANT = 1, TOWN_COUNCIL_HOSTILE = 2, TOWN_COUNCIL_PERMISSIVE = 3 } |
| Settings for town council attitudes. | |
| enum | TownRatingCheckType { ROAD_REMOVE = 0, TUNNELBRIDGE_REMOVE = 1, TOWN_RATING_CHECK_TYPE_COUNT } |
| Action types that a company must ask permission for to a town authority. More... | |
| enum | TownDirectoryInvalidateWindowData { TDIWD_FORCE_REBUILD, TDIWD_POPULATION_CHANGE, TDIWD_FORCE_RESORT } |
| Special values for town list window for the data parameter of InvalidateWindowData. | |
| enum | TownFlags { TOWN_IS_GROWING = 0, TOWN_HAS_CHURCH = 1, TOWN_HAS_STADIUM = 2, TOWN_CUSTOM_GROWTH = 3 } |
| This enum is used in conjunction with town->flags. More... | |
| enum | TownActions { TACT_NONE = 0x00, TACT_ADVERTISE_SMALL = 0x01, TACT_ADVERTISE_MEDIUM = 0x02, TACT_ADVERTISE_LARGE = 0x04, TACT_ROAD_REBUILD = 0x08, TACT_BUILD_STATUE = 0x10, TACT_FUND_BUILDINGS = 0x20, TACT_BUY_RIGHTS = 0x40, TACT_BRIBE = 0x80, TACT_COUNT = 8, TACT_ADVERTISE = TACT_ADVERTISE_SMALL | TACT_ADVERTISE_MEDIUM | TACT_ADVERTISE_LARGE, TACT_CONSTRUCTION = TACT_ROAD_REBUILD | TACT_BUILD_STATUE | TACT_FUND_BUILDINGS, TACT_FUNDS = TACT_BUY_RIGHTS | TACT_BRIBE, TACT_ALL = TACT_ADVERTISE | TACT_CONSTRUCTION | TACT_FUNDS } |
| Town actions of a company. More... | |
Functions | |
| uint32_t | GetWorldPopulation () |
| Get the total population, the sum of all towns in the world. More... | |
| void | UpdateAllTownVirtCoords () |
| Update the virtual coords needed to draw the town sign for all towns. | |
| void | ClearAllTownCachedNames () |
| Clear the cached_name of all towns. | |
| void | ShowTownViewWindow (TownID town) |
| void | ExpandTown (Town *t) |
| void | RebuildTownKdtree () |
| CommandCost | CheckforTownRating (DoCommandFlag flags, Town *t, TownRatingCheckType type) |
| Does the town authority allow the (destructive) action of the current company? More... | |
| TileIndexDiff | GetHouseNorthPart (HouseID &house) |
| Determines if a given HouseID is part of a multitile house. More... | |
| Town * | CalcClosestTownFromTile (TileIndex tile, uint threshold=UINT_MAX) |
| Return the town closest to the given tile within threshold. More... | |
| void | ResetHouses () |
| void | ClearTownHouse (Town *t, TileIndex tile) |
| Clear a town house. More... | |
| void | UpdateTownMaxPass (Town *t) |
| Update the maximum amount of montly passengers and mail for a town, based on its population. More... | |
| void | UpdateTownRadius (Town *t) |
| Update the cached town zone radii of a town, based on the number of houses. More... | |
| CommandCost | CheckIfAuthorityAllowsNewStation (TileIndex tile, DoCommandFlag flags) |
| Checks whether the local authority allows construction of a new station (rail, road, airport, dock) on the given tile. More... | |
| Town * | ClosestTownFromTile (TileIndex tile, uint threshold) |
| Return the town closest (in distance or ownership) to a given tile, within a given threshold. More... | |
| void | ChangeTownRating (Town *t, int add, int max, DoCommandFlag flags) |
| Changes town rating of the current company. More... | |
| HouseZonesBits | GetTownRadiusGroup (const Town *t, TileIndex tile) |
| Returns the bit corresponding to the town zone of the specified tile. More... | |
| void | SetTownRatingTestMode (bool mode) |
| Switch the town rating to test-mode, to allow commands to be tested without affecting current ratings. More... | |
| TownActions | GetMaskOfTownActions (CompanyID cid, const Town *t) |
| Get a list of available town authority actions. More... | |
| bool | GenerateTowns (TownLayout layout) |
| Generate a number of towns with a given layout. More... | |
| const CargoSpec * | FindFirstCargoWithTownAcceptanceEffect (TownAcceptanceEffect effect) |
| Determines the first cargo with a certain town effect. More... | |
| template<class T > | |
| void | MakeDefaultName (T *obj) |
| Set the default name for a depot/waypoint. More... | |
| uint16_t | TownTicksToGameTicks (uint16_t ticks) |
| RoadType | GetTownRoadType () |
| Get the road type that towns should build at this current moment. More... | |
Variables | |
| static const uint | CUSTOM_TOWN_NUMBER_DIFFICULTY = 4 |
| value for custom town number in difficulty settings | |
| static const uint | CUSTOM_TOWN_MAX_NUMBER = 5000 |
| this is the maximum number of towns a user can specify in customisation | |
| static const TownID | INVALID_TOWN = 0xFFFF |
| static const uint | TOWN_GROWTH_WINTER = 0xFFFFFFFE |
| The town only needs this cargo in the winter (any amount) | |
| static const uint | TOWN_GROWTH_DESERT = 0xFFFFFFFF |
| The town needs the cargo for growth when on desert (any amount) | |
| static const uint16_t | TOWN_GROWTH_RATE_NONE = 0xFFFF |
| Special value for Town::growth_rate to disable town growth. | |
| static const uint16_t | MAX_TOWN_GROWTH_TICKS = 930 |
| Max amount of original town ticks that still fit into uint16_t, about equal to UINT16_MAX / TOWN_GROWTH_TICKS but slightly less to simplify calculations. | |
| TownPool | _town_pool |
| const byte | _town_action_costs [TACT_COUNT] |
| Factor in the cost of each town action. More... | |
Base of the town class.
Definition in file town.h.
| enum TownActions |
Town actions of a company.
| enum TownFlags |
This enum is used in conjunction with town->flags.
IT simply states what bit is used for. It is pretty unrealistic (IMHO) to only have one church/stadium per town, NO MATTER the population of it. And there are 5 more bits available on flags...
| Enumerator | |
|---|---|
| TOWN_IS_GROWING | Conditions for town growth are met. Grow according to Town::growth_rate. |
| TOWN_HAS_CHURCH | There can be only one church by town. |
| TOWN_HAS_STADIUM | There can be only one stadium by town. |
| TOWN_CUSTOM_GROWTH | Growth rate is controlled by GS. |
| enum TownRatingCheckType |
Action types that a company must ask permission for to a town authority.
| Enumerator | |
|---|---|
| ROAD_REMOVE | Removal of a road owned by the town. |
| TUNNELBRIDGE_REMOVE | Removal of a tunnel or bridge owned by the towb. |
| TOWN_RATING_CHECK_TYPE_COUNT | Number of town checking action types. |
Return the town closest to the given tile within threshold.
| tile | Starting point of the search. |
| threshold | Biggest allowed distance to the town. |
nullptr if there is no such town.Definition at line 3726 of file town_cmd.cpp.
Referenced by AirportGetNearestTown(), BuildObject(), ClosestTownFromTile(), CmdBuildBridge(), CmdBuildRoad(), and CmdBuildTunnel().
| void ChangeTownRating | ( | Town * | t, |
| int | add, | ||
| int | max, | ||
| DoCommandFlag | flags | ||
| ) |
Changes town rating of the current company.
| t | Town to affect |
| add | Value to add |
| max | Minimum (add < 0) resp. maximum (add > 0) rating that should be achievable with this change. |
| flags | Command flags, especially DC_NO_MODIFY_TOWN_RATING is tested |
Definition at line 3823 of file town_cmd.cpp.
References _cheats, _current_company, _town_rating_test, _town_test_ratings, DC_NO_MODIFY_TOWN_RATING, GetRating(), Town::have_ratings, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Cheats::magic_bulldozer, Town::ratings, SetBit(), SetWindowDirty(), Cheat::value, and WC_TOWN_AUTHORITY.
| CommandCost CheckforTownRating | ( | DoCommandFlag | flags, |
| Town * | t, | ||
| TownRatingCheckType | type | ||
| ) |
Does the town authority allow the (destructive) action of the current company?
| flags | Checking flags of the command. |
| t | Town that must allow the company action. |
| type | Type of action that is wanted. |
Definition at line 3860 of file town_cmd.cpp.
References _cheats, _current_company, _settings_game, DC_NO_TEST_TOWN_RATING, GameSettings::difficulty, GetRating(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Cheats::magic_bulldozer, RATING_ROAD_NEEDED_HOSTILE, RATING_ROAD_NEEDED_LENIENT, RATING_ROAD_NEEDED_NEUTRAL, RATING_ROAD_NEEDED_PERMISSIVE, RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE, RATING_TUNNEL_BRIDGE_NEEDED_LENIENT, RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL, RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE, return_cmd_error, SetDParam(), DifficultySettings::town_council_tolerance, TOWN_RATING_CHECK_TYPE_COUNT, and Cheat::value.
| CommandCost CheckIfAuthorityAllowsNewStation | ( | TileIndex | tile, |
| DoCommandFlag | flags | ||
| ) |
Checks whether the local authority allows construction of a new station (rail, road, airport, dock) on the given tile.
| tile | The tile where the station shall be constructed. |
| flags | Command flags. DC_NO_TEST_TOWN_RATING is tested. |
Definition at line 3702 of file town_cmd.cpp.
References _settings_game, GameSettings::difficulty, and DifficultySettings::town_council_tolerance.
Clear a town house.
| t | The town which owns the house. |
| tile | The tile to clear. |
Definition at line 2832 of file town_cmd.cpp.
References HouseSpec::building_flags, Town::cache, ChangePopulation(), GetHouseNorthPart(), GetHouseType(), IsHouseCompleted(), IsTileType(), MP_HOUSE, TownCache::num_houses, and HouseSpec::population.
Return the town closest (in distance or ownership) to a given tile, within a given threshold.
| tile | Starting point of the search. |
| threshold | Biggest allowed distance to the town. |
nullptr if there is no such town.Definition at line 3744 of file town_cmd.cpp.
References CalcClosestTownFromTile(), GetTileType(), GetTownIndex(), HasTownOwnedRoad(), IsRoadDepot(), and MP_ROAD.
Referenced by FindTownForIndustry(), GenerateCompanyName(), StationResolverObject::GetTown(), ObjectResolverObject::GetTown(), AirportResolverObject::GetTown(), IndustryTileScopeResolver::GetVariable(), AirportTileScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), LandInfoWindow::OnInit(), and SetDParamsForOwnedBy().
| const CargoSpec* FindFirstCargoWithTownAcceptanceEffect | ( | TownAcceptanceEffect | effect | ) |
Determines the first cargo with a certain town effect.
| effect | Town effect of interest |
Definition at line 2909 of file town_cmd.cpp.
References CargoSpec::Iterate().
Referenced by CmdTownCargoGoal().
| bool GenerateTowns | ( | TownLayout | layout | ) |
Generate a number of towns with a given layout.
This function is used by the Random Towns button in Scenario Editor as well as in world generation.
| layout | The road layout to build. |
Definition at line 2329 of file town_cmd.cpp.
| TileIndexDiff GetHouseNorthPart | ( | HouseID & | house | ) |
Determines if a given HouseID is part of a multitile house.
The given ID is set to the ID of the north tile and the TileDiff to the north tile is returned.
| house | Is changed to the HouseID of the north tile of the same house |
Definition at line 2807 of file town_cmd.cpp.
Referenced by ClearTownHouse(), GetDistanceFromNearbyHouse(), SearchNearbyHouseClass(), SearchNearbyHouseGRFID(), and SearchNearbyHouseID().
| TownActions GetMaskOfTownActions | ( | CompanyID | cid, |
| const Town * | t | ||
| ) |
Get a list of available town authority actions.
| cid | The company that is querying the town. |
| t | The town that is queried. |
Definition at line 3462 of file town_cmd.cpp.
References _settings_game, _town_action_costs, EconomySettings::bribe, COMPANY_SPECTATOR, GameSettings::economy, GetAvailableMoney(), lengthof, Town::ratings, TACT_BRIBE, TACT_NONE, and Town::unwanted.
Referenced by TownAuthorityWindow::OnPaint().
Returns the bit corresponding to the town zone of the specified tile.
| t | Town on which town zone is to be found. |
| tile | TileIndex where town zone needs to be found. |
Definition at line 2386 of file town_cmd.cpp.
References DistanceSquare(), Town::fund_buildings_months, and Town::xy.
Referenced by BuildTownHouse(), IndustryTileScopeResolver::GetVariable(), IndustriesScopeResolver::GetVariable(), AirportTileScopeResolver::GetVariable(), HouseScopeResolver::GetVariable(), and ObjectScopeResolver::GetVariable().
| RoadType GetTownRoadType | ( | ) |
Get the road type that towns should build at this current moment.
They may have built a different type in the past.
Definition at line 912 of file town_cmd.cpp.
References ROADTYPE_ROAD.
Referenced by CanRoadContinueIntoNextTile(), GrowTownWithBridge(), GrowTownWithRoad(), GrowTownWithTunnel(), and IsRoadAllowedHere().
| uint32_t GetWorldPopulation | ( | ) |
Get the total population, the sum of all towns in the world.
Definition at line 455 of file town_cmd.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Iterate().
| void MakeDefaultName | ( | T * | obj | ) |
Set the default name for a depot/waypoint.
| T | The type/class to make a default name for |
| obj | The object/instance we want to find the name for |
Definition at line 249 of file town.h.
Referenced by CmdRenameDepot().
| void SetTownRatingTestMode | ( | bool | mode | ) |
Switch the town rating to test-mode, to allow commands to be tested without affecting current ratings.
The function is safe to use in nested calls.
| mode | Test mode switch (true means go to test-mode, false means leave test-mode). |
Definition at line 3785 of file town_cmd.cpp.
References _town_rating_test, and _town_test_ratings.
Referenced by CommandHelperBase::InternalDoAfter(), and CommandHelperBase::InternalExecuteValidateTestAndPrepExec().
| void UpdateTownMaxPass | ( | Town * | t | ) |
Update the maximum amount of montly passengers and mail for a town, based on its population.
| t | The town to update. |
Definition at line 1912 of file town_cmd.cpp.
References Town::cache, TransportedCargoStat< Tstorage >::old_max, TownCache::population, ScaleByCargoScale(), Town::supplied, CargoSpec::town_production_cargoes, TPE_MAIL, and TPE_PASSENGERS.
| void UpdateTownRadius | ( | Town * | t | ) |
Update the cached town zone radii of a town, based on the number of houses.
| t | The town to update. |
Definition at line 1865 of file town_cmd.cpp.
Referenced by DoCreateTown().
| const byte _town_action_costs[TACT_COUNT] |
Factor in the cost of each town action.
Definition at line 3171 of file town_cmd.cpp.
Referenced by GetMaskOfTownActions().