(svn r16379) -Codechange: remove GetNumTowns(), GetNumIndustries() and GetActiveCompanyCount(), use PoolItem::GetNumItems() instead

This commit is contained in:
smatz 2009-05-22 15:23:47 +00:00
parent 62a7948af0
commit 10d1ef5447
15 changed files with 22 additions and 37 deletions

View File

@ -13,7 +13,7 @@
/* static */ int32 AIIndustry::GetIndustryCount() /* static */ int32 AIIndustry::GetIndustryCount()
{ {
return ::GetNumIndustries(); return (int32)::Industry::GetNumItems();
} }
/* static */ bool AIIndustry::IsValidIndustry(IndustryID industry_id) /* static */ bool AIIndustry::IsValidIndustry(IndustryID industry_id)

View File

@ -15,7 +15,7 @@
/* static */ SignID AISign::GetMaxSignID() /* static */ SignID AISign::GetMaxSignID()
{ {
return ::Sign::GetPoolSize() - 1; return (SignID)::Sign::GetNumItems();
} }
/* static */ bool AISign::IsValidSign(SignID sign_id) /* static */ bool AISign::IsValidSign(SignID sign_id)

View File

@ -16,7 +16,7 @@
/* static */ int32 AITown::GetTownCount() /* static */ int32 AITown::GetTownCount()
{ {
return ::GetNumTowns(); return (int32)::Town::GetNumItems();
} }
/* static */ bool AITown::IsValidTown(TownID town_id) /* static */ bool AITown::IsValidTown(TownID town_id)

View File

@ -84,11 +84,6 @@ struct Company : CompanyPool::PoolItem<&_company_pool> {
#define FOR_ALL_COMPANIES_FROM(var, start) FOR_ALL_ITEMS_FROM(Company, company_index, var, start) #define FOR_ALL_COMPANIES_FROM(var, start) FOR_ALL_ITEMS_FROM(Company, company_index, var, start)
#define FOR_ALL_COMPANIES(var) FOR_ALL_COMPANIES_FROM(var, 0) #define FOR_ALL_COMPANIES(var) FOR_ALL_COMPANIES_FROM(var, 0)
static inline byte ActiveCompanyCount()
{
return (byte)Company::GetNumItems();
}
Money CalculateCompanyValue(const Company *c); Money CalculateCompanyValue(const Company *c);
extern uint _next_competitor_start; extern uint _next_competitor_start;

View File

@ -469,7 +469,7 @@ void StartupCompanies()
static void MaybeStartNewCompany() static void MaybeStartNewCompany()
{ {
#ifdef ENABLE_NETWORK #ifdef ENABLE_NETWORK
if (_networking && ActiveCompanyCount() >= _settings_client.network.max_companies) return; if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return;
#endif /* ENABLE_NETWORK */ #endif /* ENABLE_NETWORK */
Company *c; Company *c;

View File

@ -551,7 +551,7 @@ DEF_CONSOLE_CMD(ConServerInfo)
} }
IConsolePrintF(CC_DEFAULT, "Current/maximum clients: %2d/%2d", _network_game_info.clients_on, _settings_client.network.max_clients); IConsolePrintF(CC_DEFAULT, "Current/maximum clients: %2d/%2d", _network_game_info.clients_on, _settings_client.network.max_clients);
IConsolePrintF(CC_DEFAULT, "Current/maximum companies: %2d/%2d", ActiveCompanyCount(), _settings_client.network.max_companies); IConsolePrintF(CC_DEFAULT, "Current/maximum companies: %2d/%2d", (int)Company::GetNumItems(), _settings_client.network.max_companies);
IConsolePrintF(CC_DEFAULT, "Current/maximum spectators: %2d/%2d", NetworkSpectatorCount(), _settings_client.network.max_spectators); IConsolePrintF(CC_DEFAULT, "Current/maximum spectators: %2d/%2d", NetworkSpectatorCount(), _settings_client.network.max_spectators);
return true; return true;
@ -980,7 +980,7 @@ DEF_CONSOLE_CMD(ConStartAI)
return true; return true;
} }
if (ActiveCompanyCount() == MAX_COMPANIES) { if (Company::GetNumItems() == CompanyPool::MAX_SIZE) {
IConsoleWarning("Can't start a new AI (no more free slots)."); IConsoleWarning("Can't start a new AI (no more free slots).");
return true; return true;
} }

View File

