summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-02-04 10:31:40 +0000
committerrubidium <rubidium@openttd.org>2011-02-04 10:31:40 +0000
commit732a0d069ad45cc65da7ba0deb2bc081662de146 (patch)
treed1845b819f8e0fec666a57928a62879a1f57d083 /src
parentc70ee16ecf0f83ea1bf0ac1087324c52dfce5f6e (diff)
downloadopenttd-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.cpp32
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;
}
}