(svn r23005) -Fix (r23004): Of course there's still the 16-sprite version for shore tiles... we should continue to handle it.

This commit is contained in:
planetmaker 2011-10-05 17:39:12 +00:00
parent 162b98faa5
commit 824f17215e
1 changed files with 15 additions and 5 deletions

View File

@ -5332,11 +5332,21 @@ static void GraphicsNew(ByteReader *buf)
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);