OpenTTD Source: Town Struct Reference

OpenTTD Source 15.0-RC2

Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Private Member Functions
Town Struct Reference

Town data structure. More...

`#include <town.h>`

Inheritance diagram for Town:

## Data Structures
struct | SuppliedCargo
struct | SuppliedHistory

## Public Types
using | SuppliedCargoes = std::vector< SuppliedCargo >
Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache > | Pool
| Type of the pool this item is going to be part of.

## Public Member Functions
SuppliedCargo & | GetOrCreateCargoSupplied (CargoType cargo)
SuppliedCargoes::const_iterator | GetCargoSupplied (CargoType cargo) const
uint8_t | GetPercentTransported (CargoType cargo_type) const
| Town (TileIndex tile=INVALID_TILE)
| Creates a new town.
| ~Town ()
| Destroy the town.
void | InitializeLayout (TownLayout layout)
| Assign the town layout.
uint16_t | MaxTownNoise () const
| Calculate the max town noise.
void | UpdateVirtCoord ()
| Resize the sign (label) of the town after it changes population.
const std::string & | GetCachedName () const
Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >
void * | operator new (size_t size)
| Allocates space for new Titem.
void * | operator new (size_t size, Tindex index)
| Allocates space for new Titem with given index.
void * | operator new (size_t, void *ptr)
| Allocates space for new Titem at given memory address.
void | operator delete (void *p, size_t size)
| Marks Titem as free.

## Static Public Member Functions
static Town * | GetByTile (TileIndex tile)
static Town * | GetRandom ()
| Return a random valid town.
static void | PostDestructor (size_t index)
| Invalidating of the "nearest town cache" has to be done after removing item from the pool.
Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >
static bool | CanAllocateItem (size_t n=1)
| Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function()
static bool | CleaningPool ()
| Returns current state of pool cleaning - yes or no.
static bool | IsValidID (auto index)
| Tests whether given index can be used to get valid (non-nullptr) Titem.
static Titem * | Get (auto index)
| Returns Titem with given index.
static Titem * | GetIfValid (auto index)
| Returns Titem with given index.
static size_t | GetPoolSize ()
| Returns first unused index.
static size_t | GetNumItems ()
| Returns number of valid items in the pool.
static void | PostDestructor (size_t index)
| Dummy function called after destructor of each member.
static Pool::IterateWrapper< Titem > | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid Titem.

## Data Fields
TileIndex | xy = INVALID_TILE
| town center tile
TownCache | cache {}
| Container for all cacheable data.
uint32_t | townnamegrfid = 0
uint16_t | townnametype = 0
uint32_t | townnameparts = 0
std::string | name {}
| Custom town name. If empty, the town was not renamed and uses the generated name.
std::string | cached_name {}
| NOSAVE: Cache of the resolved name of the town, if not using a custom town name.
TownFlags | flags {}
| See TownFlags.
uint16_t | noise_reached = 0
| level of noise that all the airports are generating
CompanyMask | statues {}
| which companies have a statue?
CompanyMask | have_ratings {}
| which companies have a rating
TypedIndexContainer< std::array< uint8_t, MAX_COMPANIES >, CompanyID > | unwanted {}
| how many months companies aren't wanted by towns (bribe)
CompanyID | exclusivity = CompanyID::Invalid()
| which company has exclusivity
uint8_t | exclusive_counter = 0
| months till the exclusivity expires
TypedIndexContainer< std::array< int16_t, MAX_COMPANIES >, CompanyID > | ratings {}
| ratings of each company for this town
SuppliedCargoes | supplied {}
| Cargo statistics about supplied cargo.
std::array< TransportedCargoStat< uint16_t >, NUM_TAE > | received {}
| Cargo statistics about received cargotypes.
std::array< uint32_t, NUM_TAE > | goal {}
| Amount of cargo required for the town to grow.
ValidHistoryMask | valid_history = 0
| Mask of valid history records.
EncodedString | text {}
| General text with additional information.
StationList | stations_near {}
| NOSAVE: List of nearby stations.
uint16_t | time_until_rebuild = 0
| time until we rebuild a house
uint16_t | grow_counter = 0
| counter to count when to grow, value is smaller than or equal to growth_rate
uint16_t | growth_rate = 0
| town growth rate
uint8_t | fund_buildings_months = 0
| fund buildings program in action?
uint8_t | road_build_months = 0
| fund road reconstruction in action?
bool | larger_town = false
| if this is a larger town and should grow more quickly
TownLayout | layout {}
| town specific road layout
bool | show_zone = false
| NOSAVE: mark town to show the local authority zone in the viewports.
std::vector< PersistentStorage * > | psa_list {}
Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >
Tindex | index
| Index of this pool item.

