summaryrefslogtreecommitdiff
path: root/src/unmovable_cmd.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-08-03 11:35:57 +0000
committerrubidium <rubidium@openttd.org>2010-08-03 11:35:57 +0000
commitfbde46c028bb8c7f35b24d803f0d1bfae5039a67 (patch)
treeea1701c1c90e6209f01f145db61f3178a860925b /src/unmovable_cmd.cpp
parent3bfe26c69d10c8395057a0fe168906182b563769 (diff)
downloadopenttd-fbde46c028bb8c7f35b24d803f0d1bfae5039a67.tar.xz
(svn r20338) -Codechange: unify the unmovable tile drawing
Diffstat (limited to 'src/unmovable_cmd.cpp')
-rw-r--r--src/unmovable_cmd.cpp75
1 files changed, 22 insertions, 53 deletions
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)