Mercurial > hg > openttd
changeset 13869:7bef2d0abe63 draft
(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
author | rubidium <rubidium@openttd.org> |
---|---|
date | Fri, 04 Dec 2009 16:57:35 +0000 |
parents | 1bf0fa7bf81b |
children | 1f84e7212840 |
files | src/tree_cmd.cpp |
diffstat | 1 files changed, 3 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -457,16 +457,8 @@ /* 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 @@ 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();