(svn r21952) -Codechange: unify the company clearing code for bankruptcy with the command to remove companies

This commit is contained in:
rubidium 2011-02-04 10:31:40 +00:00
parent c70ee16ecf
commit 732a0d069a
1 changed files with 8 additions and 24 deletions

View File

@ -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;
}
}