diff options
author | rubidium <rubidium@openttd.org> | 2009-12-04 16:57:35 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-12-04 16:57:35 +0000 |
commit | c1c9a3e8353393fa37cb8c7cf1050bb2e5822c43 (patch) | |
tree | 9ba59b996f4b0201a057c2a948a7692f1fbba618 | |
parent | c559ec63088e2d043eb0cf2e17dd23968aaa40b3 (diff) | |
download | openttd-c1c9a3e8353393fa37cb8c7cf1050bb2e5822c43.tar.xz |
(svn r18398) -Fix [FS#3343]: the tree 'which one to draw' hash wasn't anywhere near random and thus showed a very visible repeated pattern when only one tree type was used
-rw-r--r-- | src/tree_cmd.cpp | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp index d0dec00e2..8802acb46 100644 --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -457,16 +457,8 @@ static void DrawTile_Trees(TileInfo *ti) /* Do not draw trees when the invisible trees setting is set */ if (IsInvisibilitySet(TO_TREES)) return; - uint16 tmp = ti->x; - - tmp = ROR(tmp, 2); - tmp -= ti->y; - tmp = ROR(tmp, 3); - tmp -= ti->x; - tmp = ROR(tmp, 1); - tmp += ti->y; - - uint index = GB(tmp, 6, 2) + (GetTreeType(ti->tile) << 2); + uint tmp = CountBits(ti->tile + ti->x + ti->y); + uint index = GB(tmp, 0, 2) + (GetTreeType(ti->tile) << 2); /* different tree styles above one of the grounds */ if (GetTreeGround(ti->tile) == TREE_GROUND_SNOW_DESERT && @@ -478,7 +470,7 @@ static void DrawTile_Trees(TileInfo *ti) assert(index < lengthof(_tree_layout_sprite)); const PalSpriteID *s = _tree_layout_sprite[index]; - const TreePos *d = _tree_layout_xy[GB(tmp, 4, 2)]; + const TreePos *d = _tree_layout_xy[GB(tmp, 2, 2)]; /* combine trees into one sprite object */ StartSpriteCombine(); |