diff options
author | rubidium <rubidium@openttd.org> | 2011-02-04 10:31:40 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2011-02-04 10:31:40 +0000 |
commit | 732a0d069ad45cc65da7ba0deb2bc081662de146 (patch) | |
tree | d1845b819f8e0fec666a57928a62879a1f57d083 /src | |
parent | c70ee16ecf0f83ea1bf0ac1087324c52dfce5f6e (diff) | |
download | openttd-732a0d069ad45cc65da7ba0deb2bc081662de146.tar.xz |
(svn r21952) -Codechange: unify the company clearing code for bankruptcy with the command to remove companies
Diffstat (limited to 'src')
-rw-r--r-- | src/economy.cpp | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/src/economy.cpp b/src/economy.cpp index 50d1fa32d..af93834e7 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -481,22 +481,22 @@ static void CompanyCheckBankrupt(Company *c) c->quarters_of_bankruptcy++; - CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1); - cni->FillData(c); - switch (c->quarters_of_bankruptcy) { case 0: case 1: - free(cni); break; - case 2: + case 2: { + CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1); + cni->FillData(c); SetDParam(0, STR_NEWS_COMPANY_IN_TROUBLE_TITLE); SetDParam(1, STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION); SetDParamStr(2, cni->company_name); AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, NS_COMPANY_TROUBLE, cni); AI::BroadcastNewEvent(new AIEventCompanyInTrouble(c->index)); break; + } + case 3: { /* Check if the company has any value.. if not, declare it bankrupt * right now */ @@ -505,7 +505,6 @@ static void CompanyCheckBankrupt(Company *c) c->bankrupt_value = val; c->bankrupt_asked = 1 << c->index; // Don't ask the owner c->bankrupt_timeout = 0; - free(cni); break; } /* FALL THROUGH to case 4... */ @@ -518,27 +517,12 @@ static void CompanyCheckBankrupt(Company *c) * he/she is no long in control of this company. However... when you * join another company (cheat) the "unowned" company can bankrupt. */ c->bankrupt_asked = MAX_UVALUE(CompanyMask); - free(cni); break; } - /* Close everything the owner has open */ - DeleteCompanyWindows(c->index); - - /* Show bankrupt news */ - SetDParam(0, STR_NEWS_COMPANY_BANKRUPT_TITLE); - SetDParam(1, STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION); - SetDParamStr(2, cni->company_name); - AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, NS_COMPANY_BANKRUPT, cni); - - ChangeOwnershipOfCompanyItems(c->index, INVALID_OWNER); - - if (c->is_ai) AI::Stop(c->index); - - CompanyID c_index = c->index; - delete c; - AI::BroadcastNewEvent(new AIEventCompanyBankrupt(c_index)); - CompanyAdminBankrupt(c_index); + /* Actually remove the company. */ + DoCommand(0, 2 | (c->index << 16), 0, DC_EXEC, CMD_COMPANY_CTRL); + break; } } |