## Private Member Functions
void | FillCachedName () const

## Detailed Description

Town data structure.

Definition at line 63 of file town.h.

## Member Typedef Documentation

## ◆ SuppliedCargoes

using Town::SuppliedCargoes = std::vector<SuppliedCargo>

Definition at line 107 of file town.h.

## Constructor & Destructor Documentation

## ◆ Town()

Town::Town | ( | TileIndex | tile = `INVALID_TILE` | ) |
| inline

Creates a new town.

Parameters

  tile | center tile of the town

Definition at line 161 of file town.h.

## ◆ ~Town()

Town::~Town | ( |  | ) |

Destroy the town.

Definition at line 115 of file town_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::CleaningPool(), CloseWindowById(), DeleteNewGRFInspectWindow(), DeleteSubsidyWith(), GetTileType(), GetTownIndex(), GSF_FAKE_TOWNS, HasTownOwnedRoad(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::index, CargoPacket::InvalidateAllFrom(), Map::Iterate(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_industry_pool >::Iterate(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_object_pool >::Iterate(), MarkWholeScreenDirty(), MP_HOUSE, MP_ROAD, MP_TUNNELBRIDGE, TestTownOwnsBridge(), Town, WC_TOWN_CARGO_GRAPH, and WC_TOWN_VIEW.

## Member Function Documentation

## ◆ FillCachedName()

void Town::FillCachedName | ( |  | ) | const
| private

Definition at line 223 of file town_cmd.cpp.

## ◆ GetByTile()

static Town * Town::GetByTile | ( | TileIndex | tile | ) |
| inlinestatic

Definition at line 191 of file town.h.

## ◆ GetCachedName()

const std::string & Town::GetCachedName | ( |  | ) | const
| inline

Definition at line 184 of file town.h.

## ◆ GetCargoSupplied()

SuppliedCargoes::const_iterator Town::GetCargoSupplied | ( | CargoType | cargo | ) | const
| inline

Definition at line 124 of file town.h.

## ◆ GetOrCreateCargoSupplied()

SuppliedCargo & Town::GetOrCreateCargoSupplied | ( | CargoType | cargo | ) |
| inline

Definition at line 116 of file town.h.

## ◆ GetPercentTransported()

uint8_t Town::GetPercentTransported | ( | CargoType | cargo_type | ) | const
| inline

Definition at line 132 of file town.h.

## ◆ GetRandom()

Town * Town::GetRandom | ( |  | ) |
| static

Return a random valid town.

Returns
  A random town, or nullptr if there are no towns.

Definition at line 203 of file town_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::GetNumItems(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::GetPoolSize(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::index, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::IsValidID(), and RandomRange().

Referenced by FindSubsidyCargoDestination(), FindSubsidyPassengerRoute(), and FindSubsidyTownCargoRoute().

## ◆ InitializeLayout()

void Town::InitializeLayout | ( | TownLayout | layout | ) |

Assign the town layout.

Parameters

  layout | The desired layout. If TL_RANDOM, we pick one based on TileHash.

Definition at line 189 of file town_cmd.cpp.

References layout, NUM_TLS, TileHash(), TileX(), TileY(), TL_RANDOM, and xy.

Referenced by DoCreateTown().

## ◆ MaxTownNoise()

uint16_t Town::MaxTownNoise | ( |  | ) | const
| inline

Calculate the max town noise.

The value is counted using the population divided by the content of the entry in town_noise_population corresponding to the town's tolerance.

Returns
  the maximum noise level the town will tolerate.

Definition at line 174 of file town.h.

References _settings_game, cache, GameSettings::difficulty, GameSettings::economy, TownCache::population, DifficultySettings::town_council_tolerance, and EconomySettings::town_noise_population.

Referenced by CmdBuildAirport().

## ◆ PostDestructor()

void Town::PostDestructor | ( | size_t | index | ) |
| static

Invalidating of the "nearest town cache" has to be done after removing item from the pool.

Definition at line 174 of file town_cmd.cpp.

References CalcClosestTownFromTile(), InvalidateWindowData(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_object_pool >::Iterate(), UpdateNearestTownForRoadTiles(), and WC_TOWN_DIRECTORY.

## ◆ UpdateVirtCoord()

void Town::UpdateVirtCoord | ( |  | ) |

Resize the sign (label) of the town after it changes population.

Definition at line 398 of file town_cmd.cpp.

References _settings_client, cache, GetString(), ClientSettings::gui, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::index, Kdtree< T, TxyFunc, CoordT, DistT >::Insert(), TrackedViewportSign::kdtree_valid, larger_town, TownCache::population, GUISettings::population_in_label, RemapCoords2(), Kdtree< T, TxyFunc, CoordT, DistT >::Remove(), SetWindowDirty(), TownCache::sign, TILE_SIZE, TileX(), TileY(), TrackedViewportSign::UpdatePosition(), WC_TOWN_VIEW, Coord2D< T >::x, xy, and Coord2D< T >::y.

Referenced by ChangePopulation(), CmdFoundTown(), CmdRenameTown(), and DoCreateTown().

## Field Documentation

## ◆ cache

TownCache Town::cache {}

Container for all cacheable data.

Definition at line 66 of file town.h.

Referenced by BuildTownHouse(), ChangePopulation(), CheckIfIndustryIsAllowed(), CheckSubsidised(), ClearTownHouse(), CmdBuildBridge(), CmdBuildRoad(), CmdBuildTunnel(), CmdDeleteTown(), CmdExpandTown(), CreateRandomTown(), DecreaseBuildingCount(), DoCreateTown(), TownViewWindow::DrawWidget(), TownDirectoryWindow::DrawWidget(), FindSubsidyPassengerRoute(), FindSubsidyTownCargoRoute(), TownViewWindow::GetDesiredInfoHeight(), GetNormalGrowthRate(), TownScopeResolver::GetVariable(), GrowTownAtRoad(), GrowTownWithBridge(), GrowTownWithTunnel(), IncreaseBuildingCount(), InitializeBuildingCounts(), LoadTownData(), MaxTownNoise(), RebuildTownCaches(), TownDirectoryWindow::TownPopulationSorter(), TryBuildTownHouse(), UpdateTownGrowth(), UpdateTownMaxPass(), UpdateTownRadius(), and UpdateVirtCoord().

## ◆ cached_name

std::string Town::cached_name {}
| mutable

NOSAVE: Cache of the resolved name of the town, if not using a custom town name.

Definition at line 73 of file town.h.

Referenced by CmdRenameTown().

## ◆ exclusive_counter

uint8_t Town::exclusive_counter = 0

months till the exclusivity expires

Definition at line 85 of file town.h.

Referenced by DoCreateTown(), StationViewWindow::DrawCargoRatings(), GetMaskOfTownActions(), MayLoadUnderExclusiveRights(), TownActionBribe(), and TownActionBuyRights().

## ◆ exclusivity

CompanyID Town::exclusivity = CompanyID::Invalid()

which company has exclusivity

Definition at line 84 of file town.h.

Referenced by DoCreateTown(), StationViewWindow::DrawCargoRatings(), TownAuthorityWindow::DrawRatings(), GetMaskOfTownActions(), MayLoadUnderExclusiveRights(), TownActionBribe(), and TownActionBuyRights().

## ◆ flags

TownFlags Town::flags {}

See TownFlags.

Definition at line 75 of file town.h.

Referenced by ClearTownHouse(), CmdTownGrowthRate(), DoCreateTown(), TownViewWindow::DrawWidget(), TownScopeResolver::GetVariable(), TileLoop_Town(), TownTickHandler(), TryBuildTownHouse(), UpdateTownGrowth(), and UpdateTownGrowthRate().

## ◆ fund_buildings_months

uint8_t Town::fund_buildings_months = 0

fund buildings program in action?

Definition at line 147 of file town.h.

Referenced by DoCreateTown(), TownViewWindow::DrawWidget(), GetNormalGrowthRate(), GetTownRadiusGroup(), TownScopeResolver::GetVariable(), TownActionFundBuildings(), and UpdateTownGrowth().

## ◆ goal

std::array<uint32_t, NUM_TAE> Town::goal {}

Amount of cargo required for the town to grow.

Definition at line 111 of file town.h.

Referenced by CmdTownCargoGoal(), DoCreateTown(), TownViewWindow::DrawWidget(), TownViewWindow::GetDesiredInfoHeight(), and UpdateTownGrowth().

## ◆ grow_counter

uint16_t Town::grow_counter = 0

counter to count when to grow, value is smaller than or equal to growth_rate

Definition at line 144 of file town.h.

Referenced by CmdTownGrowthRate(), DoCreateTown(), TownScopeResolver::GetVariable(), TownActionFundBuildings(), TownTickHandler(), and UpdateTownGrowCounter().

## ◆ growth_rate

uint16_t Town::growth_rate = 0

town growth rate

Definition at line 145 of file town.h.

Referenced by CmdTownGrowthRate(), DoCreateTown(), TownViewWindow::DrawWidget(), TownScopeResolver::GetVariable(), TownActionFundBuildings(), TownTickHandler(), UpdateTownGrowCounter(), UpdateTownGrowth(), and UpdateTownGrowthRate().

## ◆ have_ratings

CompanyMask Town::have_ratings {}

which companies have a rating

Definition at line 82 of file town.h.

Referenced by ChangeTownRating(), DoCreateTown(), TownAuthorityWindow::DrawRatings(), TownDirectoryWindow::DrawWidget(), TownScopeResolver::GetVariable(), and TownDirectoryWindow::TownRatingSorter().

## ◆ larger_town

bool Town::larger_town = false

if this is a larger town and should grow more quickly

Definition at line 150 of file town.h.

Referenced by DoCreateTown(), GetNormalGrowthRate(), TownDirectoryWindow::GetTownString(), TownScopeResolver::GetVariable(), TownViewWindow::GetWidgetString(), and UpdateVirtCoord().

## ◆ layout

TownLayout Town::layout {}

town specific road layout

Definition at line 151 of file town.h.

Referenced by GetTownRoadGridElement(), GrowTownAtRoad(), GrowTownInTile(), InitializeLayout(), IsRoadAllowedHere(), TownLayoutAllows2x2HouseHere(), and TownLayoutAllowsHouseHere().

## ◆ name

std::string Town::name {}

Custom town name. If empty, the town was not renamed and uses the generated name.

Definition at line 72 of file town.h.

Referenced by CmdFoundTown(), CmdRenameTown(), FormatString(), GenerateCompanyName(), IsUniqueTownName(), and MoveBuoysToWaypoints().

## ◆ noise_reached

uint16_t Town::noise_reached = 0

level of noise that all the airports are generating

Definition at line 77 of file town.h.

Referenced by CmdBuildAirport(), TownViewWindow::DrawWidget(), RemoveAirport(), and UpdateAirportsNoise().

## ◆ psa_list

std::vector<PersistentStorage *> Town::psa_list {}

Definition at line 155 of file town.h.

## ◆ ratings

TypedIndexContainer<std::array<int16_t, MAX_COMPANIES>, CompanyID> Town::ratings {}

ratings of each company for this town

Definition at line 86 of file town.h.

Referenced by ChangeTownRating(), CheckIfAuthorityAllowsNewStation(), ClearTile_Town(), CmdTownRating(), DoCreateTown(), TownAuthorityWindow::DrawRatings(), TownDirectoryWindow::DrawWidget(), GetMaskOfTownActions(), GetRating(), TownScopeResolver::GetVariable(), TownActionBribe(), TownDirectoryWindow::TownRatingSorter(), and UpdateTownRating().

## ◆ received

std::array<TransportedCargoStat<uint16_t>, NUM_TAE> Town::received {}

Cargo statistics about received cargotypes.

Definition at line 110 of file town.h.

Referenced by DeliverGoods(), TownViewWindow::DrawWidget(), TownScopeResolver::GetVariable(), and UpdateTownGrowth().

## ◆ road_build_months

uint8_t Town::road_build_months = 0

fund road reconstruction in action?

Definition at line 148 of file town.h.

Referenced by TownScopeResolver::GetVariable(), and TownActionRoadRebuild().

## ◆ show_zone

bool Town::show_zone = false

NOSAVE: mark town to show the local authority zone in the viewports.

Definition at line 153 of file town.h.

Referenced by DoCreateTown(), HighlightTownLocalAuthorityTiles(), TownAuthorityWindow::OnClick(), and TownAuthorityWindow::OnPaint().

## ◆ stations_near

StationList Town::stations_near {}

NOSAVE: List of nearby stations.

Definition at line 140 of file town.h.

Referenced by GetTileHighlightType(), MakeTownHouse(), Station::RecomputeCatchment(), and RemoveNearbyStations().

## ◆ statues

CompanyMask Town::statues {}

which companies have a statue?

Definition at line 79 of file town.h.

Referenced by DoCreateTown(), GetMaskOfTownActions(), TownScopeResolver::GetVariable(), TownActionBuildStatue(), and UpdateStationRating().

## ◆ supplied

SuppliedCargoes Town::supplied {}

Cargo statistics about supplied cargo.

Definition at line 109 of file town.h.

Referenced by TownViewWindow::DrawWidget(), SlTownSupplied::GetVector(), and CITYChunkHandler::Load().

## ◆ text

EncodedString Town::text {}

General text with additional information.

Definition at line 114 of file town.h.

Referenced by CmdTownSetText(), TownViewWindow::DrawWidget(), and TownViewWindow::GetDesiredInfoHeight().

## ◆ time_until_rebuild

uint16_t Town::time_until_rebuild = 0

time until we rebuild a house

Definition at line 142 of file town.h.

Referenced by DoCreateTown(), and TileLoop_Town().

## ◆ townnamegrfid

uint32_t Town::townnamegrfid = 0

Definition at line 69 of file town.h.

## ◆ townnameparts

uint32_t Town::townnameparts = 0

Definition at line 71 of file town.h.

## ◆ townnametype

uint16_t Town::townnametype = 0

Definition at line 70 of file town.h.

## ◆ unwanted

TypedIndexContainer<std::array<uint8_t, MAX_COMPANIES>, CompanyID> Town::unwanted {}

how many months companies aren't wanted by towns (bribe)

Definition at line 83 of file town.h.

Referenced by GetMaskOfTownActions(), and TownActionBribe().

## ◆ valid_history

ValidHistoryMask Town::valid_history = 0

Mask of valid history records.

Definition at line 112 of file town.h.

Referenced by CITYChunkHandler::Load().

## ◆ xy

TileIndex Town::xy = INVALID_TILE

town center tile

Definition at line 64 of file town.h.

Referenced by AirportGetNearestTown(), CalcClosestTownFromTile(), CheckIfIndustryIsAllowed(), ClosestTownFromTile(), CmdBuildBridge(), CmdBuildRoad(), CmdBuildTunnel(), DoCreateTown(), TownViewWindow::DrawWidget(), TownDirectoryWindow::DrawWidget(), FindSubsidyCargoDestination(), FindSubsidyPassengerRoute(), FindSubsidyTownCargoRoute(), GenerateStationName(), TownViewWindow::GetDesiredInfoHeight(), GetTownRadiusGroup(), GetTownRoadGridElement(), IndustriesScopeResolver::GetVariable(), ObjectScopeResolver::GetVariable(), RoadStopScopeResolver::GetVariable(), TownScopeResolver::GetVariable(), GrowTown(), HighlightTownLocalAuthorityTiles(), InitializeLayout(), IsCloseToTown(), TownAuthorityWindow::OnClick(), TownViewWindow::OnClick(), TownDirectoryWindow::OnClick(), TownViewWindow::OnResize(), TownScopeResolver::StorePSA(), TileLoop_Town(), TownActionAdvertiseLarge(), TownActionAdvertiseMedium(), TownActionAdvertiseSmall(), TownActionBuildStatue(), TownActionBuyRights(), TownLayoutAllows2x2HouseHere(), TownLayoutAllowsHouseHere(), UpdateTownGrowth(), and UpdateVirtCoord().

The documentation for this struct was generated from the following files:

- src/town.h
- src/town_cmd.cpp