Changeset - r14222:128de2aca190
[Not reviewed]
master
0 5 0
rubidium - 15 years ago 2010-01-11 20:21:56
rubidium@openttd.org
(svn r18783) -Codechange: make CheckCompanyHasMoney set an error on the CommandCost it tests when you don't have enough money instead of setting a global variable.
5 files changed with 20 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/command.cpp
Show inline comments
 
@@ -424,14 +424,12 @@ CommandCost DoCommand(TileIndex tile, ui
 
		res = proc(tile, flags & ~DC_EXEC, p1, p2, text);
 
		SetTownRatingTestMode(false);
 
		if (CmdFailed(res)) {
 
			res.SetGlobalErrorMessage();
 
			goto error;
 
		}
 

	
 
		if (_docommand_recursive == 1 &&
 
				!(flags & DC_QUERY_COST) &&
 
				!(flags & DC_BANKRUPT) &&
 
				res.GetCost() != 0 &&
 
				!CheckCompanyHasMoney(res)) {
 
			goto error;
 
		}
 
@@ -446,8 +444,8 @@ CommandCost DoCommand(TileIndex tile, ui
 
	 * themselves to the cost object at some point */
 
	res = proc(tile, flags, p1, p2, text);
 
	if (CmdFailed(res)) {
 
error:
 
		res.SetGlobalErrorMessage();
 
error:
 
		_docommand_recursive--;
 
		return CMD_ERROR;
 
	}
 
@@ -579,7 +577,10 @@ bool DoCommandP(TileIndex tile, uint32 p
 
			goto show_error;
 
		}
 
		/* no money? Only check if notest is off */
 
		if (!notest && res.GetCost() != 0 && !CheckCompanyHasMoney(res)) goto show_error;
 
		if (!notest && res.GetCost() != 0 && !CheckCompanyHasMoney(res)) {
 
			res.SetGlobalErrorMessage();
 
			goto show_error;
 
		}
 
	}
 

	
 
#ifdef ENABLE_NETWORK
src/command_type.h
Show inline comments
 
@@ -108,6 +108,17 @@ public:
 
	}
 

	
 
	/**
 
	 * Makes this CommandCost behave like an error command.
 
	 * @param mesasge the error message.
 
	 */
 
	void MakeError(StringID message)
 
	{
 
		assert(message != INVALID_STRING_ID);
 
		this->success = false;
 
		this->message = message;
 
	}
 

	
 
	/**
 
	 * Returns the error message of a command
 
	 * @return the error message, if succeeded INVALID_STRING_ID
 
	 */
src/company_cmd.cpp
Show inline comments
 
@@ -156,13 +156,13 @@ void InvalidateCompanyWindows(const Comp
 
	SetWindowDirty(WC_FINANCES, cid);
 
}
 

	
 
bool CheckCompanyHasMoney(CommandCost cost)
 
bool CheckCompanyHasMoney(CommandCost &cost)
 
{
 
	if (cost.GetCost() > 0) {
 
		const Company *c = Company::GetIfValid(_current_company);
 
		if (c != NULL && cost.GetCost() > c->money) {
 
			SetDParam(0, cost.GetCost());
 
			_error_message = STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY;
 
			cost.MakeError(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY);
 
			return false;
 
		}
 
	}
src/functions.h
Show inline comments
 
@@ -23,7 +23,7 @@ void DrawClearLandFence(const TileInfo *
 
void TileLoopClearHelper(TileIndex tile);
 

	
 
/* company_cmd.cpp */
 
bool CheckCompanyHasMoney(CommandCost cost);
 
bool CheckCompanyHasMoney(CommandCost &cost);
 
void SubtractMoneyFromCompany(CommandCost cost);
 
void SubtractMoneyFromCompanyFract(CompanyID company, CommandCost cost);
 
bool CheckOwnership(Owner owner, TileIndex tile = 0);
src/vehicle_cmd.cpp
Show inline comments
 
@@ -588,7 +588,7 @@ CommandCost CmdCloneVehicle(TileIndex ti
 
			/* The vehicle has already been bought, so now it must be sold again. */
 
			DoCommand(w_front->tile, w_front->index, 1, flags, GetCmdSellVeh(w_front));
 
		}
 
		return CMD_ERROR;
 
		return total_cost;
 
	}
 

	
 
	return total_cost;
0 comments (0 inline, 0 general)