diff --git a/src/newgrf.cpp b/src/newgrf.cpp --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2896,13 +2896,13 @@ static void NewSpriteGroup(byte *buf, si case GSF_TOWNHOUSE: case GSF_INDUSTRYTILES: { - byte sprites = _cur_grffile->spriteset_numents; - byte num_sprites = max((uint8)1, type); + byte num_sprite_sets = _cur_grffile->spriteset_numents; + byte num_building_sprites = max((uint8)1, type); uint i; TileLayoutSpriteGroup *group = new TileLayoutSpriteGroup(); act_group = group; - group->num_sprites = sprites; + group->num_building_stages = num_sprite_sets; group->dts = CallocT(1); /* Groundsprite */ @@ -2915,14 +2915,14 @@ static void NewSpriteGroup(byte *buf, si if (HasBit(group->dts->ground.pal, 15)) { /* Bit 31 set means this is a custom sprite, so rewrite it to the * last spriteset defined. */ - SpriteID sprite = _cur_grffile->spriteset_start + GB(group->dts->ground.sprite, 0, 14) * sprites; + SpriteID sprite = _cur_grffile->spriteset_start + GB(group->dts->ground.sprite, 0, 14) * num_sprite_sets; SB(group->dts->ground.sprite, 0, SPRITE_WIDTH, sprite); ClrBit(group->dts->ground.pal, 15); } - group->dts->seq = CallocT(num_sprites + 1); - - for (i = 0; i < num_sprites; i++) { + group->dts->seq = CallocT(num_building_sprites + 1); + + for (i = 0; i < num_building_sprites; i++) { DrawTileSeqStruct *seq = const_cast(&group->dts->seq[i]); seq->image.sprite = grf_load_word(&buf); @@ -2935,7 +2935,7 @@ static void NewSpriteGroup(byte *buf, si if (HasBit(seq->image.pal, 15)) { /* Bit 31 set means this is a custom sprite, so rewrite it to the * last spriteset defined. */ - SpriteID sprite = _cur_grffile->spriteset_start + GB(seq->image.sprite, 0, 14) * sprites; + SpriteID sprite = _cur_grffile->spriteset_start + GB(seq->image.sprite, 0, 14) * num_sprite_sets; SB(seq->image.sprite, 0, SPRITE_WIDTH, sprite); ClrBit(seq->image.pal, 15); } diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -439,14 +439,13 @@ void DrawNewHouseTile(TileInfo *ti, Hous NewHouseResolver(&object, house_id, ti->tile, Town::GetByTile(ti->tile)); group = SpriteGroup::Resolve(hs->spritegroup, &object); - if (group == NULL || group->type != SGT_TILELAYOUT) { - /* XXX: This is for debugging purposes really, and shouldn't stay. */ - DrawGroundSprite(SPR_SHADOW_CELL, PAL_NONE); + const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; + if (group == NULL || group->type != SGT_TILELAYOUT || tlgroup->num_building_stages == 0) { + return; } else { - const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; /* Limit the building stage to the number of stages supplied. */ byte stage = GetHouseBuildingStage(ti->tile); - stage = Clamp(stage - 4 + tlgroup->num_sprites, 0, tlgroup->num_sprites - 1); + stage = Clamp(stage - 4 + tlgroup->num_building_stages, 0, tlgroup->num_building_stages - 1); DrawTileLayout(ti, tlgroup, stage, house_id); } } diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp --- a/src/newgrf_industrytiles.cpp +++ b/src/newgrf_industrytiles.cpp @@ -254,12 +254,12 @@ bool DrawNewIndustryTile(TileInfo *ti, I group = SpriteGroup::Resolve(inds->grf_prop.spritegroup, &object); const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group; - if (group == NULL || group->type != SGT_TILELAYOUT || tlgroup->num_sprites == 0) { + if (group == NULL || group->type != SGT_TILELAYOUT || tlgroup->num_building_stages == 0) { return false; } else { /* Limit the building stage to the number of stages supplied. */ byte stage = GetIndustryConstructionStage(ti->tile); - stage = Clamp(stage - 4 + tlgroup->num_sprites, 0, tlgroup->num_sprites - 1); + stage = Clamp(stage - 4 + tlgroup->num_building_stages, 0, tlgroup->num_building_stages - 1); IndustryDrawTileLayout(ti, tlgroup, i->random_colour, stage, gfx); return true; } diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h --- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -270,7 +270,7 @@ struct TileLayoutSpriteGroup : SpriteGro TileLayoutSpriteGroup() : SpriteGroup(SGT_TILELAYOUT) {} ~TileLayoutSpriteGroup(); - byte num_sprites; ///< Number of sprites in the spriteset, used for loading stages + byte num_building_stages; ///< Number of building stages to show for this house/industry tile struct DrawTileSprites *dts; };