Public Types | Static Public Member Functions

ScriptTown Class Reference

Class that handles all town related functions. More...

#include <script_town.hpp>

Inheritance diagram for ScriptTown:
ScriptObject SimpleCountedObject

Public Types

enum  TownAction {
  TOWN_ACTION_ADVERTISE_SMALL = 0, TOWN_ACTION_ADVERTISE_MEDIUM = 1, TOWN_ACTION_ADVERTISE_LARGE = 2, TOWN_ACTION_ROAD_REBUILD = 3,
  TOWN_ACTION_BUILD_STATUE = 4, TOWN_ACTION_FUND_BUILDINGS = 5, TOWN_ACTION_BUY_RIGHTS = 6, TOWN_ACTION_BRIBE = 7
}
 

Actions that one can perform on a town.

More...
enum  TownRating {
  TOWN_RATING_NONE, TOWN_RATING_APPALLING, TOWN_RATING_VERY_POOR, TOWN_RATING_POOR,
  TOWN_RATING_MEDIOCRE, TOWN_RATING_GOOD, TOWN_RATING_VERY_GOOD, TOWN_RATING_EXCELLENT,
  TOWN_RATING_OUTSTANDING, TOWN_RATING_INVALID = -1
}
 

Different ratings one could have in a town.

More...
enum  RoadLayout {
  ROAD_LAYOUT_ORIGINAL, ROAD_LAYOUT_BETTER_ROADS, ROAD_LAYOUT_2x2, ROAD_LAYOUT_3x3,
  ROAD_LAYOUT_INVALID = -1
}
 

Possible layouts for the roads in a town.

More...

Static Public Member Functions

static int32 GetTownCount ()
 Gets the number of towns.
static bool IsValidTown (TownID town_id)
 Checks whether the given town index is valid.
static char * GetName (TownID town_id)
 Get the name of the town.
static int32 GetPopulation (TownID town_id)
 Gets the number of inhabitants in the town.
static int32 GetHouseCount (TownID town_id)
 Gets the number of houses in the town.
static TileIndex GetLocation (TownID town_id)
 Gets the location of the town.
static int32 GetLastMonthProduction (TownID town_id, CargoID cargo_id)
 Get the total last month's production of the given cargo at a town.
static int32 GetLastMonthSupplied (TownID town_id, CargoID cargo_id)
 Get the total amount of cargo supplied from a town last month.
static int32 GetLastMonthTransportedPercentage (TownID town_id, CargoID cargo_id)
 Get the percentage of transported production of the given cargo at a town.
static int32 GetLastMonthReceived (TownID town_id, ScriptCargo::TownEffect towneffect_id)
 Get the total amount of cargo effects received by a town last month.
static uint32 GetCargoGoal (TownID town_id, ScriptCargo::TownEffect towneffect_id)
 Get the amount of cargo that needs to be delivered (per TownEffect) for a town to grow.
static int32 GetGrowthRate (TownID town_id)
 Get the amount of days between town growth.
static int32 GetDistanceManhattanToTile (TownID town_id, TileIndex tile)
 Get the manhattan distance from the tile to the ScriptTown::GetLocation() of the town.
static int32 GetDistanceSquareToTile (TownID town_id, TileIndex tile)
 Get the square distance from the tile to the ScriptTown::GetLocation() of the town.
static bool IsWithinTownInfluence (TownID town_id, TileIndex tile)
 Find out if this tile is within the rating influence of a town.
static bool HasStatue (TownID town_id)
 Find out if this town has a statue for the current company.
static bool IsCity (TownID town_id)
 Find out if the town is a city.
static int GetRoadReworkDuration (TownID town_id)
 Find out how long the town is undergoing road reconstructions.
static ScriptCompany::CompanyID GetExclusiveRightsCompany (TownID town_id)
 Find out which company currently has the exclusive rights of this town.
static int32 GetExclusiveRightsDuration (TownID town_id)
 Find out how long the town is under influence of the exclusive rights.
static bool IsActionAvailable (TownID town_id, TownAction town_action)
 Find out if an action can currently be performed on the town.
static bool PerformTownAction (TownID town_id, TownAction town_action)
 Perform a town action on this town.
static TownRating GetRating (TownID town_id, ScriptCompany::CompanyID company_id)
 Get the rating of a company within a town.
static int GetAllowedNoise (TownID town_id)
 Get the maximum level of noise that still can be added by airports before the town start to refuse building a new airport.
static RoadLayout GetRoadLayout (TownID town_id)
 Get the road layout for a town.

Detailed Description

Class that handles all town related functions.

ai

Definition at line 22 of file script_town.hpp.


