Mercurial > hg > openttd
changeset 18176:3276c7baad57 draft
(svn r23005) -Fix (r23004): Of course there's still the 16-sprite version for shore tiles... we should continue to handle it.
author | planetmaker <planetmaker@openttd.org> |
---|---|
date | Wed, 05 Oct 2011 17:39:12 +0000 |
parents | e905642c7adf |
children | 817449f0482e |
files | src/newgrf.cpp |
diffstat | 1 files changed, 15 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -5332,11 +5332,21 @@ const Action5Type *action5_type = &_action5_types[type]; - /* Contrary to TTDP we allow always to specify too few sprites as we allow always an offset. - * Thus no check for the amount of sprites is needed (anymore). - * The only no-offset entry, shores, is handled above already. - * We'll assume that offsets are always allowed further down, thus assert on this */ - assert(action5_type->block_type == A5BLOCK_ALLOW_OFFSET); + /* Contrary to TTDP we allow always to specify too few sprites as we allow always an offset, + * except for the long version of the shore type: + * Ignore offset if not allowed */ + if ((action5_type->block_type != A5BLOCK_ALLOW_OFFSET) && (offset != 0)) { + grfmsg(1, "GraphicsNew: %s (type 0x%02X) do not allow an <offset> field. Ignoring offset.", action5_type->name, type); + offset = 0; + } + + /* Ignore action5 if too few sprites are specified. (for TTDP compatibility) + * This does not make sense, if <offset> is allowed */ + if ((action5_type->block_type == A5BLOCK_FIXED) && (num < action5_type->min_sprites)) { + grfmsg(1, "GraphicsNew: %s (type 0x%02X) count must be at least %d. Only %d were specified. Skipping.", action5_type->name, type, action5_type->min_sprites, num); + _cur.skip_sprites = num; + return; + } /* Load at most max_sprites sprites. Skip remaining sprites. (for compatibility with TTDP and future extentions) */ uint16 skip_num = SanitizeSpriteOffset(num, offset, action5_type->max_sprites, action5_type->name);