From 6132fcea4439d418dffde7908a5bbb128d170dba Mon Sep 17 00:00:00 2001 From: tron Date: Sun, 5 Feb 2006 11:54:25 +0000 Subject: (svn r3554) Add accessors for the field type and fences of clear tiles --- industry_cmd.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'industry_cmd.c') diff --git a/industry_cmd.c b/industry_cmd.c index df21ef5c4..7aee70407 100644 --- a/industry_cmd.c +++ b/industry_cmd.c @@ -903,23 +903,19 @@ static bool IsBadFarmFieldTile2(TileIndex tile) static void SetupFarmFieldFence(TileIndex tile, int size, byte type, int direction) { - byte or, and; - do { tile = TILE_MASK(tile); if (IsTileType(tile, MP_CLEAR) || IsTileType(tile, MP_TREES)) { + byte or = type; - or = type; if (or == 1 && CHANCE16(1, 7)) or = 2; - or <<= 2; - and = (byte)~0x1C; if (direction) { - or <<= 3; - and = (byte)~0xE0; + SetFenceSW(tile, or); + } else { + SetFenceSE(tile, or); } - _m[tile].m4 = (_m[tile].m4 & and) | or; } tile += direction ? TileDiffXY(0, 1) : TileDiffXY(1, 0); @@ -931,7 +927,9 @@ static void PlantFarmField(TileIndex tile) uint size_x, size_y; uint32 r; uint count; - int type, type2; + uint counter; + uint field_type; + int type; if (_opt.landscape == LT_HILLY) { if (GetTileZ(tile) + 16 >= _opt.snow_line) @@ -957,19 +955,21 @@ static void PlantFarmField(TileIndex tile) /* determine type of field */ r = Random(); - type = ((r & 0xE0) | 0xF); - type2 = GB(r, 8, 8) * 9 >> 8; + counter = GB(r, 5, 3); + field_type = GB(r, 8, 8) * 9 >> 8; /* make field */ BEGIN_TILE_LOOP(cur_tile, size_x, size_y, tile) cur_tile = TILE_MASK(cur_tile); if (!IsBadFarmFieldTile2(cur_tile)) { - ModifyTile(cur_tile, - MP_SETTYPE(MP_CLEAR) | - MP_MAP2_CLEAR | MP_MAP3LO | MP_MAP3HI_CLEAR | MP_MAPOWNER | MP_MAP5, - type2, /* map3_lo */ - OWNER_NONE, /* map_owner */ - type); /* map5 */ + SetTileType(cur_tile, MP_CLEAR); + SetTileOwner(cur_tile, OWNER_NONE); + SetFieldType(cur_tile, field_type); + SetFenceSW(cur_tile, 0); + SetFenceSE(cur_tile, 0); + SetClearGroundDensity(cur_tile, CL_FIELDS, 3); + SetClearCounter(cur_tile, counter); + MarkTileDirtyByTile(cur_tile); } END_TILE_LOOP(cur_tile, size_x, size_y, tile) -- cgit v1.2.3-54-g00ecf