OpenTTD Source 20260206-master-g4d4e37dbf1
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.
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_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 {}

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 ( 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 162 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 223 of file town_cmd.cpp.

◆ GetByTile()

Town * Town::GetByTile ( TileIndex tile)
inlinestatic

Definition at line 192 of file town.h.

◆ GetCachedName()

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

Definition at line 185 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 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 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 175 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.

Definition at line 174 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 398 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 73 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 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

◆ have_ratings

◆ 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

◆ 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(), and IsUniqueTownName().

◆ 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

◆ 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(), SlTownReceived::Load(), SlTownReceived::Save(), 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 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(), CITYChunkHandler::Load(), and SlTownOldSupplied::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


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