Member Enumeration Documentation

Possible layouts for the roads in a town.

Enumerator:
ROAD_LAYOUT_ORIGINAL 

Original algorithm (min. 1 distance between roads).

ROAD_LAYOUT_BETTER_ROADS 

Extended original algorithm (min. 2 distance between roads).

ROAD_LAYOUT_2x2 

Geometric 2x2 grid algorithm.

ROAD_LAYOUT_3x3 

Geometric 3x3 grid algorithm.

ROAD_LAYOUT_INVALID 

The layout for invalid towns.

Definition at line 96 of file script_town.hpp.

Actions that one can perform on a town.

Enumerator:
TOWN_ACTION_ADVERTISE_SMALL 

The cargo ratings temporary gains 25% of rating (in absolute percentage, so 10% becomes 35%, with a max of 99%) for all stations within 10 tiles.

TOWN_ACTION_ADVERTISE_MEDIUM 

The cargo ratings temporary gains 44% of rating (in absolute percentage, so 10% becomes 54%, with a max of 99%) for all stations within 15 tiles.

TOWN_ACTION_ADVERTISE_LARGE 

The cargo ratings temporary gains 63% of rating (in absolute percentage, so 10% becomes 73%, with a max of 99%) for all stations within 20 tiles.

TOWN_ACTION_ROAD_REBUILD 

Rebuild the roads of this town for 6 months.

TOWN_ACTION_BUILD_STATUE 

Build a statue in this town.

TOWN_ACTION_FUND_BUILDINGS 

Fund the creation of extra buildings for 3 months.

TOWN_ACTION_BUY_RIGHTS 

Buy exclusive rights for this town for 12 months.

TOWN_ACTION_BRIBE 

Bribe the town in order to get a higher rating.

Definition at line 27 of file script_town.hpp.

Different ratings one could have in a town.

Enumerator:
TOWN_RATING_NONE 

The company got no rating in the town.

TOWN_RATING_APPALLING 

The company got an appalling rating in the town .

TOWN_RATING_VERY_POOR 

The company got an very poor rating in the town.

TOWN_RATING_POOR 

The company got an poor rating in the town.

TOWN_RATING_MEDIOCRE 

The company got an mediocre rating in the town.

TOWN_RATING_GOOD 

The company got an good rating in the town.

TOWN_RATING_VERY_GOOD 

The company got an very good rating in the town.

TOWN_RATING_EXCELLENT 

The company got an excellent rating in the town.

TOWN_RATING_OUTSTANDING 

The company got an outstanding rating in the town.

TOWN_RATING_INVALID 

The town rating for invalid towns/companies.

Definition at line 80 of file script_town.hpp.


Member Function Documentation

int ScriptTown::GetAllowedNoise ( TownID  town_id  )  [static]

Get the maximum level of noise that still can be added by airports before the town start to refuse building a new airport.

Parameters:
town_id The town to get the allowed noise from.
Returns:
The noise that still can be added.

Definition at line 231 of file script_town.cpp.

References _settings_game, Station::airport, AT_OILRIG, GameSettings::economy, FACIL_AIRPORT, BaseStation::facilities, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), IsValidTown(), max(), Town::MaxTownNoise(), Town::noise_reached, EconomySettings::station_noise_level, BaseStation::town, and Airport::type.

uint32 ScriptTown::GetCargoGoal ( TownID  town_id,
ScriptCargo::TownEffect  towneffect_id 
) [static]

Get the amount of cargo that needs to be delivered (per TownEffect) for a town to grow.

All goals need to be reached before a town will grow.

Parameters:
town_id The index of the town.
towneffect_id The index of the towneffect.
Precondition:
IsValidTown(town_id).
ScriptCargo::IsValidTownEffect(cargo_id).
Returns:
The goal of the cargo.
Note:
Goals can change over time. For example with a changing snowline, or with a growing town.

Definition at line 106 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), GetSnowLine(), GetTropicZone(), Town::goal, IsValidTown(), ScriptCargo::IsValidTownEffect(), Town::population, TileHeight(), TOWN_GROWTH_DESERT, TOWN_GROWTH_WINTER, TROPICZONE_DESERT, and Town::xy.

int32 ScriptTown::GetDistanceManhattanToTile ( TownID  town_id,
TileIndex  tile 
) [static]

Get the manhattan distance from the tile to the ScriptTown::GetLocation() of the town.

Parameters:
town_id The town to get the distance to.
tile The tile to get the distance to.
Precondition:
IsValidTown(town_id).
Returns:
The distance between town and tile.

Definition at line 135 of file script_town.cpp.

References DistanceManhattan(), and GetLocation().

