(svn r22656) -Codechange: Deduplicate the custom error message of the industry shape and location callbacks.

This commit is contained in:
michi_cc
2011-07-11 16:32:19 +00:00
parent 1e855be492
commit 206ff68e65
4 changed files with 32 additions and 26 deletions

View File

@@ -24,6 +24,9 @@
#include "newgrf_object.h"
#include "genworld.h"
#include "newgrf_spritegroup.h"
#include "newgrf_text.h"
#include "table/strings.h"
/**
* Constructor of generic class
@@ -446,6 +449,30 @@ uint32 GetNearbyTileInformation(TileIndex tile)
return tile_type << 24 | z << 16 | terrain_type << 8 | tileh;
}
/**
* Get the error message from a shape/location/slope check callback result.
* @param cb_res Callback result to translate. If bit 10 is set this is a standard error message, otherwise a NewGRF provided string.
* @param grfid grfID to use to resolve a custom error message.
* @param default_error Error message to use for the generic error.
* @return CommandCost indicating success or the error message.
*/
CommandCost GetErrorMessageFromLocationCallbackResult(uint16 cb_res, uint32 grfid, StringID default_error)
{
CommandCost res;
switch (cb_res) {
case 0x400: return res; // No error.
case 0x401: res = CommandCost(default_error); break;
case 0x402: res = CommandCost(STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST); break;
case 0x403: res = CommandCost(STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT); break;
default: res = CommandCost(GetGRFStringID(grfid, 0xD000 + cb_res)); break;
}
/* Copy some parameters from the registers to the error message text ref. stack */
res.UseTextRefStack(4);
return res;
}
/* static */ SmallVector<DrawTileSeqStruct, 8> NewGRFSpriteLayout::result_seq;
/**