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