int32 ScriptTown::GetDistanceSquareToTile ( TownID  town_id,
TileIndex  tile 
) [static]

Get the square distance from the tile to the ScriptTown::GetLocation() of the town.

Parameters:
town_id The town to get the distance to.
tile The tile to get the distance to.
Precondition:
IsValidTown(town_id).
Returns:
The distance between town and tile.

Definition at line 140 of file script_town.cpp.

References DistanceSquare(), and GetLocation().

Referenced by IsWithinTownInfluence().

ScriptCompany::CompanyID ScriptTown::GetExclusiveRightsCompany ( TownID  town_id  )  [static]

Find out which company currently has the exclusive rights of this town.

Parameters:
town_id The town to check.
Precondition:
IsValidTown(town_id).
Returns:
The company that has the exclusive rights. The value ScriptCompany::COMPANY_INVALID means that there are currently no exclusive rights given out to anyone.

Definition at line 174 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), and IsValidTown().

int32 ScriptTown::GetExclusiveRightsDuration ( TownID  town_id  )  [static]

Find out how long the town is under influence of the exclusive rights.

Parameters:
town_id The town to check.
Precondition:
IsValidTown(town_id).
Returns:
The number of months the exclusive rights hold. The value 0 means that there are currently no exclusive rights given out to anyone.

Definition at line 181 of file script_town.cpp.

References IsValidTown().

int32 ScriptTown::GetGrowthRate ( TownID  town_id  )  [static]

Get the amount of days between town growth.

Parameters:
town_id The index of the town.
Precondition:
IsValidTown(town_id).
Returns:
True if the action succeeded.
Note:
This function does not indicate when it will grow next. It only tells you the time between growths.

Definition at line 126 of file script_town.cpp.

References DAY_TICKS, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), Town::growth_rate, IsValidTown(), and TOWN_GROWTH_TICKS.

int32 ScriptTown::GetHouseCount ( TownID  town_id  )  [static]

Gets the number of houses in the town.

Parameters:
town_id The town to get the number of houses of.
Precondition:
IsValidTown(town_id).
Returns:
The number of houses.

Definition at line 53 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), IsValidTown(), and Town::num_houses.

int32 ScriptTown::GetLastMonthProduction ( TownID  town_id,
CargoID  cargo_id 
) [static]

Get the total last month's production of the given cargo at a town.

Parameters:
town_id The index of the town.
cargo_id The index of the cargo.
Precondition:
IsValidTown(town_id).
ScriptCargo::IsValidCargo(cargo_id).
Returns:
The last month's production of the given cargo for this town.

Definition at line 67 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), ScriptCargo::IsValidCargo(), IsValidTown(), TransportedCargoStat< Tstorage >::old_max, and Town::supplied.

int32 ScriptTown::GetLastMonthReceived ( TownID  town_id,
ScriptCargo::TownEffect  towneffect_id 
) [static]

Get the total amount of cargo effects received by a town last month.

Parameters:
town_id The index of the town.
towneffect_id The index of the cargo.
Precondition:
IsValidTown(town_id).
ScriptCargo::IsValidTownEffect(cargo_id).
Returns:
The amount of cargo received by this town last month for this cargo effect.

Definition at line 96 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), IsValidTown(), ScriptCargo::IsValidTownEffect(), TransportedCargoStat< Tstorage >::old_act, and Town::received.

int32 ScriptTown::GetLastMonthSupplied ( TownID  town_id,
CargoID  cargo_id 
) [static]

Get the total amount of cargo supplied from a town last month.

Parameters:
town_id The index of the town.
cargo_id The index of the cargo.
Precondition:
IsValidTown(town_id).
ScriptCargo::IsValidCargo(cargo_id).
Returns:
The amount of cargo supplied for transport from this town last month.

Definition at line 77 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), ScriptCargo::IsValidCargo(), IsValidTown(), TransportedCargoStat< Tstorage >::old_act, and Town::supplied.

int32 ScriptTown::GetLastMonthTransportedPercentage ( TownID  town_id,
CargoID  cargo_id 
) [static]

Get the percentage of transported production of the given cargo at a town.

Parameters:
town_id The index of the town.
cargo_id The index of the cargo.
Precondition:
IsValidTown(town_id).
ScriptCargo::IsValidCargo(cargo_id).
Returns:
The percentage of given cargo transported from this town last month.

Definition at line 87 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), ScriptCargo::IsValidCargo(), IsValidTown(), and ToPercent8().

TileIndex ScriptTown::GetLocation ( TownID  town_id  )  [static]

Gets the location of the town.

Parameters:
town_id The town to get the location of.
Precondition:
IsValidTown(town_id).
Returns:
The location of the town.

