(svn r21493) -Codechange: don't use the full 32 bits of the level land command to tell whether to raise, lower or keep the level of the first selected tile
This commit is contained in:
@@ -378,7 +378,8 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
|
||||
* @param tile end tile of area-drag
|
||||
* @param flags for this command type
|
||||
* @param p1 start tile of area drag
|
||||
* @param p2 height difference; eg raise (+1), lower (-1) or level (0)
|
||||
* @param p2 various bitstuffed data.
|
||||
* bits 1 - 2: Mode of leveling \c LevelMode.
|
||||
* @param text unused
|
||||
* @return the cost of this operation or an error
|
||||
*/
|
||||
@@ -392,14 +393,21 @@ CommandCost CmdLevelLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
|
||||
uint oldh = TileHeight(p1);
|
||||
|
||||
/* compute new height */
|
||||
uint h = oldh + (int8)p2;
|
||||
uint h = oldh;
|
||||
LevelMode lm = (LevelMode)GB(p2, 1, 2);
|
||||
switch (lm) {
|
||||
case LM_LEVEL: break;
|
||||
case LM_RAISE: h++; break;
|
||||
case LM_LOWER: h--; break;
|
||||
default: return CMD_ERROR;
|
||||
}
|
||||
|
||||
/* Check range of destination height */
|
||||
if (h > MAX_TILE_HEIGHT) return_cmd_error((oldh == 0) ? STR_ERROR_ALREADY_AT_SEA_LEVEL : STR_ERROR_TOO_HIGH);
|
||||
|
||||
Money money = GetAvailableMoneyForCommand();
|
||||
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||
CommandCost last_error((p2 == 0) ? STR_ERROR_ALREADY_LEVELLED : INVALID_STRING_ID);
|
||||
CommandCost last_error(lm == LM_LEVEL ? STR_ERROR_ALREADY_LEVELLED : INVALID_STRING_ID);
|
||||
bool had_success = false;
|
||||
|
||||
TileArea ta(tile, p1);
|
||||
|
Reference in New Issue
Block a user