@ -266,11 +266,6 @@ void SetIndustryDailyChanges();
extern uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame extern uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
static inline uint GetNumIndustries()
{
return (uint)Industry::GetNumItems();
}
/** Increment the count of industries for this type /** Increment the count of industries for this type
* @param type IndustryType to increment * @param type IndustryType to increment
* @pre type < INVALID_INDUSTRYTYPE */ * @pre type < INVALID_INDUSTRYTYPE */
@ -310,10 +305,10 @@ static inline void ResetIndustryCounts()
*/ */
static inline Industry *GetRandomIndustry() static inline Industry *GetRandomIndustry()
{ {
int num = RandomRange(GetNumIndustries()); if (Industry::GetNumItems() == 0) return NULL;
IndustryID index = INVALID_INDUSTRY;
if (GetNumIndustries() == 0) return NULL; int num = RandomRange((uint16)Industry::GetNumItems());
IndustryID index = INVALID_INDUSTRY;
while (num >= 0) { while (num >= 0) {
num--; num--;

View File

@ -334,7 +334,7 @@ public:
if (this->selected_type == INVALID_INDUSTRYTYPE) { if (this->selected_type == INVALID_INDUSTRYTYPE) {
this->HandleButtonClick(DPIW_FUND_WIDGET); this->HandleButtonClick(DPIW_FUND_WIDGET);
if (GetNumTowns() == 0) { if (Town::GetNumItems() == 0) {
ShowErrorMessage(STR_ERROR_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0); ShowErrorMessage(STR_ERROR_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0);
} else { } else {
extern void GenerateIndustries(); extern void GenerateIndustries();
@ -368,7 +368,7 @@ public:
if (_game_mode == GM_EDITOR) { if (_game_mode == GM_EDITOR) {
/* Show error if no town exists at all */ /* Show error if no town exists at all */
if (GetNumTowns() == 0) { if (Town::GetNumItems() == 0) {
SetDParam(0, indsp->name); SetDParam(0, indsp->name);
ShowErrorMessage(STR_ERROR_MUST_BUILD_TOWN_FIRST, STR_ERROR_CAN_T_BUILD_HERE, pt.x, pt.y); ShowErrorMessage(STR_ERROR_MUST_BUILD_TOWN_FIRST, STR_ERROR_CAN_T_BUILD_HERE, pt.x, pt.y);
return; return;

View File

@ -1021,7 +1021,7 @@ bool NetworkClientPreferTeamChat(const NetworkClientInfo *cio)
*/ */
bool NetworkMaxCompaniesReached() bool NetworkMaxCompaniesReached()
{ {
return ActiveCompanyCount() >= (_network_server ? _settings_client.network.max_companies : _network_server_max_companies); return Company::GetNumItems() >= (_network_server ? _settings_client.network.max_companies : _network_server_max_companies);
} }
/** /**

View File

@ -674,7 +674,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_JOIN)
/* join another company does not affect these values */ /* join another company does not affect these values */
switch (playas) { switch (playas) {
case COMPANY_NEW_COMPANY: // New company case COMPANY_NEW_COMPANY: // New company
if (ActiveCompanyCount() >= _settings_client.network.max_companies) { if (Company::GetNumItems() >= _settings_client.network.max_companies) {
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL); SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL);
return; return;
} }
@ -901,7 +901,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMMAND)
} }
/* Check if we are full - else it's possible for spectators to send a CMD_COMPANY_CTRL and the company is created regardless of max_companies! */ /* Check if we are full - else it's possible for spectators to send a CMD_COMPANY_CTRL and the company is created regardless of max_companies! */
if (ActiveCompanyCount() >= _settings_client.network.max_companies) { if (Company::GetNumItems() >= _settings_client.network.max_companies) {
NetworkServerSendChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_CLIENT, ci->client_id, "cannot create new company, server full", CLIENT_ID_SERVER); NetworkServerSendChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_CLIENT, ci->client_id, "cannot create new company, server full", CLIENT_ID_SERVER);
return; return;
} }

View File

@ -95,7 +95,7 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_FIND_SERVER)
ngi.server_lang = _settings_client.network.server_lang; ngi.server_lang = _settings_client.network.server_lang;
ngi.use_password = !StrEmpty(_settings_client.network.server_password); ngi.use_password = !StrEmpty(_settings_client.network.server_password);
ngi.clients_max = _settings_client.network.max_clients; ngi.clients_max = _settings_client.network.max_clients;
ngi.companies_on = ActiveCompanyCount(); ngi.companies_on = (byte)Company::GetNumItems();
ngi.companies_max = _settings_client.network.max_companies; ngi.companies_max = _settings_client.network.max_companies;
ngi.spectators_on = NetworkSpectatorCount(); ngi.spectators_on = NetworkSpectatorCount();
ngi.spectators_max = _settings_client.network.max_spectators; ngi.spectators_max = _settings_client.network.max_spectators;
@ -128,7 +128,7 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
/* Send the amount of active companies */ /* Send the amount of active companies */
packet.Send_uint8 (NETWORK_COMPANY_INFO_VERSION); packet.Send_uint8 (NETWORK_COMPANY_INFO_VERSION);
packet.Send_uint8 (ActiveCompanyCount()); packet.Send_uint8 ((uint8)Company::GetNumItems());
/* Fetch the latest version of the stats */ /* Fetch the latest version of the stats */
NetworkCompanyStats company_stats[MAX_COMPANIES]; NetworkCompanyStats company_stats[MAX_COMPANIES];

View File

@ -142,7 +142,7 @@ static void ShowTownnameDropdown(Window *w, int sel)
DropDownList *list = new DropDownList(); DropDownList *list = new DropDownList();
for (TownList::iterator it = townnames.begin(); it != townnames.end(); it++) { for (TownList::iterator it = townnames.begin(); it != townnames.end(); it++) {
list->push_back(new DropDownListStringItem((*it).first, (*it).second, !(_game_mode == GM_MENU || GetNumTowns() == 0 || (*it).second == sel))); list->push_back(new DropDownListStringItem((*it).first, (*it).second, !(_game_mode == GM_MENU || Town::GetNumItems() == 0 || (*it).second == sel)));
} }
ShowDropDownList(w, list, sel, GOW_TOWNNAME_DROPDOWN); ShowDropDownList(w, list, sel, GOW_TOWNNAME_DROPDOWN);
@ -305,7 +305,7 @@ struct GameOptionsWindow : Window {
break; break;
case GOW_TOWNNAME_DROPDOWN: // Town names case GOW_TOWNNAME_DROPDOWN: // Town names
if (_game_mode == GM_MENU || GetNumTowns() == 0) { if (_game_mode == GM_MENU || Town::GetNumItems() == 0) {
this->opt->game_creation.town_name = index; this->opt->game_creation.town_name = index;
InvalidateWindow(WC_GAME_OPTIONS, 0); InvalidateWindow(WC_GAME_OPTIONS, 0);
} }

View File

@ -1036,7 +1036,7 @@ struct MainToolbarWindow : Window {
* Since enabled state is the default, just disable when needed */ * Since enabled state is the default, just disable when needed */
this->SetWidgetsDisabledState(_local_company == COMPANY_SPECTATOR, TBN_RAILS, TBN_ROADS, TBN_WATER, TBN_AIR, TBN_LANDSCAPE, WIDGET_LIST_END); this->SetWidgetsDisabledState(_local_company == COMPANY_SPECTATOR, TBN_RAILS, TBN_ROADS, TBN_WATER, TBN_AIR, TBN_LANDSCAPE, WIDGET_LIST_END);
/* disable company list drop downs, if there are no companies */ /* disable company list drop downs, if there are no companies */
this->SetWidgetsDisabledState(ActiveCompanyCount() == TBN_PAUSE, TBN_STATIONS, TBN_FINANCES, TBN_TRAINS, TBN_ROADVEHS, TBN_SHIPS, TBN_AIRCRAFTS, WIDGET_LIST_END); this->SetWidgetsDisabledState(Company::GetNumItems() == TBN_PAUSE, TBN_STATIONS, TBN_FINANCES, TBN_TRAINS, TBN_ROADVEHS, TBN_SHIPS, TBN_AIRCRAFTS, WIDGET_LIST_END);
this->SetWidgetDisabledState(TBN_RAILS, !CanBuildVehicleInfrastructure(VEH_TRAIN)); this->SetWidgetDisabledState(TBN_RAILS, !CanBuildVehicleInfrastructure(VEH_TRAIN));
this->SetWidgetDisabledState(TBN_AIR, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT)); this->SetWidgetDisabledState(TBN_AIR, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT));

View File

@ -294,17 +294,12 @@ static inline HouseSpec *GetHouseSpecs(HouseID house_id)
TileIndexDiff GetHouseNorthPart(HouseID &house); TileIndexDiff GetHouseNorthPart(HouseID &house);
static inline uint GetNumTowns()
{
return (uint)Town::GetNumItems();
}
/** /**
* Return a random valid town. * Return a random valid town.
*/ */
static inline Town *GetRandomTown() static inline Town *GetRandomTown()
{ {
int num = RandomRange(GetNumTowns()); int num = RandomRange((uint16)Town::GetNumItems());
TownID index = INVALID_TOWN; TownID index = INVALID_TOWN;
while (num >= 0) { while (num >= 0) {

View File

@ -1760,7 +1760,7 @@ bool GenerateTowns(TownLayout layout)
/* give it a last try, but now more aggressive */ /* give it a last try, but now more aggressive */
if (num == 0 && CreateRandomTown(10000, TS_RANDOM, _settings_game.economy.larger_towns != 0, layout) == NULL) { if (num == 0 && CreateRandomTown(10000, TS_RANDOM, _settings_game.economy.larger_towns != 0, layout) == NULL) {
if (GetNumTowns() == 0) { if (Town::GetNumItems() == 0) {
if (_game_mode != GM_EDITOR) { if (_game_mode != GM_EDITOR) {
extern StringID _switch_mode_errorstr; extern StringID _switch_mode_errorstr;
_switch_mode_errorstr = STR_COULD_NOT_CREATE_TOWN; _switch_mode_errorstr = STR_COULD_NOT_CREATE_TOWN;
@ -2709,7 +2709,7 @@ Town *ClosestTownFromTile(TileIndex tile, uint threshold)
if (tid == (TownID)INVALID_TOWN) { if (tid == (TownID)INVALID_TOWN) {
/* in the case we are generating "many random towns", this value may be INVALID_TOWN */ /* in the case we are generating "many random towns", this value may be INVALID_TOWN */
if (_generating_world) return CalcClosestTownFromTile(tile, threshold); if (_generating_world) return CalcClosestTownFromTile(tile, threshold);
assert(GetNumTowns() == 0); assert(Town::GetNumItems() == 0);
return NULL; return NULL;
} }