Definition at line 60 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), INVALID_TILE, IsValidTown(), and Town::xy.

Referenced by GetDistanceManhattanToTile(), and GetDistanceSquareToTile().

char * ScriptTown::GetName ( TownID  town_id  )  [static]

Get the name of the town.

Parameters:
town_id The town to get the name of.
Precondition:
IsValidTown(town_id).
Returns:
The name of the town.

Definition at line 34 of file script_town.cpp.

References IsValidTown(), and SetDParam().

int32 ScriptTown::GetPopulation ( TownID  town_id  )  [static]

Gets the number of inhabitants in the town.

Parameters:
town_id The town to get the population of.
Precondition:
IsValidTown(town_id).
Returns:
The number of inhabitants.

Definition at line 46 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), IsValidTown(), and Town::population.

ScriptTown::TownRating ScriptTown::GetRating ( TownID  town_id,
ScriptCompany::CompanyID  company_id 
) [static]

Get the rating of a company within a town.

Parameters:
town_id The town to get the rating for.
company_id The company to get the rating for.
Precondition:
IsValidTown(town_id).
ScriptCompany.ResolveCompanyID(company) != ScriptCompany::COMPANY_INVALID.
Returns:
The rating as shown to humans.

Definition at line 203 of file script_town.cpp.

References ScriptCompany::COMPANY_INVALID, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), HasBit(), Town::have_ratings, IsValidTown(), Town::ratings, and ScriptCompany::ResolveCompanyID().

ScriptTown::RoadLayout ScriptTown::GetRoadLayout ( TownID  town_id  )  [static]

Get the road layout for a town.

Parameters:
town_id The town to get the road layout from.
Returns:
The RoadLayout for the town.

Definition at line 248 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), and IsValidTown().

int ScriptTown::GetRoadReworkDuration ( TownID  town_id  )  [static]

Find out how long the town is undergoing road reconstructions.

Parameters:
town_id The town to check.
Precondition:
IsValidTown(town_id).
Returns:
The number of months the road reworks are still going to take. The value 0 means that there are currently no road reworks.

Definition at line 167 of file script_town.cpp.

References IsValidTown().

int32 ScriptTown::GetTownCount (  )  [static]

Gets the number of towns.

Returns:
The number of towns.

Definition at line 24 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::GetNumItems().

bool ScriptTown::HasStatue ( TownID  town_id  )  [static]

Find out if this town has a statue for the current company.

Parameters:
town_id The town to check.
Precondition:
IsValidTown(town_id).
Returns:
True if the town has a statue.

Definition at line 153 of file script_town.cpp.

References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), HasBit(), and IsValidTown().

bool ScriptTown::IsActionAvailable ( TownID  town_id,
TownAction  town_action 
) [static]

Find out if an action can currently be performed on the town.

Parameters:
town_id The town to perform the action on.
town_action The action to perform on the town.
Precondition:
IsValidTown(town_id).
Returns:
True if and only if the action can performed.

Definition at line 188 of file script_town.cpp.

References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), GetMaskOfTownActions(), HasBit(), and IsValidTown().

Referenced by PerformTownAction().

bool ScriptTown::IsCity ( TownID  town_id  )  [static]

Find out if the town is a city.

Parameters:
town_id The town to check.
Precondition:
IsValidTown(town_id).
Returns:
True if the town is a city.

Definition at line 160 of file script_town.cpp.

References IsValidTown().

bool ScriptTown::IsValidTown ( TownID  town_id  )  [static]
bool ScriptTown::IsWithinTownInfluence ( TownID  town_id,
TileIndex  tile 
) [static]

Find out if this tile is within the rating influence of a town.

If a station sign would be on this tile, the servicing quality of the station would influence the rating of the town.

Parameters:
town_id The town to check.
tile The tile to check.
Precondition:
IsValidTown(town_id).
Returns:
True if the tile is within the rating influence of the town.

Definition at line 145 of file script_town.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), GetDistanceSquareToTile(), IsValidTown(), and Town::squared_town_zone_radius.

bool ScriptTown::PerformTownAction ( TownID  town_id,
TownAction  town_action 
) [static]

Perform a town action on this town.

Parameters:
town_id The town to perform the action on.
town_action The action to perform on the town.
Precondition:
IsValidTown(town_id).
IsActionAvailable(town_id, town_action).
Returns:
True if the action succeeded.

Definition at line 195 of file script_town.cpp.

References CMD_DO_TOWN_ACTION, ScriptObject::DoCommand(), EnforcePrecondition, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), IsActionAvailable(), and IsValidTown().


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