Base of the town class. More...
#include "viewport_type.h"#include "town_map.h"#include "subsidy_type.h"#include "newgrf_storage.h"#include "cargotype.h"#include "tilematrix_type.hpp"#include <list>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... | |
Defines | |
| #define | FOR_ALL_TOWNS_FROM(var, start) FOR_ALL_ITEMS_FROM(Town, town_index, var, start) |
| #define | FOR_ALL_TOWNS(var) FOR_ALL_TOWNS_FROM(var, 0) |
Typedefs | |
| typedef TileMatrix< uint32, 4 > | AcceptanceMatrix |
| typedef Pool< Town, TownID, 64, 64000 > | TownPool |
Enumerations | |
| 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 | TownFlags { TOWN_IS_FUNDED = 0, TOWN_HAS_CHURCH = 1, TOWN_HAS_STADIUM = 2 } |
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 | GetWorldPopulation () |
| Determines the world population Basically, count population of all towns, one by one. | |
| void | UpdateAllTownVirtCoords () |
| Update the virtual coords needed to draw the town sign for all towns. | |
| void | ShowTownViewWindow (TownID town) |
| void | ExpandTown (Town *t) |
| CommandCost | CheckforTownRating (DoCommandFlag flags, Town *t, TownRatingCheckType type) |
| Does the town authority allow the (destructive) action of the current company? | |
| TileIndexDiff | GetHouseNorthPart (HouseID &house) |
| Determines if a given HouseID is part of a multitile house. | |
| Town * | CalcClosestTownFromTile (TileIndex tile, uint threshold=UINT_MAX) |
| Return the town closest to the given tile within threshold. | |
| void | ResetHouses () |
| void | ClearTownHouse (Town *t, TileIndex tile) |
| void | UpdateTownMaxPass (Town *t) |
| void | UpdateTownRadius (Town *t) |
| void | UpdateTownCargoes (Town *t) |
| Update cargo acceptance for the complete town. | |
| void | UpdateTownCargoTotal (Town *t) |
| Update the total cargo acceptance of the whole town. | |
| void | UpdateTownCargoBitmap () |
| Updates the bitmap of all cargoes accepted by houses. | |
| 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. | |
| Town * | ClosestTownFromTile (TileIndex tile, uint threshold) |
| Return the town closest (in distance or ownership) to a given tile, within a given threshold. | |
| void | ChangeTownRating (Town *t, int add, int max, DoCommandFlag flags) |
| Changes town rating of the current company. | |
| HouseZonesBits | GetTownRadiusGroup (const Town *t, TileIndex tile) |
| Returns the bit corresponding to the town zone of the specified tile. | |
| void | SetTownRatingTestMode (bool mode) |
| Switch the town rating to test-mode, to allow commands to be tested without affecting current ratings. | |
| uint | GetMaskOfTownActions (int *nump, CompanyID cid, const Town *t) |
| Get a list of available actions to do at a town. | |
| bool | GenerateTowns (TownLayout layout) |
| This function will generate a certain amount of towns, with a certain layout It can be called from the scenario editor (i.e. | |
| const CargoSpec * | FindFirstCargoWithTownEffect (TownEffect effect) |
| Determines the first cargo with a certain town effect. | |
| template<class T > | |
| void | MakeDefaultName (T *obj) |
| Set the default name for a depot/waypoint. | |
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 uint | 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 | TOWN_GROW_RATE_CUSTOM = 0x8000 |
| If this mask is applied to Town::grow_counter, the grow_counter will not be calculated by the system (but assumed to be set by scripts). | |
| TownPool | _town_pool |
| const byte | _town_action_costs [TACT_COUNT] |
| Factor in the cost of each town action. | |
| TownID | _new_town_id |
| uint32 | _town_cargoes_accepted |
| Bitmap of all cargoes accepted by houses. | |
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...
| TOWN_IS_FUNDED |
Town has received some funds for. |
| TOWN_HAS_CHURCH |
There can be only one church by town. |
| TOWN_HAS_STADIUM |
There can be only one stadium by town. |
| enum TownRatingCheckType |
Action types that a company must ask permission for to a town authority.
Return the town closest to the given tile within threshold.
| tile | Starting point of the search. | |
| threshold | Biggest allowed distance to the town. |
NULL if there is no such town.Definition at line 3074 of file town_cmd.cpp.
References DistanceManhattan(), and Town::xy.
Referenced by AfterLoadGame(), BuildObject(), ClosestTownFromTile(), CmdBuildBridge(), CmdBuildRoad(), CmdBuildTunnel(), Town::PostDestructor(), RemoveRoad(), and UpdateNearestTownForRoadTiles().
| 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 3178 of file town_cmd.cpp.
References _cheats, _current_company, 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.
Referenced by CheckAllowRemoveRoad(), CmdPlantTree(), DoClearBridge(), and DoClearTunnel().
| 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 3215 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_TUNNEL_BRIDGE_NEEDED_HOSTILE, RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL, RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE, return_cmd_error, SetDParam(), DifficultySettings::town_council_tolerance, and Cheat::value.
Referenced by CheckAllowRemoveRoad(), DoClearBridge(), and DoClearTunnel().
| 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 3053 of file town_cmd.cpp.
References _current_company, _settings_game, ClosestTownFromTile(), DC_NO_TEST_TOWN_RATING, EconomySettings::dist_local_authority, GameSettings::economy, 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(), Town::ratings, return_cmd_error, and SetDParam().
Referenced by CmdBuildAirport(), CmdBuildDock(), CmdBuildRailStation(), and CmdBuildRoadStop().
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. |
NULL if there is no such town.Definition at line 3099 of file town_cmd.cpp.
References _generating_world, CalcClosestTownFromTile(), DistanceManhattan(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::GetNumItems(), GetTileType(), GetTownIndex(), HasTownOwnedRoad(), IsRoadDepot(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::IsValidID(), MP_HOUSE, MP_ROAD, and Town::xy.
Referenced by AfterLoadGame(), CheckAllowRemoveRoad(), CheckIfAuthorityAllowsNewStation(), CheckIfCallBackAllowsCreation(), CmdBuildAirport(), CmdBuildBridge(), CmdBuildDock(), CmdBuildRailStation(), CmdBuildRoadStop(), CmdDeleteTown(), CmdPlantTree(), CmdRemoveRoadStop(), DisasterTick_Big_Ufo(), DoClearBridge(), DoClearTunnel(), FindTownForIndustry(), GenerateCompanyName(), GetNameOfOwner(), IndustryGetVariable(), MakeDefaultName(), ObjectGetVariable(), LandInfoWindow::OnInit(), and Town::~Town().
| const CargoSpec* FindFirstCargoWithTownEffect | ( | TownEffect | effect | ) |
Determines the first cargo with a certain town effect.
| effect | Town effect of interest |
Definition at line 2432 of file town_cmd.cpp.
References CargoSpec::town_effect.
Referenced by AfterLoadGame(), CmdTownCargoGoal(), DoCreateTown(), and TownViewWindow::DrawWidget().
| bool GenerateTowns | ( | TownLayout | layout | ) |
This function will generate a certain amount of towns, with a certain layout It can be called from the scenario editor (i.e.
: generate Random Towns) as well as from world creation.
| layout | which towns will be set to, when created |
Definition at line 1869 of file town_cmd.cpp.
References _settings_game, Chance16(), GameCreationSettings::custom_town_number, CUSTOM_TOWN_NUMBER_DIFFICULTY, GameSettings::difficulty, GameSettings::economy, GameSettings::game_creation, GenerateTownName(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::GetNumItems(), GWP_TOWN, IncreaseGeneratingWorldProgress(), INVALID_STRING_ID, EconomySettings::larger_towns, DifficultySettings::number_towns, ScaleByMapSize(), SetGeneratingWorldProgress(), ShowErrorMessage(), TSZ_RANDOM, and WL_CRITICAL.
Referenced by _GenerateWorld().
| 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 2337 of file town_cmd.cpp.
References TileDiffXY().
Referenced by GetDistanceFromNearbyHouse(), RebuildTownCaches(), SearchNearbyHouseClass(), SearchNearbyHouseGRFID(), SearchNearbyHouseID(), UpdateHousesAndTowns(), and WatchedCargoCallback().
Get a list of available actions to do at a town.
| nump | if not NULL add put the number of available actions in it | |
| cid | the company that is querying the town | |
| t | the town that is queried |
Definition at line 2847 of file town_cmd.cpp.
References _settings_game, EconomySettings::bribe, COMPANY_SPECTATOR, GameSettings::economy, EconomySettings::exclusive_rights, EconomySettings::fund_buildings, EconomySettings::fund_roads, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), HasBit(), lengthof, Town::ratings, Town::statues, TACT_BRIBE, TACT_BUILD_STATUE, TACT_BUY_RIGHTS, TACT_FUND_BUILDINGS, TACT_ROAD_REBUILD, and Town::unwanted.
Referenced by CmdDoTownAction(), TownAuthorityWindow::DrawWidget(), TownAuthorityWindow::OnClick(), and 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 1914 of file town_cmd.cpp.
References DistanceSquare(), Town::fund_buildings_months, and Town::xy.
Referenced by BuildTownHouse(), HouseGetVariable(), IndustryGetVariable(), and ObjectGetVariable().
| uint32 GetWorldPopulation | ( | ) |
Determines the world population Basically, count population of all towns, one by one.
Definition at line 394 of file town_cmd.cpp.
References Town::cache, and TownCache::population.
Referenced by TownDirectoryWindow::SetStringParameters().
| 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 232 of file town.h.
References ClosestTownFromTile(), HasBit(), and SetBit().
Referenced by AfterLoadGame(), CmdBuildBuoy(), CmdBuildRailWaypoint(), CmdBuildRoadDepot(), CmdBuildShipDepot(), CmdBuildTrainDepot(), and 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 3140 of file town_cmd.cpp.
References SmallVector< SmallPair< T, U >, S >::Clear().
Referenced by DoCommand(), and DoCommandPInternal().
| void UpdateAllTownVirtCoords | ( | ) |
Update the virtual coords needed to draw the town sign for all towns.
Definition at line 366 of file town_cmd.cpp.
References Town::UpdateVirtCoord().
Referenced by UpdateAllVirtCoords().
| void UpdateTownCargoBitmap | ( | ) |
Updates the bitmap of all cargoes accepted by houses.
Definition at line 747 of file town_cmd.cpp.
References _town_cargoes_accepted, and Town::cargo_accepted_total.
Referenced by RebuildTownCaches().
| void UpdateTownCargoes | ( | Town * | t | ) |
Update cargo acceptance for the complete town.
| t | The town to update. |
Definition at line 728 of file town_cmd.cpp.
References Town::cargo_accepted, Town::cargo_produced, TileMatrix< T, N >::GetArea(), INVALID_TILE, TileArea::tile, TILE_AREA_LOOP, TileX(), TileY(), UpdateTownCargoes(), and UpdateTownCargoTotal().
Referenced by AfterLoadGame(), BuildTownHouse(), RebuildTownCaches(), and UpdateTownCargoes().
| void UpdateTownCargoTotal | ( | Town * | t | ) |
Update the total cargo acceptance of the whole town.
| t | The town to update. |
Definition at line 680 of file town_cmd.cpp.
References Town::cargo_accepted, Town::cargo_accepted_total, TileMatrix< T, N >::GetArea(), TILE_AREA_LOOP, TileX(), and TileY().
Referenced by UpdateTownCargoes().
| const byte _town_action_costs[TACT_COUNT] |
Factor in the cost of each town action.
Definition at line 2659 of file town_cmd.cpp.
Referenced by TownAuthorityWindow::DrawWidget(), and TownAuthorityWindow::UpdateWidgetSize().
1.7.1