mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-07 06:39:08 +00:00
(svn r12125) -Codechange: Remove redundant signal lookup table, and document why normal electric signals are handled specially.
This commit is contained in:
parent
c2bad6d22c
commit
63e306006b
@ -1433,27 +1433,20 @@ static void DrawSingleSignal(TileIndex tile, Track track, byte condition, uint i
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SpriteID SignalBase[2][2][4] = {
|
|
||||||
{ /* Signals on left side */
|
|
||||||
{ 0x4FB, 0x1323, 0x1333, 0x1343}, /* light signals */
|
|
||||||
{ 0x1353, 0x1363, 0x1373, 0x1383} /* semaphores */
|
|
||||||
}, { /* Signals on right side */
|
|
||||||
{ 0x4FB, 0x1323, 0x1333, 0x1343}, /* light signals */
|
|
||||||
{ 0x1446, 0x1456, 0x1466, 0x1476} /* semaphores */
|
|
||||||
/* | | | | */
|
|
||||||
/* normal, entry, exit, combo */
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
uint x = TileX(tile) * TILE_SIZE + SignalPositions[side][pos].x;
|
uint x = TileX(tile) * TILE_SIZE + SignalPositions[side][pos].x;
|
||||||
uint y = TileY(tile) * TILE_SIZE + SignalPositions[side][pos].y;
|
uint y = TileY(tile) * TILE_SIZE + SignalPositions[side][pos].y;
|
||||||
|
|
||||||
SpriteID sprite;
|
SpriteID sprite;
|
||||||
|
|
||||||
if (GetSignalType(tile, track) == SIGTYPE_NORMAL && GetSignalVariant(tile, track) == SIG_ELECTRIC) {
|
SignalType type = GetSignalType(tile, track);
|
||||||
sprite = SignalBase[side][GetSignalVariant(tile, track)][GetSignalType(tile, track)] + image + condition;
|
SignalVariant variant = GetSignalVariant(tile, track);
|
||||||
|
|
||||||
|
if (type == SIGTYPE_NORMAL && variant == SIG_ELECTRIC) {
|
||||||
|
/* Normal electric signals are picked from original sprites. */
|
||||||
|
sprite = SPR_ORIGINAL_SIGNALS_BASE + image + condition;
|
||||||
} else {
|
} else {
|
||||||
sprite = SPR_SIGNALS_BASE + (GetSignalType(tile, track) - 1) * 16 + GetSignalVariant(tile, track) * 64 + image + condition;
|
/* All other signals are picked from add on sprites. */
|
||||||
|
sprite = SPR_SIGNALS_BASE + (type - 1) * 16 + variant * 64 + image + condition;
|
||||||
}
|
}
|
||||||
|
|
||||||
AddSortableSpriteToDraw(sprite, PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSaveSlopeZ(x, y, track));
|
AddSortableSpriteToDraw(sprite, PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSaveSlopeZ(x, y, track));
|
||||||
|
@ -263,6 +263,8 @@ enum Sprites {
|
|||||||
SPR_MONO_SNOW_OFFSET = 26,
|
SPR_MONO_SNOW_OFFSET = 26,
|
||||||
SPR_MGLV_SNOW_OFFSET = 26,
|
SPR_MGLV_SNOW_OFFSET = 26,
|
||||||
|
|
||||||
|
SPR_ORIGINAL_SIGNALS_BASE = 1275,
|
||||||
|
|
||||||
SPR_RAIL_SINGLE_Y = 1005,
|
SPR_RAIL_SINGLE_Y = 1005,
|
||||||
SPR_RAIL_SINGLE_X = 1006,
|
SPR_RAIL_SINGLE_X = 1006,
|
||||||
SPR_RAIL_SINGLE_NORTH = 1007,
|
SPR_RAIL_SINGLE_NORTH = 1007,
|
||||||
|
Loading…
Reference in New Issue
Block a user