From fbde46c028bb8c7f35b24d803f0d1bfae5039a67 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 3 Aug 2010 11:35:57 +0000 Subject: (svn r20338) -Codechange: unify the unmovable tile drawing --- src/unmovable_cmd.cpp | 75 +++++++++++++++------------------------------------ 1 file changed, 22 insertions(+), 53 deletions(-) (limited to 'src/unmovable_cmd.cpp') diff --git a/src/unmovable_cmd.cpp b/src/unmovable_cmd.cpp index 31af9738e..f5083fa1f 100644 --- a/src/unmovable_cmd.cpp +++ b/src/unmovable_cmd.cpp @@ -244,67 +244,36 @@ static Foundation GetFoundation_Unmovable(TileIndex tile, Slope tileh); static void DrawTile_Unmovable(TileInfo *ti) { - DrawFoundation(ti, GetFoundation_Unmovable(ti->tile, ti->tileh)); - switch (GetUnmovableType(ti->tile)) { - default: NOT_REACHED(); - case UNMOVABLE_TRANSMITTER: - case UNMOVABLE_LIGHTHOUSE: { - const DrawTileSeqStruct *dtu = &_draw_tile_transmitterlighthouse_data[GetUnmovableType(ti->tile)]; - - DrawClearLandTile(ti, 2); + UnmovableType type = GetUnmovableType(ti->tile); + if (type != UNMOVABLE_OWNED_LAND) DrawFoundation(ti, GetFoundation_Unmovable(ti->tile, ti->tileh)); - if (IsInvisibilitySet(TO_STRUCTURES)) break; + const DrawTileSprites *dts = NULL; + Owner to = GetTileOwner(ti->tile); + PaletteID palette = to == OWNER_NONE ? PAL_NONE : COMPANY_SPRITE_COLOUR(to); - AddSortableSpriteToDraw( - dtu->image.sprite, PAL_NONE, ti->x | dtu->delta_x, ti->y | dtu->delta_y, - dtu->size_x, dtu->size_y, dtu->size_z, ti->z, - IsTransparencySet(TO_STRUCTURES) - ); - break; - } - - case UNMOVABLE_STATUE: - DrawGroundSprite(SPR_CONCRETE_GROUND, PAL_NONE); - - if (IsInvisibilitySet(TO_STRUCTURES)) break; - - AddSortableSpriteToDraw(SPR_STATUE_COMPANY, COMPANY_SPRITE_COLOUR(GetTileOwner(ti->tile)), ti->x, ti->y, 16, 16, 25, ti->z, IsTransparencySet(TO_STRUCTURES)); - break; + if (type == UNMOVABLE_HQ) { + uint8 offset = GetUnmovableOffset(ti->tile); + dts = &_unmovable_hq[GetCompanyHQSize(ti->tile) << 2 | GB(offset, 4, 1) | GB(offset, 0, 1) << 1]; + } else { + dts = &_unmovables[type]; + } - case UNMOVABLE_OWNED_LAND: - DrawClearLandTile(ti, 0); + DrawGroundSprite(dts->ground.sprite, palette); + if (!IsInvisibilitySet(TO_STRUCTURES)) { + const DrawTileSeqStruct *dtss; + foreach_draw_tile_seq(dtss, dts->seq) { AddSortableSpriteToDraw( - SPR_BOUGHT_LAND, COMPANY_SPRITE_COLOUR(GetTileOwner(ti->tile)), - ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSlopeZ(ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2) + dtss->image.sprite, palette, + ti->x + dtss->delta_x, ti->y + dtss->delta_y, + dtss->size_x, dtss->size_y, + dtss->size_z, ti->z + dtss->delta_z, + IsTransparencySet(TO_STRUCTURES) ); - DrawBridgeMiddle(ti); - break; - - case UNMOVABLE_HQ: { - assert(IsCompanyHQ(ti->tile)); - - PaletteID palette = COMPANY_SPRITE_COLOUR(GetTileOwner(ti->tile)); - - uint8 offset = GetUnmovableOffset(ti->tile); - const DrawTileSprites *t = &_unmovable_display_datas[GetCompanyHQSize(ti->tile) << 2 | GB(offset, 4, 1) | GB(offset, 0, 1) << 1]; - DrawGroundSprite(t->ground.sprite, palette); - - if (IsInvisibilitySet(TO_STRUCTURES)) break; - - const DrawTileSeqStruct *dtss; - foreach_draw_tile_seq(dtss, t->seq) { - AddSortableSpriteToDraw( - dtss->image.sprite, palette, - ti->x + dtss->delta_x, ti->y + dtss->delta_y, - dtss->size_x, dtss->size_y, - dtss->size_z, ti->z + dtss->delta_z, - IsTransparencySet(TO_STRUCTURES) - ); - } - break; } } + + if (type == UNMOVABLE_OWNED_LAND) DrawBridgeMiddle(ti); } static uint GetSlopeZ_Unmovable(TileIndex tile, uint x, uint y) -- cgit v1.2.3-54-g00ecf