Graphically indicate restricted signals by recolouring the signal post.
Recolour signal posts from grey to blue for restricted signals which are not semaphores and are not custom sprites.
This commit is contained in:
BIN
bin/data/tracerestrict.grf
Normal file
BIN
bin/data/tracerestrict.grf
Normal file
Binary file not shown.
@@ -170,6 +170,9 @@ static void LoadSpriteTables()
|
|||||||
_palette_remap_grf[i] = (PAL_DOS != used_set->palette);
|
_palette_remap_grf[i] = (PAL_DOS != used_set->palette);
|
||||||
LoadGrfFile(used_set->files[GFT_BASE].filename, 0, i++);
|
LoadGrfFile(used_set->files[GFT_BASE].filename, 0, i++);
|
||||||
|
|
||||||
|
/* Tracerestrict sprites. */
|
||||||
|
LoadGrfFile("tracerestrict.grf", SPR_TRACERESTRICT_BASE, i++);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The second basic file always starts at the given location and does
|
* The second basic file always starts at the given location and does
|
||||||
* contain a different amount of sprites depending on the "type"; DOS
|
* contain a different amount of sprites depending on the "type"; DOS
|
||||||
|
@@ -1862,6 +1862,7 @@ static void DrawSingleSignal(TileIndex tile, const RailtypeInfo *rti, Track trac
|
|||||||
SignalVariant variant = GetSignalVariant(tile, track);
|
SignalVariant variant = GetSignalVariant(tile, track);
|
||||||
|
|
||||||
SpriteID sprite = GetCustomSignalSprite(rti, tile, type, variant, condition);
|
SpriteID sprite = GetCustomSignalSprite(rti, tile, type, variant, condition);
|
||||||
|
bool is_custom_sprite = (sprite != 0);
|
||||||
if (sprite != 0) {
|
if (sprite != 0) {
|
||||||
sprite += image;
|
sprite += image;
|
||||||
} else {
|
} else {
|
||||||
@@ -1870,8 +1871,20 @@ static void DrawSingleSignal(TileIndex tile, const RailtypeInfo *rti, Track trac
|
|||||||
sprite += type * 16 + variant * 64 + image * 2 + condition + (type > SIGTYPE_LAST_NOPBS ? 64 : 0);
|
sprite += type * 16 + variant * 64 + image * 2 + condition + (type > SIGTYPE_LAST_NOPBS ? 64 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!is_custom_sprite && variant == SIG_ELECTRIC && IsRestrictedSignal(tile) && GetExistingTraceRestrictProgram(tile, track) != NULL) {
|
||||||
|
if (type == SIGTYPE_PBS || type == SIGTYPE_PBS_ONEWAY) {
|
||||||
|
static const SubSprite lower_part { -50, -10, 50, 50 };
|
||||||
|
static const SubSprite upper_part { -50, -50, 50, -11 };
|
||||||
|
|
||||||
|
AddSortableSpriteToDraw(sprite, SPR_TRACERESTRICT_BASE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSaveSlopeZ(x, y, track), false, 0, 0, 0, &lower_part);
|
||||||
|
AddSortableSpriteToDraw(sprite, PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSaveSlopeZ(x, y, track), false, 0, 0, 0, &upper_part);
|
||||||
|
} else {
|
||||||
|
AddSortableSpriteToDraw(sprite, SPR_TRACERESTRICT_BASE + 1, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSaveSlopeZ(x, y, track));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
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));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static uint32 _drawtile_track_palette;
|
static uint32 _drawtile_track_palette;
|
||||||
|
|
||||||
|
@@ -296,8 +296,12 @@ static const uint16 EMPTY_BOUNDING_BOX_SPRITE_COUNT = 1;
|
|||||||
static const SpriteID SPR_PALETTE_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT;
|
static const SpriteID SPR_PALETTE_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT;
|
||||||
static const uint16 PALETTE_SPRITE_COUNT = 1;
|
static const uint16 PALETTE_SPRITE_COUNT = 1;
|
||||||
|
|
||||||
|
/* Tracerestrict sprites */
|
||||||
|
static const SpriteID SPR_TRACERESTRICT_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT;
|
||||||
|
static const uint16 TRACERESTRICT_SPRITE_COUNT = 2;
|
||||||
|
|
||||||
/* From where can we start putting NewGRFs? */
|
/* From where can we start putting NewGRFs? */
|
||||||
static const SpriteID SPR_NEWGRFS_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT;
|
static const SpriteID SPR_NEWGRFS_BASE = SPR_TRACERESTRICT_BASE + TRACERESTRICT_SPRITE_COUNT;
|
||||||
|
|
||||||
/* Manager face sprites */
|
/* Manager face sprites */
|
||||||
static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face
|
static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face
|
||||||
|
Reference in New Issue
Block a user