Changeset - r17203:5059e5768ef6
[Not reviewed]
master
0 1 0
rubidium - 13 years ago 2011-02-04 10:31:40
rubidium@openttd.org
(svn r21952) -Codechange: unify the company clearing code for bankruptcy with the command to remove companies
1 file changed with 8 insertions and 24 deletions:
0 comments (0 inline, 0 general)
src/economy.cpp
Show inline comments
 
@@ -481,22 +481,22 @@ static void CompanyCheckBankrupt(Company
 

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

	
0 comments (0 inline, 0 general)