OpenTTD Source 20260311-master-g511d3794ce
Town Struct Reference

Town data structure. More...

#include <town.h>

Inheritance diagram for Town:

Data Structures

struct  SuppliedHistory
struct  SuppliedCargo

Public Types

using SuppliedCargoes = std::vector<SuppliedCargo>

Public Member Functions

SuppliedCargoGetOrCreateCargoSupplied (CargoType cargo)
SuppliedCargoes::const_iterator GetCargoSupplied (CargoType cargo) const
uint8_t GetPercentTransported (CargoType cargo_type) const
 Town (TownID index, 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

Static Public Member Functions

static TownGetByTile (TileIndex tile)
static TownGetRandom ()
 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.

Data Fields

TileIndex xy = INVALID_TILE
 town center tile
TownCache cache {}
 Container for all cacheable data.
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_TAEreceived {}
 Cargo statistics about received cargotypes.
std::array< uint32_t, NUM_TAEgoal {}
 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 {}
Town name.
uint32_t townnamegrfid = 0
 Custom town name. If empty, the town was not renamed and uses the generated name.
uint16_t townnametype = 0
 Custom town name. If empty, the town was not renamed and uses the generated name.
uint32_t townnameparts = 0
 Custom town name. If empty, the town was not renamed and uses the generated name.
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.

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 109 of file town.h.

Constructor & Destructor Documentation

◆ Town()

Town::Town ( TownID index,
TileIndex tile = INVALID_TILE )
inline

Creates a new town.

Parameters
indexthe index within the town pool
tilecenter tile of the town

Definition at line 164 of file town.h.

References INVALID_TILE, and xy.

Referenced by GetRandom().

◆ ~Town()

Member Function Documentation

◆ FillCachedName()

void Town::FillCachedName ( ) const
private

Definition at line 224 of file town_cmd.cpp.

◆ GetByTile()

Town * Town::GetByTile ( TileIndex tile)
inlinestatic

Definition at line 194 of file town.h.

◆ GetCachedName()

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

Definition at line 187 of file town.h.

◆ GetCargoSupplied()

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

Definition at line 126 of file town.h.

◆ GetOrCreateCargoSupplied()

SuppliedCargo & Town::GetOrCreateCargoSupplied ( CargoType cargo)
inline

Definition at line 118 of file town.h.

◆ GetPercentTransported()

uint8_t Town::GetPercentTransported ( CargoType cargo_type) const
inline

Definition at line 134 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 204 of file town_cmd.cpp.

References RandomRange(), and Town().

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

◆ InitializeLayout()

void Town::InitializeLayout ( TownLayout layout)

Assign the town layout.

Parameters
layoutThe desired layout. If TL_RANDOM, we pick one based on TileHash.

Definition at line 190 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 177 of file town.h.

References _settings_game, ClampTo(), and TownCache::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.

Dummy function called after destructor of each member.

If you want to use it, override it in PoolItem's subclass.

Parameters
indexindex of deleted item
Note
when this function is called, PoolItem::Get(index) == nullptr.
it's called only when !CleaningPool()

Definition at line 175 of file town_cmd.cpp.

References CalcClosestTownFromTile(), InvalidateWindowData(), UpdateNearestTownForRoadTiles(), and WC_TOWN_DIRECTORY.

◆ UpdateVirtCoord()

void Town::UpdateVirtCoord ( )

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

Definition at line 387 of file town_cmd.cpp.

References _settings_client, cache, GetString(), larger_town, Point, RemapCoords2(), SetWindowDirty(), TILE_SIZE, TileX(), TileY(), WC_TOWN_VIEW, Coord2D< T >::x, xy, and Coord2D< T >::y.

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

Field Documentation

◆ cache

◆ 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 74 of file town.h.

Referenced by CmdRenameTown().

◆ exclusive_counter

uint8_t Town::exclusive_counter = 0

◆ exclusivity

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

◆ flags

◆ fund_buildings_months

uint8_t Town::fund_buildings_months = 0

◆ goal

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

Amount of cargo required for the town to grow.

Definition at line 113 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 146 of file town.h.

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

◆ growth_rate

◆ have_ratings

◆ larger_town

bool Town::larger_town = false

if this is a larger town and should grow more quickly

Definition at line 152 of file town.h.

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

◆ layout

◆ name

std::string Town::name {}

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

Definition at line 73 of file town.h.

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

◆ noise_reached

uint16_t Town::noise_reached = 0

level of noise that all the airports are generating

Definition at line 79 of file town.h.

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

◆ psa_list

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

Definition at line 157 of file town.h.

◆ ratings

◆ received

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

Cargo statistics about received cargotypes.

Definition at line 112 of file town.h.

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

◆ road_build_months

uint8_t Town::road_build_months = 0

fund road reconstruction in action?

Definition at line 150 of file town.h.

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

◆ show_zone

bool Town::show_zone = false

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

Definition at line 155 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 142 of file town.h.

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

◆ statues

◆ supplied

SuppliedCargoes Town::supplied {}

◆ text

EncodedString Town::text {}

General text with additional information.

Definition at line 116 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 144 of file town.h.

Referenced by DoCreateTown(), and TileLoop_Town().

◆ townnamegrfid

uint32_t Town::townnamegrfid = 0

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

Definition at line 70 of file town.h.

Referenced by DoCreateTown(), CITYChunkHandler::Load(), and TownNameParams::TownNameParams().

◆ townnameparts

uint32_t Town::townnameparts = 0

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 DoCreateTown(), GenerateCompanyName(), GetTownName(), and GetTownName().

◆ townnametype

uint16_t Town::townnametype = 0

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

Definition at line 71 of file town.h.

Referenced by DoCreateTown(), GenerateCompanyName(), and CITYChunkHandler::Load().

◆ unwanted

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

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

Definition at line 85 of file town.h.

Referenced by GetMaskOfTownActions(), and TownActionBribe().

◆ valid_history

ValidHistoryMask Town::valid_history = 0

Mask of valid history records.

Definition at line 114 of file town.h.

Referenced by CITYChunkHandler::Load(), and TownCargoGraphWindow::UpdateStatistics().

◆ xy


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