1
0
Fork 0

(svn r4375) -Codechange: Move the signal drawing bit to an own function and rename DrawSignalHelper to DrawSingleSignal

release/0.5
celestar 2006-04-12 08:06:08 +00:00
parent 4615a26552
commit a8d4285ec2
1 changed files with 40 additions and 38 deletions

View File

@ -1052,7 +1052,7 @@ static int32 ClearTile_Track(TileIndex tile, byte flags)
#include "table/track_land.h"
static void DrawSignalHelper(TileIndex tile, byte condition, uint32 image_and_pos)
static void DrawSingleSignal(TileIndex tile, byte condition, uint32 image_and_pos)
{
bool otherside = _opt.road_side & _patches.signal_side;
static const Point SignalPositions[2][12] = {
@ -1281,35 +1281,15 @@ static void DrawTrackBits(TileInfo* ti, TrackBits track, bool earth, bool snow,
}
static void DrawTile_Track(TileInfo *ti)
static void DrawSignals(TileIndex tile, TrackBits rails)
{
const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
PalSpriteID image;
_drawtile_track_palette = SPRITE_PALETTE(PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile)));
if (GetRailTileType(ti->tile) != RAIL_TYPE_DEPOT_WAYPOINT) {
TrackBits rails = GetTrackBits(ti->tile);
bool earth = (_m[ti->tile].m2 & RAIL_MAP2LO_GROUND_MASK) == RAIL_GROUND_BROWN;
bool snow = (_m[ti->tile].m2 & RAIL_MAP2LO_GROUND_MASK) == RAIL_GROUND_ICE_DESERT;
DrawTrackBits(ti, rails, earth, snow, false);
if (_display_opt & DO_FULL_DETAIL) {
_detailed_track_proc[_m[ti->tile].m2 & RAIL_MAP2LO_GROUND_MASK](ti);
}
/* draw signals also? */
if (GetRailTileType(ti->tile) != RAIL_TYPE_SIGNALS) return;
{
byte m23;
m23 = (_m[ti->tile].m3 >> 4) | (_m[ti->tile].m2 & 0xF0);
#define HAS_SIGNAL(x) (m23 & (byte)(0x1 << (x)))
#define ISON_SIGNAL(x) (m23 & (byte)(0x10 << (x)))
#define MAYBE_DRAW_SIGNAL(x,y,z) if (HAS_SIGNAL(x)) DrawSignalHelper(ti->tile, ISON_SIGNAL(x), ((y-0x4FB) << 4)|(z))
#define MAYBE_DRAW_SIGNAL(x,y,z) if (HAS_SIGNAL(x)) DrawSingleSignal(tile, ISON_SIGNAL(x), ((y-0x4FB) << 4)|(z))
byte m23;
m23 = (_m[tile].m3 >> 4) | (_m[tile].m2 & 0xF0);
if (!(rails & TRACK_BIT_Y)) {
if (!(rails & TRACK_BIT_X)) {
@ -1338,6 +1318,28 @@ static void DrawTile_Track(TileInfo *ti)
MAYBE_DRAW_SIGNAL(2, 0x501, 11);
}
}
static void DrawTile_Track(TileInfo *ti)
{
const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
PalSpriteID image;
_drawtile_track_palette = SPRITE_PALETTE(PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile)));
if (GetRailTileType(ti->tile) != RAIL_TYPE_DEPOT_WAYPOINT) {
TrackBits rails = GetTrackBits(ti->tile);
bool earth = (_m[ti->tile].m2 & RAIL_MAP2LO_GROUND_MASK) == RAIL_GROUND_BROWN;
bool snow = (_m[ti->tile].m2 & RAIL_MAP2LO_GROUND_MASK) == RAIL_GROUND_ICE_DESERT;
DrawTrackBits(ti, rails, earth, snow, false);
if (_display_opt & DO_FULL_DETAIL) {
_detailed_track_proc[_m[ti->tile].m2 & RAIL_MAP2LO_GROUND_MASK](ti);
}
/* draw signals also? */
if (GetRailTileType(ti->tile) == RAIL_TYPE_SIGNALS) DrawSignals(ti->tile, rails);
} else {
/* draw depots / waypoints */
const DrawTrackSeqStruct *drss;