(svn r18514) -Codechange: make it a bit clearer that for tile layouts num_sprites (as in number of sprite sets) is not the same as num_sprites (as in number of building sprites)
This commit is contained in:
		@@ -2896,13 +2896,13 @@ static void NewSpriteGroup(byte *buf, size_t len)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				case GSF_TOWNHOUSE:
 | 
									case GSF_TOWNHOUSE:
 | 
				
			||||||
				case GSF_INDUSTRYTILES: {
 | 
									case GSF_INDUSTRYTILES: {
 | 
				
			||||||
					byte sprites     = _cur_grffile->spriteset_numents;
 | 
										byte num_sprite_sets      = _cur_grffile->spriteset_numents;
 | 
				
			||||||
					byte num_sprites = max((uint8)1, type);
 | 
										byte num_building_sprites = max((uint8)1, type);
 | 
				
			||||||
					uint i;
 | 
										uint i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					TileLayoutSpriteGroup *group = new TileLayoutSpriteGroup();
 | 
										TileLayoutSpriteGroup *group = new TileLayoutSpriteGroup();
 | 
				
			||||||
					act_group = group;
 | 
										act_group = group;
 | 
				
			||||||
					group->num_sprites = sprites;
 | 
										group->num_building_stages = num_sprite_sets;
 | 
				
			||||||
					group->dts = CallocT<DrawTileSprites>(1);
 | 
										group->dts = CallocT<DrawTileSprites>(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					/* Groundsprite */
 | 
										/* Groundsprite */
 | 
				
			||||||
@@ -2915,14 +2915,14 @@ static void NewSpriteGroup(byte *buf, size_t len)
 | 
				
			|||||||
					if (HasBit(group->dts->ground.pal, 15)) {
 | 
										if (HasBit(group->dts->ground.pal, 15)) {
 | 
				
			||||||
						/* Bit 31 set means this is a custom sprite, so rewrite it to the
 | 
											/* Bit 31 set means this is a custom sprite, so rewrite it to the
 | 
				
			||||||
						 * last spriteset defined. */
 | 
											 * 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);
 | 
											SB(group->dts->ground.sprite, 0, SPRITE_WIDTH, sprite);
 | 
				
			||||||
						ClrBit(group->dts->ground.pal, 15);
 | 
											ClrBit(group->dts->ground.pal, 15);
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					group->dts->seq = CallocT<DrawTileSeqStruct>(num_sprites + 1);
 | 
										group->dts->seq = CallocT<DrawTileSeqStruct>(num_building_sprites + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					for (i = 0; i < num_sprites; i++) {
 | 
										for (i = 0; i < num_building_sprites; i++) {
 | 
				
			||||||
						DrawTileSeqStruct *seq = const_cast<DrawTileSeqStruct*>(&group->dts->seq[i]);
 | 
											DrawTileSeqStruct *seq = const_cast<DrawTileSeqStruct*>(&group->dts->seq[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						seq->image.sprite = grf_load_word(&buf);
 | 
											seq->image.sprite = grf_load_word(&buf);
 | 
				
			||||||
@@ -2935,7 +2935,7 @@ static void NewSpriteGroup(byte *buf, size_t len)
 | 
				
			|||||||
						if (HasBit(seq->image.pal, 15)) {
 | 
											if (HasBit(seq->image.pal, 15)) {
 | 
				
			||||||
							/* Bit 31 set means this is a custom sprite, so rewrite it to the
 | 
												/* Bit 31 set means this is a custom sprite, so rewrite it to the
 | 
				
			||||||
							 * last spriteset defined. */
 | 
												 * 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);
 | 
												SB(seq->image.sprite, 0, SPRITE_WIDTH, sprite);
 | 
				
			||||||
							ClrBit(seq->image.pal, 15);
 | 
												ClrBit(seq->image.pal, 15);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -439,14 +439,13 @@ void DrawNewHouseTile(TileInfo *ti, HouseID house_id)
 | 
				
			|||||||
	NewHouseResolver(&object, house_id, ti->tile, Town::GetByTile(ti->tile));
 | 
						NewHouseResolver(&object, house_id, ti->tile, Town::GetByTile(ti->tile));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	group = SpriteGroup::Resolve(hs->spritegroup, &object);
 | 
						group = SpriteGroup::Resolve(hs->spritegroup, &object);
 | 
				
			||||||
	if (group == NULL || group->type != SGT_TILELAYOUT) {
 | 
						const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group;
 | 
				
			||||||
		/* XXX: This is for debugging purposes really, and shouldn't stay. */
 | 
						if (group == NULL || group->type != SGT_TILELAYOUT || tlgroup->num_building_stages == 0) {
 | 
				
			||||||
		DrawGroundSprite(SPR_SHADOW_CELL, PAL_NONE);
 | 
							return;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group;
 | 
					 | 
				
			||||||
		/* Limit the building stage to the number of stages supplied. */
 | 
							/* Limit the building stage to the number of stages supplied. */
 | 
				
			||||||
		byte stage = GetHouseBuildingStage(ti->tile);
 | 
							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);
 | 
							DrawTileLayout(ti, tlgroup, stage, house_id);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -254,12 +254,12 @@ bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const Indus
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	group = SpriteGroup::Resolve(inds->grf_prop.spritegroup, &object);
 | 
						group = SpriteGroup::Resolve(inds->grf_prop.spritegroup, &object);
 | 
				
			||||||
	const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group;
 | 
						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;
 | 
							return false;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		/* Limit the building stage to the number of stages supplied. */
 | 
							/* Limit the building stage to the number of stages supplied. */
 | 
				
			||||||
		byte stage = GetIndustryConstructionStage(ti->tile);
 | 
							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);
 | 
							IndustryDrawTileLayout(ti, tlgroup, i->random_colour, stage, gfx);
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -270,7 +270,7 @@ struct TileLayoutSpriteGroup : SpriteGroup {
 | 
				
			|||||||
	TileLayoutSpriteGroup() : SpriteGroup(SGT_TILELAYOUT) {}
 | 
						TileLayoutSpriteGroup() : SpriteGroup(SGT_TILELAYOUT) {}
 | 
				
			||||||
	~TileLayoutSpriteGroup();
 | 
						~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;
 | 
						struct DrawTileSprites *dts;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user