(svn r24361) -Fix [FS#5227] (r22926): Apparently ext. A1 did not work at all. (Hirundo)

This commit is contained in:
frosch 2012-06-29 15:38:41 +00:00
parent ee25344a6d
commit 37d41d4448

View File

@ -4367,11 +4367,13 @@ static void ReserveChangeInfo(ByteReader *buf)
/* Action 0x01 */
static void NewSpriteSet(ByteReader *buf)
{
/* <01> <feature> <num-sets> <num-ent>
/* Basic format: <01> <feature> <num-sets> <num-ent>
* Extended format: <01> <feature> 00 <first-set> <num-sets> <num-ent>
*
* B feature feature to define sprites for
* 0, 1, 2, 3: veh-type, 4: train stations
* B num-sets number of sprite sets
* E first-set first sprite set to define
* B num-sets number of sprite sets (extended byte in extended format)
* E num-ent how many entries per sprite set
* For vehicles, this is the number of different
* vehicle directions in each sprite set
@ -4380,10 +4382,10 @@ static void NewSpriteSet(ByteReader *buf)
*/
uint8 feature = buf->ReadByte();
uint8 num_sets = buf->ReadByte();
uint16 num_sets = buf->ReadByte();
uint16 first_set = 0;
if (num_sets == 0 && buf->HasData(2)) {
if (num_sets == 0 && buf->HasData(3)) {
/* Extended Action1 format.
* Some GRFs define zero sets of zero sprites, though there is actually no use in that. Ignore them. */
first_set = buf->ReadExtendedByte();
@ -4407,7 +4409,15 @@ static void NewSpriteSet(ByteReader *buf)
static void SkipAct1(ByteReader *buf)
{
buf->ReadByte();
uint8 num_sets = buf->ReadByte();
uint16 num_sets = buf->ReadByte();
uint16 first_set = 0;
if (num_sets == 0 && buf->HasData(3)) {
/* Extended Action1 format.
* Some GRFs define zero sets of zero sprites, though there is actually no use in that. Ignore them. */
first_set = buf->ReadExtendedByte();
num_sets = buf->ReadExtendedByte();
}
uint16 num_ents = buf->ReadExtendedByte();
_cur.skip_sprites = num_sets * num_ents;