(svn r20946) -Codechange: Add helper function to draw pillar columns.

pull/155/head
frosch 14 years ago
parent b7ebdb4432
commit 013aba00c3

@ -839,6 +839,26 @@ static inline void DrawPillar(const PalSpriteID *psid, int x, int y, int z, int
AddSortableSpriteToDraw(psid->sprite, psid->pal, x, y, w, h, BB_HEIGHT_UNDER_BRIDGE - PILLAR_Z_OFFSET, z, IsTransparencySet(TO_BRIDGES), 0, 0, -PILLAR_Z_OFFSET);
}
/**
* Draw two bridge pillars (north and south).
* @param z_bottom Bottom Z
* @param z_top Top Z
* @param psid Pillarsprite
* @param x Pillar X
* @param y Pillar Y
* @param w Bounding box size in X direction
* @param h Bounding box size in Y direction
* @return Reached Z at the bottom
*/
static int DrawPillarColumn(int z_bottom, int z_top, const PalSpriteID *psid, int x, int y, int w, int h)
{
int cur_z;
for (cur_z = z_top; cur_z >= z_bottom; cur_z -= TILE_HEIGHT) {
DrawPillar(psid, x, y, cur_z, w, h);
}
return cur_z;
}
/**
* Draws the pillars under high bridges.
*
@ -888,16 +908,12 @@ static void DrawBridgePillars(const PalSpriteID *psid, const TileInfo *ti, Axis
int x_back = x - back_pillar_offset[axis];
int y_back = y - back_pillar_offset[OtherAxis(axis)];
for (int cur_z = z_bridge; cur_z >= front_height || cur_z >= back_height; cur_z -= TILE_HEIGHT) {
/* Draw front facing pillar */
if (cur_z >= front_height) {
DrawPillar(psid, x, y, cur_z, w, h);
}
/* Draw front pillars */
DrawPillarColumn(front_height, z_bridge, psid, x, y, w, h);
/* Draw back facing pillar, but not the highest part directly under the bridge-floor */
if (drawfarpillar && cur_z >= back_height && cur_z < z_bridge - (int)TILE_HEIGHT) {
DrawPillar(psid, x_back, y_back, cur_z, w, h);
}
/* Draw back pillars, skip top two parts, which are hidden by the bridge */
if (drawfarpillar) {
DrawPillarColumn(back_height, z_bridge - 2 * (int)TILE_HEIGHT, psid, x_back, y_back, w, h);
}
}

Loading…
Cancel
Save