Mercurial > hg > openttd
changeset 17213:4111445c818e draft
(svn r21952) -Codechange: unify the company clearing code for bankruptcy with the command to remove companies
author | rubidium <rubidium@openttd.org> |
---|---|
date | Fri, 04 Feb 2011 10:31:40 +0000 |
parents | 8ff9a1084a3c |
children | 69d27ad4076c |
files | src/economy.cpp |
diffstat | 1 files changed, 8 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/src/economy.cpp +++ b/src/economy.cpp @@ -481,22 +481,22 @@ 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 @@ 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 @@ * 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; } }