(svn r22108) -Codechange: Replace some magic with some other magic though less easy to break.

This commit is contained in:
frosch 2011-02-19 14:51:46 +00:00
parent 9f8a684460
commit 415724ff38
2 changed files with 24 additions and 20 deletions

View File

@ -20,32 +20,34 @@ struct WaterDrawTileStruct {
};
#define BEGIN(image) { 0, 0, 0, 0, 0, 0, image }
#define END(y) { 0x80, y, 0, 0, 0, 0, 0 }
/** Constructor macro for a terminating WaterDrawTileStruct entry in an array */
#define TILE_SEQ_END() { 0x80, 0, 0, 0, 0, 0, 0 }
static const WaterDrawTileStruct _shipdepot_display_seq_1[] = {
BEGIN(0xFDD),
{ 0, 15, 0, 16, 1, 0x14, 0xFE8 | (1 << PALETTE_MODIFIER_COLOUR) },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _shipdepot_display_seq_2[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 16, 1, 0x14, 0xFEA },
{ 0, 15, 0, 16, 1, 0x14, 0xFE6 | (1 << PALETTE_MODIFIER_COLOUR) },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _shipdepot_display_seq_3[] = {
BEGIN(0xFDD),
{ 15, 0, 0, 1, 0x10, 0x14, 0xFE9 | (1 << PALETTE_MODIFIER_COLOUR) },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _shipdepot_display_seq_4[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 1, 16, 0x14, 0xFEB },
{ 15, 0, 0, 1, 16, 0x14, 0xFE7 | (1 << PALETTE_MODIFIER_COLOUR) },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct * const _shipdepot_display_seq[] = {
@ -59,84 +61,84 @@ static const WaterDrawTileStruct _lock_display_seq_0[] = {
BEGIN(1),
{ 0, 0, 0, 0x10, 1, 0x14, 0 + 1 },
{ 0, 0xF, 0, 0x10, 1, 0x14, 4 + 1 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_1[] = {
BEGIN(0),
{ 0, 0, 0, 1, 0x10, 0x14, 0 },
{ 0xF, 0, 0, 1, 0x10, 0x14, 4 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_2[] = {
BEGIN(2),
{ 0, 0, 0, 0x10, 1, 0x14, 0 + 2 },
{ 0, 0xF, 0, 0x10, 1, 0x14, 4 + 2 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_3[] = {
BEGIN(3),
{ 0, 0, 0, 1, 0x10, 0x14, 0 + 3 },
{ 0xF, 0, 0, 1, 0x10, 0x14, 4 + 3 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_0b[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 0x10, 1, 0x14, 8 + 1 },
{ 0, 0xF, 0, 0x10, 1, 0x14, 12 + 1 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_1b[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 0x1, 0x10, 0x14, 8 },
{ 0xF, 0, 0, 0x1, 0x10, 0x14, 12 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_2b[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 0x10, 1, 0x14, 8 + 2 },
{ 0, 0xF, 0, 0x10, 1, 0x14, 12 + 2 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_3b[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 1, 0x10, 0x14, 8 + 3 },
{ 0xF, 0, 0, 1, 0x10, 0x14, 12 + 3 },
END(0)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_0t[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 0x10, 1, 0x14, 16 + 1 },
{ 0, 0xF, 0, 0x10, 1, 0x14, 20 + 1 },
END(8)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_1t[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 0x1, 0x10, 0x14, 16 },
{ 0xF, 0, 0, 0x1, 0x10, 0x14, 20 },
END(8)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_2t[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 0x10, 1, 0x14, 16 + 2 },
{ 0, 0xF, 0, 0x10, 1, 0x14, 20 + 2 },
END(8)
TILE_SEQ_END()
};
static const WaterDrawTileStruct _lock_display_seq_3t[] = {
BEGIN(0xFDD),
{ 0, 0, 0, 1, 0x10, 0x14, 16 + 3 },
{ 0xF, 0, 0, 1, 0x10, 0x14, 20 + 3 },
END(8)
TILE_SEQ_END()
};
static const WaterDrawTileStruct * const _lock_display_seq[] = {
@ -157,4 +159,4 @@ static const WaterDrawTileStruct * const _lock_display_seq[] = {
};
#undef BEGIN
#undef END
#undef TILE_SEQ_END

View File

@ -641,7 +641,8 @@ static void DrawWaterTileStruct(const TileInfo *ti, const WaterDrawTileStruct *w
/** Draw a lock tile. */
static void DrawWaterLock(const TileInfo *ti)
{
const WaterDrawTileStruct *wdts = _lock_display_seq[GetSection(ti->tile)];
int section = GetSection(ti->tile);
const WaterDrawTileStruct *wdts = _lock_display_seq[section];
/* Draw ground sprite. */
SpriteID image = wdts++->image;
@ -669,7 +670,8 @@ static void DrawWaterLock(const TileInfo *ti)
if (base == 0) {
/* If no custom graphics, use defaults. */
base = SPR_LOCK_BASE;
zoffs = ti->z > wdts[3].delta_y ? 24 : 0;
uint8 z_threshold = section >= 8 ? 8 : 0;
zoffs = ti->z > z_threshold ? 24 : 0;
}
DrawWaterTileStruct(ti, wdts, base, zoffs, PAL_NONE, CF_LOCKS);