Base of the town class. More...
#include "core/pool_type.hpp"
#include "viewport_type.h"
#include "command_type.h"
#include "town_map.h"
#include "subsidy_type.h"
Go to the source code of this file.
Data Structures | |
struct | BuildingCounts< T > |
struct | Town |
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 Pool< Town, TownID, 64, 64000 > | TownPool |
Enumerations | |
enum | TownRatingCheckType { ROAD_REMOVE = 0, TUNNELBRIDGE_REMOVE = 1, TOWN_RATING_CHECK_TYPE_COUNT } |
enum | { TOWN_IS_FUNDED = 0, TOWN_HAS_CHURCH = 1, TOWN_HAS_STADIUM = 2 } |
This enum is used in conjonction 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_FOUND_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_FOUND_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 | InitializeTown () |
void | ShowTownViewWindow (TownID town) |
void | ExpandTown (Town *t) |
Called from GUI. | |
bool | CheckforTownRating (DoCommandFlag flags, Town *t, TownRatingCheckType type) |
TileIndexDiff | GetHouseNorthPart (HouseID &house) |
Determines if a given HouseID is part of a multitile house. | |
Town * | CalcClosestTownFromTile (TileIndex tile, uint threshold=UINT_MAX) |
void | ResetHouses () |
void | ClearTownHouse (Town *t, TileIndex tile) |
void | UpdateTownMaxPass (Town *t) |
void | UpdateTownRadius (Town *t) |
bool | 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) |
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) |
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. | |
DECLARE_ENUM_AS_BIT_SET (TownActions) | |
static uint | TileHash (uint x, uint y) |
Calculate a hash value from a tile position. | |
static uint | TileHash2Bit (uint x, uint y) |
Get the last two bits of the TileHash from a tile position. | |
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 |
TownPool | _town_pool |
static const byte | TOWN_GROWTH_FREQUENCY = 70 |
This is the number of ticks between towns being processed for building new houses or roads. | |
const byte | _town_action_costs [TACT_COUNT] |
Factor in the cost of each town action. | |
TownID | _new_town_id |
Base of the town class.
Definition in file town.h.
anonymous enum |
This enum is used in conjonction 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 TownActions |
Town actions of a company.
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 archievable with this change | |
flags | Command flags, especially DC_NO_MODIFY_TOWN_RATING is tested |
Definition at line 2800 of file town_cmd.cpp.
References DC_NO_MODIFY_TOWN_RATING, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Cheats::magic_bulldozer, SetBit(), SetWindowDirty(), and Cheat::value.
Referenced by CheckAllowRemoveRoad(), and CmdPlantTree().
bool 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 2697 of file town_cmd.cpp.
References _settings_game, DC_NO_TEST_TOWN_RATING, EconomySettings::dist_local_authority, GameSettings::economy, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and SetDParam().
Referenced by CmdBuildAirport(), CmdBuildDock(), CmdBuildRailStation(), and CmdBuildRoadStop().
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 1772 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, Tcache, Tzero >::PoolItem<&_town_pool >::GetNumItems(), GWP_TOWN, IncreaseGeneratingWorldProgress(), EconomySettings::larger_towns, DifficultySettings::number_towns, ScaleByMapSize(), SetGeneratingWorldProgress(), and TSZ_RANDOM.
Referenced by _GenerateWorld(), and FoundTownWindow::OnClick().
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 2227 of file town_cmd.cpp.
References TileDiffXY().
Referenced by GetDistanceFromNearbyHouse(), SearchNearbyHouseClass(), SearchNearbyHouseGRFID(), SearchNearbyHouseID(), and UpdateHousesAndTowns().
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 2518 of file town_cmd.cpp.
References _settings_game, EconomySettings::bribe, COMPANY_SPECTATOR, GameSettings::economy, EconomySettings::exclusive_rights, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), HasBit(), lengthof, TACT_BRIBE, TACT_BUILD_STATUE, TACT_BUY_RIGHTS, TACT_NONE, and Town::unwanted.
Referenced by CmdDoTownAction(), TownAuthorityWindow::DrawWidget(), AITown::IsActionAvailable(), 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 1817 of file town_cmd.cpp.
References DistanceSquare().
Referenced by BuildTownHouse(), HouseGetVariable(), and IndustryGetVariable().
uint32 GetWorldPopulation | ( | ) |
Determines the world population Basically, count population of all towns, one by one.
Definition at line 388 of file town_cmd.cpp.
Referenced by TownDirectoryWindow::SetStringParameters().
static uint TileHash | ( | uint | x, | |
uint | y | |||
) | [inline, static] |
Calculate a hash value from a tile position.
x | The X coordinate | |
y | The Y coordinate |
Definition at line 235 of file town.h.
Referenced by Town::InitializeLayout(), and TileHash2Bit().
static uint TileHash2Bit | ( | uint | x, | |
uint | y | |||
) | [inline, static] |
Get the last two bits of the TileHash from a tile position.
x | The X coordinate | |
y | The Y coordinate |
Definition at line 253 of file town.h.
References GB(), and TileHash().
Referenced by DrawTile_Town(), and HouseGetVariable().
void UpdateAllTownVirtCoords | ( | ) |
Update the virtual coords needed to draw the town sign for all towns.
Definition at line 360 of file town_cmd.cpp.
References Town::UpdateVirtCoord().
Referenced by UpdateAllVirtCoords().
const byte _town_action_costs[TACT_COUNT] |
Factor in the cost of each town action.
Definition at line 2339 of file town_cmd.cpp.
Referenced by TownAuthorityWindow::DrawWidget(), and TownAuthorityWindow::UpdateWidgetSize().
const byte TOWN_GROWTH_FREQUENCY = 70 [static] |