Changeset - r19056:723de07a18e9
[Not reviewed]
master
0 2 0
rubidium - 12 years ago 2012-02-11 19:42:33
rubidium@openttd.org
(svn r23924) -Fix [FS#5054]: [NoGo] "Some" news messages would cause an assertion to be triggered due to a missing proper location for the viewport of the news message, so only allow building when valid data for the viewport is provided or no viewport is used
2 files changed with 26 insertions and 16 deletions:
0 comments (0 inline, 0 general)
src/news_gui.cpp
Show inline comments
 
@@ -761,6 +761,31 @@ CommandCost CmdCustomNewsItem(TileIndex 
 
		default: return CMD_ERROR;
 
	}
 

	
 
	const WindowDesc *desc = _news_subtype_data[subtype].desc;
 
	for (int i = 0; i < desc->nwid_length; i++) {
 
		if (desc->nwid_parts[i].type == NWID_VIEWPORT && reftype1 != NR_VEHICLE && GetReferenceTile(reftype1, p2) == INVALID_TILE) {
 
			return CMD_ERROR;
 
		}
 
	}
 

	
 
	switch (subtype) {
 
		/* These sub types require more parameters that are never passed. */
 
		case NS_COMPANY_TROUBLE:
 
		case NS_COMPANY_MERGER:
 
		case NS_COMPANY_BANKRUPT:
 
		case NS_COMPANY_NEW:
 
			return CMD_ERROR;
 

	
 
		/* This one only accepts engines. */
 
		case NS_NEW_VEHICLES:
 
			if (reftype1 != NR_ENGINE) return CMD_ERROR;
 
			break;
 

	
 
		/* The rest, in theory, accepts everything. */
 
		default:
 
			break;
 
	}
 

	
 
	if (company != INVALID_OWNER && company != _local_company) return CommandCost();
 

	
 
	if (flags & DC_EXEC) {
src/script/api/script_news.hpp
Show inline comments
 
@@ -22,26 +22,11 @@
 
class ScriptNews : public ScriptObject {
 
public:
 
	/**
 
	 * Enumeration for corners of tiles.
 
	 * Enumeration for the news types that a script can create news for.
 
	 */
 
	enum NewsType {
 
		/* Note: these values represent part of the in-game NewsSubtype enum */
 
		NT_ARRIVAL_COMPANY   = ::NS_ARRIVAL_COMPANY,  ///< Category arrival for own company.
 
		NT_ARRIVAL_OTHER     = ::NS_ARRIVAL_OTHER,    ///< Category arrival for other companies.
 
		NT_ACCIDENT          = ::NS_ACCIDENT,         ///< Category accident.
 
		NT_COMPANY_TROUBLE   = ::NS_COMPANY_TROUBLE,  ///< Category company in trouble.
 
		NT_COMPANY_MERGER    = ::NS_COMPANY_MERGER,   ///< Category company merger.
 
		NT_COMPANY_BANKRUPT  = ::NS_COMPANY_BANKRUPT, ///< Category company bankrupt.
 
		NT_COMPANY_NEW       = ::NS_COMPANY_NEW,      ///< Category company new.
 
		NT_INDUSTRY_OPEN     = ::NS_INDUSTRY_OPEN,    ///< Category industry open.
 
		NT_INDUSTRY_CLOSE    = ::NS_INDUSTRY_CLOSE,   ///< Category industry close.
 
		NT_ECONOMY           = ::NS_ECONOMY,          ///< Category economy.
 
		NT_INDUSTRY_COMPANY  = ::NS_INDUSTRY_COMPANY, ///< Category industry changes for own company.
 
		NT_INDUSTRY_OTHER    = ::NS_INDUSTRY_OTHER,   ///< Category industry changes for other companies.
 
		NT_INDUSTRY_NOBODY   = ::NS_INDUSTRY_NOBODY,  ///< Category industry changes for nobody.
 
		NT_ADVICE            = ::NS_ADVICE,           ///< Category advice.
 
		NT_NEW_VEHICLES      = ::NS_NEW_VEHICLES,     ///< Category new vehicle.
 
		NT_ACCEPTANCE        = ::NS_ACCEPTANCE,       ///< Category acceptance changes.
 
		NT_SUBSIDIES         = ::NS_SUBSIDIES,        ///< Category subsidies.
 
		NT_GENERAL           = ::NS_GENERAL,          ///< Category general.
 
	};
0 comments (0 inline, 0 general)