mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-10 08:17:05 +00:00
(svn r23140) -Add: ErrorUnknownCallbackResult()
This commit is contained in:
parent
ae11548b4e
commit
56e5144f71
@ -2520,6 +2520,7 @@ STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{
|
||||
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:RAW_STRING}' provides incorrect information
|
||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Cargo/refit information for '{1:ENGINE}' differs from purchase list after construction. This might cause autorenew/-replace to fail refitting correctly
|
||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' caused an endless loop in the production callback
|
||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback 0x{HEX} returned unknown/invalid result 0x{HEX}
|
||||
|
||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||
STR_NEWGRF_INVALID_CARGO :<invalid cargo>
|
||||
|
@ -13,10 +13,12 @@
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "debug.h"
|
||||
#include "landscape.h"
|
||||
#include "house.h"
|
||||
#include "industrytype.h"
|
||||
#include "newgrf.h"
|
||||
#include "newgrf_config.h"
|
||||
#include "clear_map.h"
|
||||
#include "station_map.h"
|
||||
#include "tree_map.h"
|
||||
@ -27,6 +29,8 @@
|
||||
#include "newgrf_text.h"
|
||||
#include "livery.h"
|
||||
#include "company_base.h"
|
||||
#include "gui.h"
|
||||
#include "strings_func.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
@ -495,6 +499,38 @@ CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, uint32 grfi
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Record that a NewGRF returned an unknown/invalid callback result.
|
||||
* Also show an error to the user.
|
||||
* @param grfid ID of the NewGRF causing the problem.
|
||||
* @param cbid Callback causing the problem.
|
||||
* @param cb_res Invalid result returned by the callback.
|
||||
*/
|
||||
void ErrorUnknownCallbackResult(uint32 grfid, uint16 cbid, uint16 cb_res)
|
||||
{
|
||||
GRFConfig *grfconfig = GetGRFConfig(grfid);
|
||||
|
||||
if (!HasBit(grfconfig->grf_bugs, GBUG_UNKNOWN_CB_RESULT)) {
|
||||
SetBit(grfconfig->grf_bugs, GBUG_UNKNOWN_CB_RESULT);
|
||||
SetDParamStr(0, grfconfig->GetName());
|
||||
SetDParam(1, cbid);
|
||||
SetDParam(2, cb_res);
|
||||
ShowErrorMessage(STR_NEWGRF_BUGGY, STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT, WL_CRITICAL);
|
||||
}
|
||||
|
||||
/* debug output */
|
||||
char buffer[512];
|
||||
|
||||
SetDParamStr(0, grfconfig->GetName());
|
||||
GetString(buffer, STR_NEWGRF_BUGGY, lastof(buffer));
|
||||
DEBUG(grf, 0, "%s", buffer + 3);
|
||||
|
||||
SetDParam(1, cbid);
|
||||
SetDParam(2, cb_res);
|
||||
GetString(buffer, STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT, lastof(buffer));
|
||||
DEBUG(grf, 0, "%s", buffer + 3);
|
||||
}
|
||||
|
||||
/* static */ SmallVector<DrawTileSeqStruct, 8> NewGRFSpriteLayout::result_seq;
|
||||
|
||||
/**
|
||||
|
@ -300,6 +300,8 @@ uint32 GetNearbyTileInformation(TileIndex tile);
|
||||
uint32 GetCompanyInfo(CompanyID owner, const struct Livery *l = NULL);
|
||||
CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, uint32 grfid, StringID default_error);
|
||||
|
||||
void ErrorUnknownCallbackResult(uint32 grfid, uint16 cbid, uint16 cb_res);
|
||||
|
||||
/**
|
||||
* Data related to the handling of grf files.
|
||||
* @tparam Tcnt Number of spritegroups
|
||||
|
@ -44,6 +44,7 @@ enum GRFBugs {
|
||||
GBUG_VEH_LENGTH, ///< Length of rail vehicle changes when not inside a depot
|
||||
GBUG_VEH_REFIT, ///< Articulated vehicles carry different cargos resp. are differently refittable than specified in purchase list
|
||||
GBUG_VEH_POWERED_WAGON, ///< Powered wagon changed poweredness state when not inside a depot
|
||||
GBUG_UNKNOWN_CB_RESULT, ///< A callback returned an unknown/invalid result
|
||||
};
|
||||
|
||||
/** Status of post-gameload GRF compatibility check */
|
||||
|
Loading…
Reference in New Issue
Block a user