/* * Project of GarryG with help from Quast65. * This file is designed from various GPL-licensed tracksets. * This set is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 or newer. * This set is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this set. If not, see . */ /********************************************** * DEFINE THE NEWGRF AND PARAMETERS **********************************************/ grf { grfid: "\47\47\10\31"; name: string(STR_GRF_NAME); desc: string(STR_GRF_DESCRIPTION); url: string(STR_GRF_URL); version: 1; min_compatible_version: 1; //parameters param 0 { param_fences { name: string(STR_PARAM_NAME_FENCES); desc: string(STR_PARAM_DESC_FENCES); min_value: 0; max_value: 1; def_value: 0; names: { 0: string(STR_PARAM_FENCES_CUSTOM); 1: string(STR_PARAM_FENCES_NONE); }; } } param 1 { param_original_signals { type: bool; name: string(STR_PARAM_NAME_ORIGINAL_SIGNALS); desc: string(STR_PARAM_DESC_ORIGINAL_SIGNALS); } } param 2 { param_original_catenarypylons{ type: bool; name: string(STR_PARAM_NAME_ORIGINAL_PYLONS); desc: string(STR_PARAM_DESC_ORIGINAL_PYLONS); } } param 3 { param_original_catenarywires{ type: bool; name: string(STR_PARAM_NAME_ORIGINAL_WIRES); desc: string(STR_PARAM_DESC_ORIGINAL_WIRES); } } param 4 { param_alpine { name: string(STR_PARAM_NAME_ALPINE); desc: string(STR_PARAM_DESC_ALPINE); min_value: 0; max_value: 1; def_value: 0; names: { 0: string(STR_PARAM_ALPINE_NONE); 1: string(STR_PARAM_ALPINE_CUSTOM); }; } } param 5 { param_modern_lc_year { type: int; min_value: 0; max_value: 5000000; def_value: 1965; name: string(STR_PARAM_LCYEAR); desc: string(STR_PARAM_LCYEAR_DESC); } } param 6 { param_lc_type { type: int; min_value: 0; max_value: 1; def_value: 0; name: string(STR_PARAM_LC_TYPE); desc: string(STR_PARAM_LC_TYPE_DESC); names : { 0: string(STR_PARAM_LC_NORMAL); 1: string(STR_PARAM_LC_PLAIN); }; } } } /********************************************** * GENERAL TEMPLATES **********************************************/ //Overlay template template_overlay() { //left_x, upper_y, width, height, offset_x, offset_y [ 1, 1, 64, 31, -31, 0] [ 66, 1, 64, 31, -31, 0] [ 131, 1, 64, 31, -31, 0] [ 196, 1, 64, 31, -31, 0] [ 261, 1, 64, 31, -31, 0] [ 326, 1, 64, 31, -31, 0] //Slopes [ 391, 1, 64, 38, -31, -8] [ 456, 1, 64, 22, -31, 0] [ 521, 1, 64, 22, -31, 0] [ 586, 1, 64, 38, -31, -8] } //Underlay template template_underlay() { //left_x, upper_y, width, height, offset_x, offset_y [ 1, 1, 64, 31, -31, 0] [ 66, 1, 64, 31, -31, 0] [ 131, 1, 64, 31, -31, 0] [ 196, 1, 64, 31, -31, 0] [ 261, 1, 64, 31, -31, 0] [ 326, 1, 64, 31, -31, 0] //Slopes [ 391, 1, 64, 38, -31, -8] [ 456, 1, 64, 22, -31, 0] [ 521, 1, 64, 22, -31, 0] [ 586, 1, 64, 38, -31, -8] //Crossing [ 1, 49, 64, 31, -31, 0] //Ground for switches [ 66, 49, 64, 31, -31, 0] [ 131, 49, 64, 31, -31, 0] [ 196, 49, 64, 31, -31, 0] [ 261, 49, 64, 31, -31, 0] [ 326, 49, 64, 31, -31, 0] } //Tunnel Tracks, to be used for trackoverlay in vanilla tunnels or tunnels provided by a tunnel-replacement GRF template template_tunneltracks() { //left_x, upper_y, width, height, offset_x, offset_y [ 3, 1, 64, 31, -31, 0] [ 68, 1, 64, 31, -31, 0] [ 3, 64, 64, 31, -31, 0] [ 68, 64, 64, 31, -31, 0] } /******************************************* //Custom Tunnel *******************************************/ template tmpl_tunnel_overlaytracks() { //left_x, upper_y, width, height, offset_x, offset_y [ 10, 50, 64, 50, -31, -19] [158, 50, 64, 50, -31, -19] [306, 50, 64, 50, -31, -19] [454, 50, 64, 50, -31, -19] } template tmpl_tunnel_overlays() { //left_x, upper_y, width, height, offset_x, offset_y [ 84, 50, 64, 50, -31, -49] [232, 50, 64, 50, -31, -49] [380, 50, 64, 50, -31, -49] [528, 50, 64, 50, -31, -49] } //Replace trackless tunnelgraphics from OpenGFX-extra template tmpl_trackless_tunnel(y) { [ 10, y, 64, 39, -31, -8] [ 84, y, 64, 39, -31, -38] [158, y, 64, 23, -31, 0] [232, y, 64, 23, -31, -30] [306, y, 64, 23, -31, 0] [380, y, 64, 23, -31, -30] [454, y, 64, 39, -31, -8] [528, y, 64, 39, -31, -38] } if (param[4] == 1) { replacenew(RAILTYPE_TUNNELS, "gfx/tracklesstunnel-overlay-sprites.png") { tmpl_trackless_tunnel(10) tmpl_trackless_tunnel(265) } } else { if (climate == CLIMATE_TROPICAL) { replacenew(RAILTYPE_TUNNELS, "gfx/tracklesstunnel-overlay-sprites.png") { tmpl_trackless_tunnel(180) tmpl_trackless_tunnel(350) } } else { replacenew(RAILTYPE_TUNNELS, "gfx/tracklesstunnel-overlay-sprites.png") { tmpl_trackless_tunnel(10) tmpl_trackless_tunnel(265) } if (climate == CLIMATE_ARCTIC) { replacenew(RAILTYPE_TUNNELS, "gfx/tracklesstunnel-overlay-sprites.png") { tmpl_trackless_tunnel(95) } } if (climate == CLIMATE_TOYLAND) { replacenew(RAILTYPE_TUNNELS, "gfx/tracklesstunnel-overlay-sprites.png") { tmpl_trackless_tunnel(435) } } } } /******************************************* //Bridge Surface Tracks *******************************************/ template template_bridgetracks() { //left_x, upper_y, width, height, offset_x, offset_y [ 1, 1, 64, 31, -31, 0] [ 66, 1, 64, 31, -31, 0] //Slopes [ 131, 1, 64, 39, -31, -8] [ 196, 1, 64, 23, -31, 0] [ 261, 1, 64, 23, -31, 0] [ 326, 1, 64, 39, -31, -8] } /******************************************* // railtype level crossings *******************************************/ template tmpl_level_crossing_railtypes_empty() { [ 1,1, 64,31, -31, 0] [ 66,1, 64,31, -31, 0] } //Level Crossings (Closed) template template_levcrossclosed() { //left_x, upper_y, width, height, offset_x, offset_y [ 1, 1, 64, 31, -31, 0] [ 66, 1, 64, 31, -31, 0] [ 1, 115, 64, 50, -31, -19] [ 66, 115, 64, 50, -31, -19] [ 1, 50, 64, 50, -57, -32] [196, 115, 64, 50, -57, -32] [131, 115, 64, 50, -5, -32] [ 66, 50, 64, 50, -5, -32] [131, 50, 64, 50, -31, -45] [196, 50, 64, 50, -31, -45] } //Level Crossings (Open) template template_levcrossopen() { //left_x, upper_y, width, height, offset_x, offset_y [ 1, 1, 64, 31, -31, 0] [ 66, 1, 64, 31, -31, 0] [ 1, 245, 64, 50, -31, -19] [ 66, 245, 64, 50, -31, -19] [ 1, 180, 64, 50, -57, -32] [196, 245, 64, 50, -57, -32] [131, 245, 64, 50, -5, -32] [ 66, 180, 64, 50, -5, -32] [131, 180, 64, 50, -31, -45] [196, 180, 64, 50, -31, -45] } /******************************************* //Fences *******************************************/ template template_fences() { //left_x, upper_y, width, height, offset_x, offset_y [ 2, 5, 33, 22, -33, -8] //Back of Track [ 50, 5, 33, 22, 3, -7] //Back of Track [ 98, 5, 2, 38, 0, -22] //Right of Track [114, 5, 65, 6, -31, -6] //Bottom of Track [194, 5, 33, 15, -33, -9] //Back of Track (slope) [242, 5, 33, 15, 3, -8] //Back of Track (slope) [290, 5, 33, 31, -33, -17] //Back of Track (slope) [338, 5, 33, 31, 3, -16] //Back of Track (slope) [ 2, 50, 33, 22, -29, -6] //Front of Track [ 50, 50, 33, 22, -1, -5] //Front of Track [ 98, 50, 2, 38, 1, -22] //Left of Track [114, 50, 65, 6, -31, -6] //Top of Track [194, 50, 33, 15, -29, -7] //Front of Track (slope) [242, 50, 33, 15, -1, -6] //Front of Track (slope) [290, 50, 33, 31, -29, -15] //Front of Track (slope) [338, 50, 33, 31, -1, -14] //Front of Track (slope) } //No Fences template template_nofences() { //left_x, upper_y, width, height, offset_x, offset_y [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] [ 0,0,1,1,0,0] } spriteset(spriteset_nofences, "gfx/nofences.png") { template_nofences() } /******************************************* //Gui *******************************************/ template tmpl_gui() { //left_x, upper_y, width, height, offset_x, offset_y [ 0, 0, 20, 20, 0, 0] [ 25, 0, 20, 20, 0, 0] [ 50, 0, 20, 20, 0, 0] [ 75, 0, 20, 20, 0, 0] [100, 0, 20, 20, 0, 0] [125, 0, 20, 20, 0, 0] [150, 0, 20, 20, 0, 0] [175, 0, 20, 20, 0, 0] [200, 0, 32, 32, 0, 0] [250, 0, 32, 32, 0, 0] [300, 0, 32, 32, 0, 0] [350, 0, 32, 32, 0, 0] [400, 0, 32, 32, 0, 0] [450, 0, 32, 32, 0, 0] [500, 0, 32, 32, 0, 0] [550, 0, 32, 32, 0, 0] } /******************************************* //Depot *******************************************/ template template_depot() { //left_x, upper_y, width, height, offset_x, offset_y [ 42, 85, 24, 25, 9, -6] [ 2, 24, 64, 58, -9, -42] [ 82, 85, 24, 25, -31, -6] [ 82, 24, 64, 58, -53, -42] [ 242, 24, 64, 58, -53, -42] [ 162, 24, 64, 58, -9, -42] } template template_depot_snow() { //left_x, upper_y, width, height, offset_x, offset_y [ 42, 85, 24, 25, 9, -6] [ 2, 24, 64, 58, -9, -42] [ 82, 85, 24, 25, -31, -6] [ 82, 24, 64, 58, -53, -42] [ 242, 24, 64, 58, -53, -42] [ 162, 24, 64, 58, -9, -42] } /******************************************** //Signals *******************************************/ //Semaphores template template_semaphore_signals(y) { //[left_x, upper_y, width, height, offset_x, offset_y] [ 0 , y, 20, 30, -10, -30] //sw [ 30, y, 20, 30, -10, -30] //ne [ 60, y, 20, 30, -10, -30] //nw [ 90, y, 20, 30, -10, -30] //se [ 120, y, 20, 30, -10, -30] //e [ 150, y, 20, 30, -10, -30] //w [ 180, y, 20, 30, -10, -28] //s [ 210, y, 20, 30, -10, -28] //n } //Light Signals template template_light_signals(y) { //[left_x, upper_y, width, height, offset_x, offset_y] [ 0 , y, 20, 30, -10, -30] //sw [ 30, y, 20, 30, -10, -30] //ne [ 60, y, 20, 30, -10, -30] //nw [ 90, y, 20, 30, -10, -30] //se [ 120, y, 20, 30, -10, -30] //e [ 150, y, 20, 30, -10, -30] //w [ 180, y, 20, 30, -10, -28] //s [ 210, y, 20, 30, -10, -28] //n } /********************************************** //Catenarypylons **********************************************/ template template_catenarypylons() { //[left_x, upper_y, width, height, offset_x, offset_y] [ 10, 20, 14, 30, -11, -28] [ 34, 20, 14, 30, 1, -28] [ 58, 20, 14, 30, -1, -28] [ 82, 20, 14, 30, -13, -28] [ 106, 20, 14, 30, -6, -29] [ 130, 20, 14, 30, -6, -28] [ 154, 20, 14, 30, 0, -29] [ 178, 20, 14, 30, -13, -29] } //Catenarypylons template template_catenarydoublepylons() { //[left_x, upper_y, width, height, offset_x, offset_y] [ 4, 28, 14, 32, -11, -30] [ 20, 17, 40, 43, 1, -41] [ 62, 28, 14, 32, -1, -30] [ 78, 17, 40, 43, -39, -41] [ 120, 28, 14, 32, -6, -39] [ 136, 16, 14, 44, -6, -43] [ 152, 28, 28, 32, 0, -31] [ 181, 28, 27, 32, -26, -31] } //Catenarypylons template template_catenarymultipylons() { //[left_x, upper_y, width, height, offset_x, offset_y] [ 2, 22, 42, 38, -29, -27] //ok [ 46, 11, 52, 49, -5, -44] //ok [ 100, 22, 42, 38, -9, -27] //ok [ 144, 11, 52, 49, -43, -44] //ok [ 198, 28, 14, 32, -6, -43] // [ 214, 12, 14, 44, -6, -47] // [ 230, 28, 44, 32, -7, -31] // [ 276, 28, 44, 32, -33, -31] // } //Catenarypylons template template_catenarycentrepylons() { //[left_x, upper_y, width, height, offset_x, offset_y] [ 2, 22, 42, 38, -25, -29] //ok [ 46, 11, 52, 49, -13, -40] //ok [ 100, 22, 42, 38, -15, -29] //ok [ 144, 11, 52, 49, -37, -40] //ok [ 198, 28, 14, 32, -6, -43] // [ 214, 12, 14, 44, -6, -47] // [ 230, 28, 44, 32, -20, -31] //ok [ 276, 28, 44, 32, -28, -31] //ok } /********************************************** //Catenarywires **********************************************/ template template_catenarywires() { //[left_x, upper_y, width, height, offset_x, offset_y] [ 10, 100, 64, 42, -45, -20] [ 100, 100, 64, 42, -17, -20] [ 200, 100, 32, 11, 0, -12] //-1 [ 300, 100, 1, 21, 1, -8] //0 [ 10, 200, 64, 50, -45, -21] [ 100, 200, 64, 34, -17, -10] [ 200, 200, 64, 34, -45, -10] [ 300, 200, 64, 50, -17, -21] [ 10, 300, 64, 42, -45, -20] [ 100, 300, 64, 42, -17, -20] [ 200, 300, 32, 11, 0, -12] [ 300, 300, 1, 21, 1, -8] //0 [ 10, 400, 64, 50, -45, -21] [ 100, 400, 64, 34, -17, -10] [ 200, 400, 64, 34, -45, -10] [ 300, 400, 64, 50, -17, -21] [ 10, 500, 64, 42, -45, -20] [ 100, 500, 64, 42, -17, -20] [ 200, 500, 32, 11, 0, -12] [ 300, 500, 1, 21, 1, -8] //0 [ 10, 600, 64, 50, -45, -21] [ 100, 600, 64, 34, -17, -10] [ 200, 600, 64, 34, -45, -10] [ 300, 600, 64, 50, -17, -21] [ 10, 700, 64, 42, -45, -20] [ 100, 700, 64, 42, -17, -20] [ 200, 700, 64, 42, -45, -20] [ 300, 700, 64, 42, -17, -20] } railtypetable { "RAIL", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "TYTX", "ELRL", "ELTX", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "NSWE", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "NGRL", "NLOW", "NHIG", "NAAN", "NRAN", "NBAN", "ELNG", "ENLW", "ENHI", "NAAE", "NRAE", "NBAE", "MONO", "MGLV", "LAA3", "VOLO", "VOLE", "NG60", "NG6R", "NG6E" } /********************************************** * RAILTYPE SECTION **********************************************/ /********************************************** //* START NSWE **********************************************/ /********************************************** * NSWE Track overlays for different ground types: **********************************************/ spriteset(track_overlays_NSWE, "gfx/NSWE/Overlay_NSWE.png") { template_overlay() } spriteset(track_overlays_NSWE_arctic, "gfx/NSWE/Overlay_NSWE_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_NSWE, terrain_type) { TILETYPE_SNOW: track_overlays_NSWE_arctic; track_overlays_NSWE; } /********************************************** * NSWE Track underlays for different ground types: **********************************************/ spriteset(track_underlays_NSWE, "gfx/NSWE/Underlay_NSWE.png") { template_underlay() } spriteset(track_underlays_NSWE_arctic, "gfx/NSWE/Underlay_NSWE_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_NSWE, terrain_type) { TILETYPE_SNOW: track_underlays_NSWE_arctic; track_underlays_NSWE; } /********************************************** * NSWE Custom Tunnels **********************************************/ spriteset(tunnel_tracks_NSWE, "gfx/NSWE/Tunnel_NSWE.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_NSWE_snow, "gfx/NSWE/Tunnel_NSWE_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_NSWE, "gfx/NSWE/Tunnel_NSWE.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_NSWE_snow, "gfx/NSWE/Tunnel_NSWE_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_NSWE_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_NSWE_snow; tunnel_tracks_NSWE; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_NSWE_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_NSWE_snow; tunnel_overlay_NSWE; } /********************************************** * NSWE Level crossings: **********************************************/ spriteset(level_crossing_NSWE_empty, "gfx/NSWE/LevelCrossing_NSWE.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_NSWE_closed, "gfx/NSWE/LevelCrossing_NSWE.png") { template_levcrossclosed() } spriteset(level_crossing_NSWE_open, "gfx/NSWE/LevelCrossing_NSWE.png") { template_levcrossopen() } spriteset(level_crossing_NSWE_closed_snow, "gfx/NSWE/LevelCrossing_NSWE_snow.png") { template_levcrossclosed() } spriteset(level_crossing_NSWE_open_snow, "gfx/NSWE/LevelCrossing_NSWE_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_NSWE_closed_modern, "gfx/NSWE/LevelCrossingModern_NSWE.png") { template_levcrossclosed() } spriteset(level_crossing_NSWE_open_modern, "gfx/NSWE/LevelCrossingModern_NSWE.png") { template_levcrossopen() } spriteset(level_crossing_NSWE_closed_snow_modern, "gfx/NSWE/LevelCrossingModern_NSWE_snow.png") { template_levcrossclosed() } spriteset(level_crossing_NSWE_open_snow_modern, "gfx/NSWE/LevelCrossingModern_NSWE_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWE_closed_snow ) { 3: level_crossing_NSWE_closed_snow; 1: level_crossing_NSWE_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWE_closed_snow ) { 2: level_crossing_NSWE_closed_snow; 2: level_crossing_NSWE_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWE_closed_snow) { 1: level_crossing_NSWE_closed_snow; 3: level_crossing_NSWE_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWE_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWE_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWE_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWE_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWE_closed_snow; level_crossing_NSWE_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWE_open_snow ) { 3: level_crossing_NSWE_open_snow; 1: level_crossing_NSWE_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWE_open_snow ) { 2: level_crossing_NSWE_open_snow; 2: level_crossing_NSWE_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWE_open_snow) { 1: level_crossing_NSWE_open_snow; 3: level_crossing_NSWE_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWE_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWE_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWE_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWE_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWE_open_snow; level_crossing_NSWE_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWE_closed ) { 3: level_crossing_NSWE_closed; 1: level_crossing_NSWE_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWE_closed ) { 2: level_crossing_NSWE_closed; 2: level_crossing_NSWE_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWE_closed) { 1: level_crossing_NSWE_closed; 3: level_crossing_NSWE_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWE_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWE_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWE_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWE_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWE_closed; level_crossing_NSWE_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWE_open ) { 3: level_crossing_NSWE_open; 1: level_crossing_NSWE_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWE_open ) { 2: level_crossing_NSWE_open; 2: level_crossing_NSWE_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWE_open) { 1: level_crossing_NSWE_open; 3: level_crossing_NSWE_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWE_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWE_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWE_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWE_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWE_open; level_crossing_NSWE_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_NSWE_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_NSWE_closed_snow_switch; lc_NSWE_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_NSWE_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_NSWE_closed_switch; lc_NSWE_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_NSWE_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_NSWE_state_switch_snow; level_crossing_NSWE_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_NSWE_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_NSWE_state_switch_snow; level_crossing_NSWE_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_NSWE_switch, (param[4] == 1)) { 1: level_crossing_NSWE_empty; LevelCrossing_NSWE_terrain_switch; } */ /********************************************** //* NSWE Tracks on bridges **********************************************/ spriteset(bridge_tracks_NSWE, "gfx/NSWE/BridgeTrack_NSWE.png") { template_bridgetracks() } spriteset(bridge_tracks_NSWE_snow, "gfx/NSWE/BridgeTrack_NSWE_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_NSWE_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_NSWE_snow; bridge_tracks_NSWE; } /********************************************** * NSWE Fences: **********************************************/ spriteset(spriteset_fences_NSWE, "gfx/NSWE/Fences_NSWE.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_NSWE_fences,param_fences) { 0: spriteset_fences_NSWE; 1: spriteset_nofences; CB_FAILED; } //*Gui Non Electric spriteset(gui_NSWE, "gfx/NSWE/Gui_rail_NSWE.png") { tmpl_gui() } /********************************************** //* NSWE Depot **********************************************/ spriteset(depot_NSWE, "gfx/NSWE/Depot_NSWE.png") { template_depot() } spriteset(depot_NSWE_snow, "gfx/NSWE/Depot_NSWE_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_NSWE_depots, terrain_type ) { TILETYPE_SNOW: depot_NSWE_snow; depot_NSWE; } /********************************************** //* NSWE Signals **********************************************/ /********************************************** //NSWE Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_NSWE, "gfx/NSWE/Semaphores_block_NSWE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_NSWE, "gfx/NSWE/Semaphores_block_NSWE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_NSWE, "gfx/NSWE/Semaphores_block_combo_NSWE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_NSWE, "gfx/NSWE/Semaphores_block_combo_NSWE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_NSWE, "gfx/NSWE/Semaphores_block_entry_NSWE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_NSWE, "gfx/NSWE/Semaphores_block_entry_NSWE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_NSWE, "gfx/NSWE/Semaphores_block_exit_NSWE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_NSWE, "gfx/NSWE/Semaphores_block_exit_NSWE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_NSWE, "gfx/NSWE/Semaphores_path_oneway_NSWE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_NSWE, "gfx/NSWE/Semaphores_path_oneway_NSWE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_NSWE, "gfx/NSWE/Semaphores_path_twoway_NSWE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_NSWE, "gfx/NSWE/Semaphores_path_twoway_NSWE.png") { template_semaphore_signals(40) } /********************************************** // NSWE Light Signals **********************************************/ spriteset (spriteset_signals_block_green_NSWE, "gfx/NSWE/Signals_block_NSWE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_NSWE, "gfx/NSWE/Signals_block_NSWE.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_NSWE, "gfx/NSWE/Signals_block_combo_NSWE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_NSWE, "gfx/NSWE/Signals_block_combo_NSWE.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_NSWE, "gfx/NSWE/Signals_block_entry_NSWE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_NSWE, "gfx/NSWE/Signals_block_entry_NSWE.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_NSWE, "gfx/NSWE/Signals_block_exit_NSWE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_NSWE, "gfx/NSWE/Signals_block_exit_NSWE.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_NSWE, "gfx/NSWE/Signals_path_oneway_NSWE.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_NSWE, "gfx/NSWE/Signals_path_oneway_NSWE.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_NSWE, "gfx/NSWE/Signals_path_twoway_NSWE.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_NSWE, "gfx/NSWE/Signals_path_twoway_NSWE.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_NSWE, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_NSWE; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_NSWE; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_NSWE; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_NSWE; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_NSWE; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_NSWE; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_NSWE; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_NSWE; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_NSWE; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_NSWE; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_NSWE; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_NSWE; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_NSWE; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_NSWE; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_NSWE; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_NSWE; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_NSWE; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_NSWE; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_NSWE; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_NSWE; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_NSWE; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_NSWE; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_NSWE; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_NSWE; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_NSWE_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_NSWE; return CB_FAILED; } /********************************************** //* NSWE Railtype Properties **********************************************/ item(FEAT_RAILTYPES, NSWE) { property { label: "NSWE"; introduction_date: date(1800,1,1); name: string(STR_TRACK_TYPE_NSWE); toolbar_caption: string(STR_CONSTRUCTION_NSWE); menu_text: string(STR_CONSTRUCTION_NSWE); build_window_caption: string(STR_BUILD_CAPTION_NSWE); autoreplace_text: string(STR_AUTOREPLACE_NSWE); new_engine_text: string(STR_NEW_ENGINE_NSWE); compatible_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO", "VOLE"]; powered_railtype_list: ["ELTX", "RLOW", "RMED", "RHIG", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCBN", "SCCN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLE"]; construction_cost: 4; maintenance_cost: 1; speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_NSWE; underlay: ground_switch_underlay_NSWE; tunnels: tunnel_track_NSWE_switch; tunnel_overlay: tunnel_overlay_NSWE_switch; bridge_surfaces: bridge_track_NSWE_switch; level_crossings: LevelCrossing_NSWE_terrain_switch; fences: switch_NSWE_fences; gui: gui_NSWE; depots: get_NSWE_depots; signals: switch_NSWE_signals_type; } } /********************************************** //* END NSWE **********************************************/ /********************************************** //* START NSWR **********************************************/ /********************************************** * NSWR Track overlays for different ground types: **********************************************/ spriteset(track_overlays_NSWR, "gfx/NSWR/Overlay_NSWR.png") { template_overlay() } spriteset(track_overlays_NSWR_arctic, "gfx/NSWR/Overlay_NSWR_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_NSWR, terrain_type) { TILETYPE_SNOW: track_overlays_NSWR_arctic; track_overlays_NSWR; } /********************************************** * NSWR Track underlays for different ground types: **********************************************/ spriteset(track_underlays_NSWR, "gfx/NSWR/Underlay_NSWR.png") { template_underlay() } spriteset(track_underlays_NSWR_arctic, "gfx/NSWR/Underlay_NSWR_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_NSWR, terrain_type) { TILETYPE_SNOW: track_underlays_NSWR_arctic; track_underlays_NSWR; } /********************************************** * NSWR Custom Tunnels **********************************************/ spriteset(tunnel_tracks_NSWR, "gfx/NSWR/Tunnel_NSWR.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_NSWR_snow, "gfx/NSWR/Tunnel_NSWR_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_NSWR, "gfx/NSWR/Tunnel_NSWR.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_NSWR_snow, "gfx/NSWR/Tunnel_NSWR_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_NSWR_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_NSWR_snow; tunnel_tracks_NSWR; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_NSWR_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_NSWR_snow; tunnel_overlay_NSWR; } /********************************************** * NSWR Level crossings: **********************************************/ spriteset(level_crossing_NSWR_empty, "gfx/NSWR/LevelCrossing_NSWR.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_NSWR_closed, "gfx/NSWR/LevelCrossing_NSWR.png") { template_levcrossclosed() } spriteset(level_crossing_NSWR_open, "gfx/NSWR/LevelCrossing_NSWR.png") { template_levcrossopen() } spriteset(level_crossing_NSWR_closed_snow, "gfx/NSWR/LevelCrossing_NSWR_snow.png") { template_levcrossclosed() } spriteset(level_crossing_NSWR_open_snow, "gfx/NSWR/LevelCrossing_NSWR_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_NSWR_closed_modern, "gfx/NSWR/LevelCrossingModern_NSWR.png") { template_levcrossclosed() } spriteset(level_crossing_NSWR_open_modern, "gfx/NSWR/LevelCrossingModern_NSWR.png") { template_levcrossopen() } spriteset(level_crossing_NSWR_closed_snow_modern, "gfx/NSWR/LevelCrossingModern_NSWR_snow.png") { template_levcrossclosed() } spriteset(level_crossing_NSWR_open_snow_modern, "gfx/NSWR/LevelCrossingModern_NSWR_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWR_closed_snow ) { 3: level_crossing_NSWR_closed_snow; 1: level_crossing_NSWR_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWR_closed_snow ) { 2: level_crossing_NSWR_closed_snow; 2: level_crossing_NSWR_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWR_closed_snow) { 1: level_crossing_NSWR_closed_snow; 3: level_crossing_NSWR_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWR_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWR_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWR_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWR_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWR_closed_snow; level_crossing_NSWR_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWR_open_snow ) { 3: level_crossing_NSWR_open_snow; 1: level_crossing_NSWR_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWR_open_snow ) { 2: level_crossing_NSWR_open_snow; 2: level_crossing_NSWR_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWR_open_snow) { 1: level_crossing_NSWR_open_snow; 3: level_crossing_NSWR_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWR_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWR_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWR_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWR_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWR_open_snow; level_crossing_NSWR_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWR_closed ) { 3: level_crossing_NSWR_closed; 1: level_crossing_NSWR_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWR_closed ) { 2: level_crossing_NSWR_closed; 2: level_crossing_NSWR_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWR_closed) { 1: level_crossing_NSWR_closed; 3: level_crossing_NSWR_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWR_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWR_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWR_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWR_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWR_closed; level_crossing_NSWR_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_NSWR_open ) { 3: level_crossing_NSWR_open; 1: level_crossing_NSWR_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_NSWR_open ) { 2: level_crossing_NSWR_open; 2: level_crossing_NSWR_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_NSWR_open) { 1: level_crossing_NSWR_open; 3: level_crossing_NSWR_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_NSWR_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_NSWR_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_NSWR_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_NSWR_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_NSWR_open; level_crossing_NSWR_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_NSWR_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_NSWR_closed_snow_switch; lc_NSWR_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_NSWR_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_NSWR_closed_switch; lc_NSWR_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_NSWR_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_NSWR_state_switch_snow; level_crossing_NSWR_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_NSWR_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_NSWR_state_switch_snow; level_crossing_NSWR_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_NSWR_switch, (param[4] == 1)) { 1: level_crossing_NSWR_empty; LevelCrossing_NSWR_terrain_switch; } */ /********************************************** //* NSWR Tracks on bridges **********************************************/ spriteset(bridge_tracks_NSWR, "gfx/NSWR/BridgeTrack_NSWR.png") { template_bridgetracks() } spriteset(bridge_tracks_NSWR_snow, "gfx/NSWR/BridgeTrack_NSWR_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_NSWR_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_NSWR_snow; bridge_tracks_NSWR; } /********************************************** * NSWR Fences: **********************************************/ spriteset(spriteset_fences_NSWR, "gfx/NSWR/Fences_NSWR.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_NSWR_fences,param_fences) { 0: spriteset_fences_NSWR; 1: spriteset_nofences; CB_FAILED; } //*Gui Non Electric spriteset(gui_NSWR, "gfx/NSWR/Gui_rail_NSWR.png") { tmpl_gui() } /********************************************** //* NSWR Depot **********************************************/ spriteset(depot_NSWR, "gfx/NSWR/Depot_NSWR.png") { template_depot() } spriteset(depot_NSWR_snow, "gfx/NSWR/Depot_NSWR_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_NSWR_depots, terrain_type ) { TILETYPE_SNOW: depot_NSWR_snow; depot_NSWR; } /********************************************** //* NSWR Signals **********************************************/ /********************************************** //NSWR Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_NSWR, "gfx/NSWR/Semaphores_block_NSWR.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_NSWR, "gfx/NSWR/Semaphores_block_NSWR.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_NSWR, "gfx/NSWR/Semaphores_block_combo_NSWR.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_NSWR, "gfx/NSWR/Semaphores_block_combo_NSWR.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_NSWR, "gfx/NSWR/Semaphores_block_entry_NSWR.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_NSWR, "gfx/NSWR/Semaphores_block_entry_NSWR.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_NSWR, "gfx/NSWR/Semaphores_block_exit_NSWR.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_NSWR, "gfx/NSWR/Semaphores_block_exit_NSWR.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_NSWR, "gfx/NSWR/Semaphores_path_oneway_NSWR.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_NSWR, "gfx/NSWR/Semaphores_path_oneway_NSWR.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_NSWR, "gfx/NSWR/Semaphores_path_twoway_NSWR.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_NSWR, "gfx/NSWR/Semaphores_path_twoway_NSWR.png") { template_semaphore_signals(40) } /********************************************** // NSWR Light Signals **********************************************/ spriteset (spriteset_signals_block_green_NSWR, "gfx/NSWR/Signals_block_NSWR.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_NSWR, "gfx/NSWR/Signals_block_NSWR.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_NSWR, "gfx/NSWR/Signals_block_combo_NSWR.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_NSWR, "gfx/NSWR/Signals_block_combo_NSWR.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_NSWR, "gfx/NSWR/Signals_block_entry_NSWR.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_NSWR, "gfx/NSWR/Signals_block_entry_NSWR.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_NSWR, "gfx/NSWR/Signals_block_exit_NSWR.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_NSWR, "gfx/NSWR/Signals_block_exit_NSWR.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_NSWR, "gfx/NSWR/Signals_path_oneway_NSWR.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_NSWR, "gfx/NSWR/Signals_path_oneway_NSWR.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_NSWR, "gfx/NSWR/Signals_path_twoway_NSWR.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_NSWR, "gfx/NSWR/Signals_path_twoway_NSWR.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_NSWR, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_NSWR; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_NSWR; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_NSWR; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_NSWR; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_NSWR; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_NSWR; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_NSWR; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_NSWR; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_NSWR; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_NSWR; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_NSWR; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_NSWR; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_NSWR; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_NSWR; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_NSWR; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_NSWR; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_NSWR; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_NSWR; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_NSWR; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_NSWR; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_NSWR; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_NSWR; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_NSWR; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_NSWR; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_NSWR_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_NSWR; return CB_FAILED; } /********************************************** //* NSWR Railtype Properties **********************************************/ item(FEAT_RAILTYPES, NSWR) { property { label: "NSWR"; introduction_date: date(1800,1,1); name: string(STR_TRACK_TYPE_NSWR); toolbar_caption: string(STR_CONSTRUCTION_NSWR); menu_text: string(STR_CONSTRUCTION_NSWR); build_window_caption: string(STR_BUILD_CAPTION_NSWR); autoreplace_text: string(STR_AUTOREPLACE_NSWR); new_engine_text: string(STR_NEW_ENGINE_NSWR); compatible_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO", "VOLE"]; powered_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO"]; construction_cost: 4; maintenance_cost: 1; speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_NSWR; underlay: ground_switch_underlay_NSWR; tunnels: tunnel_track_NSWR_switch; tunnel_overlay: tunnel_overlay_NSWR_switch; bridge_surfaces: bridge_track_NSWR_switch; level_crossings: LevelCrossing_NSWR_terrain_switch; fences: switch_NSWR_fences; gui: gui_NSWR; depots: get_NSWR_depots; signals: switch_NSWR_signals_type; } } /********************************************** //* END NSWR **********************************************/ /********************************************** //* START RAIL **********************************************/ /********************************************** * RAIL Track overlays for different ground types: **********************************************/ spriteset(track_overlays_RAIL, "gfx/RAIL/Overlay_RAIL.png") { template_overlay() } spriteset(track_overlays_RAIL_arctic, "gfx/RAIL/Overlay_RAIL_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_RAIL, terrain_type) { TILETYPE_SNOW: track_overlays_RAIL_arctic; track_overlays_RAIL; } /********************************************** * RAIL Track underlays for different ground types: **********************************************/ spriteset(track_underlays_RAIL, "gfx/RAIL/Underlay_RAIL.png") { template_underlay() } spriteset(track_underlays_RAIL_arctic, "gfx/RAIL/Underlay_RAIL_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_RAIL, terrain_type) { TILETYPE_SNOW: track_underlays_RAIL_arctic; track_underlays_RAIL; } /********************************************** * RAIL Custom Tunnels **********************************************/ spriteset(tunnel_tracks_RAIL, "gfx/RAIL/Tunnel_RAIL.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_RAIL_snow, "gfx/RAIL/Tunnel_RAIL_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_RAIL, "gfx/RAIL/Tunnel_RAIL.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_RAIL_snow, "gfx/RAIL/Tunnel_RAIL_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_RAIL_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_RAIL_snow; tunnel_tracks_RAIL; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_RAIL_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_RAIL_snow; tunnel_overlay_RAIL; } /********************************************** * RAIL Level crossings: **********************************************/ spriteset(level_crossing_RAIL_empty, "gfx/RAIL/LevelCrossing_RAIL.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_RAIL_closed, "gfx/RAIL/LevelCrossing_RAIL.png") { template_levcrossclosed() } spriteset(level_crossing_RAIL_open, "gfx/RAIL/LevelCrossing_RAIL.png") { template_levcrossopen() } spriteset(level_crossing_RAIL_closed_snow, "gfx/RAIL/LevelCrossing_RAIL_snow.png") { template_levcrossclosed() } spriteset(level_crossing_RAIL_open_snow, "gfx/RAIL/LevelCrossing_RAIL_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_RAIL_closed_modern, "gfx/RAIL/LevelCrossingModern_RAIL.png") { template_levcrossclosed() } spriteset(level_crossing_RAIL_open_modern, "gfx/RAIL/LevelCrossingModern_RAIL.png") { template_levcrossopen() } spriteset(level_crossing_RAIL_closed_snow_modern, "gfx/RAIL/LevelCrossingModern_RAIL_snow.png") { template_levcrossclosed() } spriteset(level_crossing_RAIL_open_snow_modern, "gfx/RAIL/LevelCrossingModern_RAIL_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_RAIL_closed_snow ) { 3: level_crossing_RAIL_closed_snow; 1: level_crossing_RAIL_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_RAIL_closed_snow ) { 2: level_crossing_RAIL_closed_snow; 2: level_crossing_RAIL_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_RAIL_closed_snow) { 1: level_crossing_RAIL_closed_snow; 3: level_crossing_RAIL_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_RAIL_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_RAIL_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_RAIL_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_RAIL_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_RAIL_closed_snow; level_crossing_RAIL_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_RAIL_open_snow ) { 3: level_crossing_RAIL_open_snow; 1: level_crossing_RAIL_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_RAIL_open_snow ) { 2: level_crossing_RAIL_open_snow; 2: level_crossing_RAIL_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_RAIL_open_snow) { 1: level_crossing_RAIL_open_snow; 3: level_crossing_RAIL_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_RAIL_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_RAIL_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_RAIL_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_RAIL_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_RAIL_open_snow; level_crossing_RAIL_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_RAIL_closed ) { 3: level_crossing_RAIL_closed; 1: level_crossing_RAIL_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_RAIL_closed ) { 2: level_crossing_RAIL_closed; 2: level_crossing_RAIL_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_RAIL_closed) { 1: level_crossing_RAIL_closed; 3: level_crossing_RAIL_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_RAIL_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_RAIL_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_RAIL_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_RAIL_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_RAIL_closed; level_crossing_RAIL_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_RAIL_open ) { 3: level_crossing_RAIL_open; 1: level_crossing_RAIL_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_RAIL_open ) { 2: level_crossing_RAIL_open; 2: level_crossing_RAIL_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_RAIL_open) { 1: level_crossing_RAIL_open; 3: level_crossing_RAIL_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_RAIL_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_RAIL_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_RAIL_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_RAIL_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_RAIL_open; level_crossing_RAIL_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_RAIL_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_RAIL_closed_snow_switch; lc_RAIL_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_RAIL_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_RAIL_closed_switch; lc_RAIL_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_RAIL_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_RAIL_state_switch_snow; level_crossing_RAIL_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_RAIL_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_RAIL_state_switch_snow; level_crossing_RAIL_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_RAIL_switch, (param[4] == 1)) { 1: level_crossing_RAIL_empty; LevelCrossing_RAIL_terrain_switch; } */ /********************************************** //* RAIL Tracks on bridges **********************************************/ spriteset(bridge_tracks_RAIL, "gfx/RAIL/BridgeTrack_RAIL.png") { template_bridgetracks() } spriteset(bridge_tracks_RAIL_snow, "gfx/RAIL/BridgeTrack_RAIL_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_RAIL_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_RAIL_snow; bridge_tracks_RAIL; } /********************************************** * RAIL Fences: **********************************************/ spriteset(spriteset_fences_RAIL, "gfx/RAIL/Fences_RAIL.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_RAIL_fences,param_fences) { 0: spriteset_fences_RAIL; 1: spriteset_nofences; CB_FAILED; } //*Gui Non Electric spriteset(gui_RAIL, "gfx/RAIL/Gui_rail_RAIL.png") { tmpl_gui() } /********************************************** //* RAIL Depot **********************************************/ spriteset(depot_RAIL, "gfx/RAIL/Depot_RAIL.png") { template_depot() } spriteset(depot_RAIL_snow, "gfx/RAIL/Depot_RAIL_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_RAIL_depots, terrain_type ) { TILETYPE_SNOW: depot_RAIL_snow; depot_RAIL; } /********************************************** //* RAIL Signals **********************************************/ /********************************************** //RAIL Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_RAIL, "gfx/RAIL/Semaphores_block_RAIL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_RAIL, "gfx/RAIL/Semaphores_block_RAIL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_RAIL, "gfx/RAIL/Semaphores_block_combo_RAIL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_RAIL, "gfx/RAIL/Semaphores_block_combo_RAIL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_RAIL, "gfx/RAIL/Semaphores_block_entry_RAIL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_RAIL, "gfx/RAIL/Semaphores_block_entry_RAIL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_RAIL, "gfx/RAIL/Semaphores_block_exit_RAIL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_RAIL, "gfx/RAIL/Semaphores_block_exit_RAIL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_RAIL, "gfx/RAIL/Semaphores_path_oneway_RAIL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_RAIL, "gfx/RAIL/Semaphores_path_oneway_RAIL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_RAIL, "gfx/RAIL/Semaphores_path_twoway_RAIL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_RAIL, "gfx/RAIL/Semaphores_path_twoway_RAIL.png") { template_semaphore_signals(40) } /********************************************** // RAIL Light Signals **********************************************/ spriteset (spriteset_signals_block_green_RAIL, "gfx/RAIL/Signals_block_RAIL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_RAIL, "gfx/RAIL/Signals_block_RAIL.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_RAIL, "gfx/RAIL/Signals_block_combo_RAIL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_RAIL, "gfx/RAIL/Signals_block_combo_RAIL.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_RAIL, "gfx/RAIL/Signals_block_entry_RAIL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_RAIL, "gfx/RAIL/Signals_block_entry_RAIL.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_RAIL, "gfx/RAIL/Signals_block_exit_RAIL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_RAIL, "gfx/RAIL/Signals_block_exit_RAIL.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_RAIL, "gfx/RAIL/Signals_path_oneway_RAIL.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_RAIL, "gfx/RAIL/Signals_path_oneway_RAIL.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_RAIL, "gfx/RAIL/Signals_path_twoway_RAIL.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_RAIL, "gfx/RAIL/Signals_path_twoway_RAIL.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_RAIL, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_RAIL; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_RAIL; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_RAIL; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_RAIL; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_RAIL; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_RAIL; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_RAIL; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_RAIL; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_RAIL; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_RAIL; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_RAIL; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_RAIL; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_RAIL; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_RAIL; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_RAIL; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_RAIL; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_RAIL; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_RAIL; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_RAIL; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_RAIL; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_RAIL; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_RAIL; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_RAIL; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_RAIL; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_RAIL_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_RAIL; return CB_FAILED; } /********************************************** //* RAIL Railtype Properties **********************************************/ item(FEAT_RAILTYPES, RAIL) { property { label: "RAIL"; introduction_date: date(1800,1,1); name: string(STR_TRACK_TYPE_RAIL); toolbar_caption: string(STR_CONSTRUCTION_RAIL); menu_text: string(STR_CONSTRUCTION_RAIL); build_window_caption: string(STR_BUILD_CAPTION_RAIL); autoreplace_text: string(STR_AUTOREPLACE_RAIL); new_engine_text: string(STR_NEW_ENGINE_RAIL); compatible_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO", "VOLE"]; powered_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO"]; construction_cost: 5; maintenance_cost: 1; speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_RAIL; underlay: ground_switch_underlay_RAIL; tunnels: tunnel_track_RAIL_switch; tunnel_overlay: tunnel_overlay_RAIL_switch; bridge_surfaces: bridge_track_RAIL_switch; level_crossings: LevelCrossing_RAIL_terrain_switch; fences: switch_RAIL_fences; gui: gui_RAIL; depots: get_RAIL_depots; signals: switch_RAIL_signals_type; } } /********************************************** //* END RAIL **********************************************/ /********************************************** //* START SAAN **********************************************/ /********************************************** * SAAN Track overlays for different ground types: **********************************************/ spriteset(track_overlays_SAAN, "gfx/SAAN/Overlay_SAAN.png") { template_overlay() } spriteset(track_overlays_SAAN_arctic, "gfx/SAAN/Overlay_SAAN_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_SAAN, terrain_type) { TILETYPE_SNOW: track_overlays_SAAN_arctic; track_overlays_SAAN; } /********************************************** * SAAN Track underlays for different ground types: **********************************************/ spriteset(track_underlays_SAAN, "gfx/SAAN/Underlay_SAAN.png") { template_underlay() } spriteset(track_underlays_SAAN_arctic, "gfx/SAAN/Underlay_SAAN_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_SAAN, terrain_type) { TILETYPE_SNOW: track_underlays_SAAN_arctic; track_underlays_SAAN; } /********************************************** * SAAN Custom Tunnels **********************************************/ spriteset(tunnel_tracks_SAAN, "gfx/SAAN/Tunnel_SAAN.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_SAAN_snow, "gfx/SAAN/Tunnel_SAAN_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_SAAN, "gfx/SAAN/Tunnel_SAAN.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_SAAN_snow, "gfx/SAAN/Tunnel_SAAN_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_SAAN_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_SAAN_snow; tunnel_tracks_SAAN; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_SAAN_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_SAAN_snow; tunnel_overlay_SAAN; } /********************************************** * SAAN Level crossings: **********************************************/ spriteset(level_crossing_SAAN_empty, "gfx/SAAN/LevelCrossing_SAAN.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_SAAN_closed, "gfx/SAAN/LevelCrossing_SAAN.png") { template_levcrossclosed() } spriteset(level_crossing_SAAN_open, "gfx/SAAN/LevelCrossing_SAAN.png") { template_levcrossopen() } spriteset(level_crossing_SAAN_closed_snow, "gfx/SAAN/LevelCrossing_SAAN_snow.png") { template_levcrossclosed() } spriteset(level_crossing_SAAN_open_snow, "gfx/SAAN/LevelCrossing_SAAN_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_SAAN_closed_modern, "gfx/SAAN/LevelCrossingModern_SAAN.png") { template_levcrossclosed() } spriteset(level_crossing_SAAN_open_modern, "gfx/SAAN/LevelCrossingModern_SAAN.png") { template_levcrossopen() } spriteset(level_crossing_SAAN_closed_snow_modern, "gfx/SAAN/LevelCrossingModern_SAAN_snow.png") { template_levcrossclosed() } spriteset(level_crossing_SAAN_open_snow_modern, "gfx/SAAN/LevelCrossingModern_SAAN_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SAAN_closed_snow ) { 3: level_crossing_SAAN_closed_snow; 1: level_crossing_SAAN_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SAAN_closed_snow ) { 2: level_crossing_SAAN_closed_snow; 2: level_crossing_SAAN_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SAAN_closed_snow) { 1: level_crossing_SAAN_closed_snow; 3: level_crossing_SAAN_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_SAAN_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SAAN_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SAAN_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SAAN_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SAAN_closed_snow; level_crossing_SAAN_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SAAN_open_snow ) { 3: level_crossing_SAAN_open_snow; 1: level_crossing_SAAN_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SAAN_open_snow ) { 2: level_crossing_SAAN_open_snow; 2: level_crossing_SAAN_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SAAN_open_snow) { 1: level_crossing_SAAN_open_snow; 3: level_crossing_SAAN_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_SAAN_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SAAN_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SAAN_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SAAN_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SAAN_open_snow; level_crossing_SAAN_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SAAN_closed ) { 3: level_crossing_SAAN_closed; 1: level_crossing_SAAN_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SAAN_closed ) { 2: level_crossing_SAAN_closed; 2: level_crossing_SAAN_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SAAN_closed) { 1: level_crossing_SAAN_closed; 3: level_crossing_SAAN_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_SAAN_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SAAN_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SAAN_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SAAN_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SAAN_closed; level_crossing_SAAN_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SAAN_open ) { 3: level_crossing_SAAN_open; 1: level_crossing_SAAN_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SAAN_open ) { 2: level_crossing_SAAN_open; 2: level_crossing_SAAN_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SAAN_open) { 1: level_crossing_SAAN_open; 3: level_crossing_SAAN_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_SAAN_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SAAN_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SAAN_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SAAN_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SAAN_open; level_crossing_SAAN_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_SAAN_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_SAAN_closed_snow_switch; lc_SAAN_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_SAAN_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_SAAN_closed_switch; lc_SAAN_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_SAAN_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_SAAN_state_switch_snow; level_crossing_SAAN_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_SAAN_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_SAAN_state_switch_snow; level_crossing_SAAN_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_SAAN_switch, (param[4] == 1)) { 1: level_crossing_SAAN_empty; LevelCrossing_SAAN_terrain_switch; } */ /********************************************** //* SAAN Tracks on bridges **********************************************/ spriteset(bridge_tracks_SAAN, "gfx/SAAN/BridgeTrack_SAAN.png") { template_bridgetracks() } spriteset(bridge_tracks_SAAN_snow, "gfx/SAAN/BridgeTrack_SAAN_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_SAAN_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_SAAN_snow; bridge_tracks_SAAN; } /********************************************** * SAAN Fences: **********************************************/ spriteset(spriteset_fences_SAAN, "gfx/SAAN/Fences_SAAN.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_SAAN_fences,param_fences) { 0: spriteset_fences_SAAN; 1: spriteset_nofences; CB_FAILED; } //*Gui Non Electric spriteset(gui_SAAN, "gfx/SAAN/Gui_rail_SAAN.png") { tmpl_gui() } /********************************************** //* SAAN Depot **********************************************/ spriteset(depot_SAAN, "gfx/SAAN/Depot_SAAN.png") { template_depot() } spriteset(depot_SAAN_snow, "gfx/SAAN/Depot_SAAN_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_SAAN_depots, terrain_type ) { TILETYPE_SNOW: depot_SAAN_snow; depot_SAAN; } /********************************************** //* SAAN Signals **********************************************/ /********************************************** //SAAN Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_SAAN, "gfx/SAAN/Semaphores_block_SAAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_SAAN, "gfx/SAAN/Semaphores_block_SAAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_SAAN, "gfx/SAAN/Semaphores_block_combo_SAAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_SAAN, "gfx/SAAN/Semaphores_block_combo_SAAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_SAAN, "gfx/SAAN/Semaphores_block_entry_SAAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_SAAN, "gfx/SAAN/Semaphores_block_entry_SAAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_SAAN, "gfx/SAAN/Semaphores_block_exit_SAAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_SAAN, "gfx/SAAN/Semaphores_block_exit_SAAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_SAAN, "gfx/SAAN/Semaphores_path_oneway_SAAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_SAAN, "gfx/SAAN/Semaphores_path_oneway_SAAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_SAAN, "gfx/SAAN/Semaphores_path_twoway_SAAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_SAAN, "gfx/SAAN/Semaphores_path_twoway_SAAN.png") { template_semaphore_signals(40) } /********************************************** // SAAN Light Signals **********************************************/ spriteset (spriteset_signals_block_green_SAAN, "gfx/SAAN/Signals_block_SAAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_SAAN, "gfx/SAAN/Signals_block_SAAN.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_SAAN, "gfx/SAAN/Signals_block_combo_SAAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_SAAN, "gfx/SAAN/Signals_block_combo_SAAN.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_SAAN, "gfx/SAAN/Signals_block_entry_SAAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_SAAN, "gfx/SAAN/Signals_block_entry_SAAN.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_SAAN, "gfx/SAAN/Signals_block_exit_SAAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_SAAN, "gfx/SAAN/Signals_block_exit_SAAN.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_SAAN, "gfx/SAAN/Signals_path_oneway_SAAN.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_SAAN, "gfx/SAAN/Signals_path_oneway_SAAN.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_SAAN, "gfx/SAAN/Signals_path_twoway_SAAN.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_SAAN, "gfx/SAAN/Signals_path_twoway_SAAN.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_SAAN, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_SAAN; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_SAAN; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_SAAN; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_SAAN; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_SAAN; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_SAAN; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_SAAN; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_SAAN; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_SAAN; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_SAAN; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_SAAN; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_SAAN; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_SAAN; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_SAAN; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_SAAN; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_SAAN; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_SAAN; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_SAAN; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_SAAN; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_SAAN; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_SAAN; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_SAAN; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_SAAN; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_SAAN; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_SAAN_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_SAAN; return CB_FAILED; } /********************************************** //* SAAN Railtype Properties **********************************************/ item(FEAT_RAILTYPES, SAAN) { property { label: "SAAN"; introduction_date: date(1800,1,1); name: string(STR_TRACK_TYPE_SAAN); toolbar_caption: string(STR_CONSTRUCTION_SAAN); menu_text: string(STR_CONSTRUCTION_SAAN); build_window_caption: string(STR_BUILD_CAPTION_SAAN); autoreplace_text: string(STR_AUTOREPLACE_SAAN); new_engine_text: string(STR_NEW_ENGINE_SAAN); powered_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO"]; construction_cost: 5; maintenance_cost: 1; speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_SAAN; underlay: ground_switch_underlay_SAAN; tunnels: tunnel_track_SAAN_switch; tunnel_overlay: tunnel_overlay_SAAN_switch; bridge_surfaces: bridge_track_SAAN_switch; level_crossings: LevelCrossing_SAAN_terrain_switch; fences: switch_SAAN_fences; gui: gui_SAAN; depots: get_SAAN_depots; signals: switch_SAAN_signals_type; } } /********************************************** //* END SAAN **********************************************/ /********************************************** //* START SCAN **********************************************/ /********************************************** * SCAN Track overlays for different ground types: **********************************************/ spriteset(track_overlays_SCAN, "gfx/SCAN/Overlay_SCAN.png") { template_overlay() } spriteset(track_overlays_SCAN_arctic, "gfx/SCAN/Overlay_SCAN_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_SCAN, terrain_type) { TILETYPE_SNOW: track_overlays_SCAN_arctic; track_overlays_SCAN; } /********************************************** * SCAN Track underlays for different ground types: **********************************************/ spriteset(track_underlays_SCAN, "gfx/SCAN/Underlay_SCAN.png") { template_underlay() } spriteset(track_underlays_SCAN_arctic, "gfx/SCAN/Underlay_SCAN_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_SCAN, terrain_type) { TILETYPE_SNOW: track_underlays_SCAN_arctic; track_underlays_SCAN; } /********************************************** * SCAN Custom Tunnels **********************************************/ spriteset(tunnel_tracks_SCAN, "gfx/SCAN/Tunnel_SCAN.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_SCAN_snow, "gfx/SCAN/Tunnel_SCAN_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_SCAN, "gfx/SCAN/Tunnel_SCAN.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_SCAN_snow, "gfx/SCAN/Tunnel_SCAN_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_SCAN_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_SCAN_snow; tunnel_tracks_SCAN; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_SCAN_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_SCAN_snow; tunnel_overlay_SCAN; } /********************************************** * SCAN Level crossings: **********************************************/ spriteset(level_crossing_SCAN_empty, "gfx/SCAN/LevelCrossing_SCAN.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_SCAN_closed, "gfx/SCAN/LevelCrossing_SCAN.png") { template_levcrossclosed() } spriteset(level_crossing_SCAN_open, "gfx/SCAN/LevelCrossing_SCAN.png") { template_levcrossopen() } spriteset(level_crossing_SCAN_closed_snow, "gfx/SCAN/LevelCrossing_SCAN_snow.png") { template_levcrossclosed() } spriteset(level_crossing_SCAN_open_snow, "gfx/SCAN/LevelCrossing_SCAN_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_SCAN_closed_modern, "gfx/SCAN/LevelCrossingModern_SCAN.png") { template_levcrossclosed() } spriteset(level_crossing_SCAN_open_modern, "gfx/SCAN/LevelCrossingModern_SCAN.png") { template_levcrossopen() } spriteset(level_crossing_SCAN_closed_snow_modern, "gfx/SCAN/LevelCrossingModern_SCAN_snow.png") { template_levcrossclosed() } spriteset(level_crossing_SCAN_open_snow_modern, "gfx/SCAN/LevelCrossingModern_SCAN_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SCAN_closed_snow ) { 3: level_crossing_SCAN_closed_snow; 1: level_crossing_SCAN_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SCAN_closed_snow ) { 2: level_crossing_SCAN_closed_snow; 2: level_crossing_SCAN_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SCAN_closed_snow) { 1: level_crossing_SCAN_closed_snow; 3: level_crossing_SCAN_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_SCAN_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SCAN_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SCAN_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SCAN_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SCAN_closed_snow; level_crossing_SCAN_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SCAN_open_snow ) { 3: level_crossing_SCAN_open_snow; 1: level_crossing_SCAN_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SCAN_open_snow ) { 2: level_crossing_SCAN_open_snow; 2: level_crossing_SCAN_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SCAN_open_snow) { 1: level_crossing_SCAN_open_snow; 3: level_crossing_SCAN_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_SCAN_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SCAN_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SCAN_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SCAN_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SCAN_open_snow; level_crossing_SCAN_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SCAN_closed ) { 3: level_crossing_SCAN_closed; 1: level_crossing_SCAN_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SCAN_closed ) { 2: level_crossing_SCAN_closed; 2: level_crossing_SCAN_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SCAN_closed) { 1: level_crossing_SCAN_closed; 3: level_crossing_SCAN_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_SCAN_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SCAN_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SCAN_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SCAN_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SCAN_closed; level_crossing_SCAN_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_SCAN_open ) { 3: level_crossing_SCAN_open; 1: level_crossing_SCAN_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_SCAN_open ) { 2: level_crossing_SCAN_open; 2: level_crossing_SCAN_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_SCAN_open) { 1: level_crossing_SCAN_open; 3: level_crossing_SCAN_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_SCAN_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_SCAN_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_SCAN_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_SCAN_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_SCAN_open; level_crossing_SCAN_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_SCAN_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_SCAN_closed_snow_switch; lc_SCAN_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_SCAN_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_SCAN_closed_switch; lc_SCAN_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_SCAN_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_SCAN_state_switch_snow; level_crossing_SCAN_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_SCAN_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_SCAN_state_switch_snow; level_crossing_SCAN_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_SCAN_switch, (param[4] == 1)) { 1: level_crossing_SCAN_empty; LevelCrossing_SCAN_terrain_switch; } */ /********************************************** //* SCAN Tracks on bridges **********************************************/ spriteset(bridge_tracks_SCAN, "gfx/SCAN/BridgeTrack_SCAN.png") { template_bridgetracks() } spriteset(bridge_tracks_SCAN_snow, "gfx/SCAN/BridgeTrack_SCAN_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_SCAN_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_SCAN_snow; bridge_tracks_SCAN; } /********************************************** * SCAN Fences: **********************************************/ spriteset(spriteset_fences_SCAN, "gfx/SCAN/Fences_SCAN.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_SCAN_fences,param_fences) { 0: spriteset_fences_SCAN; 1: spriteset_nofences; CB_FAILED; } //*Gui Non Electric spriteset(gui_SCAN, "gfx/SCAN/Gui_rail_SCAN.png") { tmpl_gui() } /********************************************** //* SCAN Depot **********************************************/ spriteset(depot_SCAN, "gfx/SCAN/Depot_SCAN.png") { template_depot() } spriteset(depot_SCAN_snow, "gfx/SCAN/Depot_SCAN_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_SCAN_depots, terrain_type ) { TILETYPE_SNOW: depot_SCAN_snow; depot_SCAN; } /********************************************** //* SCAN Signals **********************************************/ /********************************************** //SCAN Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_SCAN, "gfx/SCAN/Semaphores_block_SCAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_SCAN, "gfx/SCAN/Semaphores_block_SCAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_SCAN, "gfx/SCAN/Semaphores_block_combo_SCAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_SCAN, "gfx/SCAN/Semaphores_block_combo_SCAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_SCAN, "gfx/SCAN/Semaphores_block_entry_SCAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_SCAN, "gfx/SCAN/Semaphores_block_entry_SCAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_SCAN, "gfx/SCAN/Semaphores_block_exit_SCAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_SCAN, "gfx/SCAN/Semaphores_block_exit_SCAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_SCAN, "gfx/SCAN/Semaphores_path_oneway_SCAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_SCAN, "gfx/SCAN/Semaphores_path_oneway_SCAN.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_SCAN, "gfx/SCAN/Semaphores_path_twoway_SCAN.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_SCAN, "gfx/SCAN/Semaphores_path_twoway_SCAN.png") { template_semaphore_signals(40) } /********************************************** // SCAN Light Signals **********************************************/ spriteset (spriteset_signals_block_green_SCAN, "gfx/SCAN/Signals_block_SCAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_SCAN, "gfx/SCAN/Signals_block_SCAN.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_SCAN, "gfx/SCAN/Signals_block_combo_SCAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_SCAN, "gfx/SCAN/Signals_block_combo_SCAN.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_SCAN, "gfx/SCAN/Signals_block_entry_SCAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_SCAN, "gfx/SCAN/Signals_block_entry_SCAN.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_SCAN, "gfx/SCAN/Signals_block_exit_SCAN.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_SCAN, "gfx/SCAN/Signals_block_exit_SCAN.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_SCAN, "gfx/SCAN/Signals_path_oneway_SCAN.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_SCAN, "gfx/SCAN/Signals_path_oneway_SCAN.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_SCAN, "gfx/SCAN/Signals_path_twoway_SCAN.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_SCAN, "gfx/SCAN/Signals_path_twoway_SCAN.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_SCAN, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_SCAN; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_SCAN; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_SCAN; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_SCAN; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_SCAN; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_SCAN; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_SCAN; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_SCAN; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_SCAN; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_SCAN; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_SCAN; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_SCAN; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_SCAN; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_SCAN; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_SCAN; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_SCAN; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_SCAN; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_SCAN; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_SCAN; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_SCAN; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_SCAN; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_SCAN; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_SCAN; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_SCAN; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_SCAN_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_SCAN; return CB_FAILED; } /********************************************** //* SCAN Railtype Properties **********************************************/ item(FEAT_RAILTYPES, SCAN) { property { label: "SCAN"; introduction_date: date(1800,1,1); name: string(STR_TRACK_TYPE_SCAN); toolbar_caption: string(STR_CONSTRUCTION_SCAN); menu_text: string(STR_CONSTRUCTION_SCAN); build_window_caption: string(STR_BUILD_CAPTION_SCAN); autoreplace_text: string(STR_AUTOREPLACE_SCAN); new_engine_text: string(STR_NEW_ENGINE_SCAN); powered_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO"]; construction_cost: 6; maintenance_cost: 1; speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_SCAN; underlay: ground_switch_underlay_SCAN; tunnels: tunnel_track_SCAN_switch; tunnel_overlay: tunnel_overlay_SCAN_switch; bridge_surfaces: bridge_track_SCAN_switch; level_crossings: LevelCrossing_SCAN_terrain_switch; fences: switch_SCAN_fences; gui: gui_SCAN; depots: get_SCAN_depots; signals: switch_SCAN_signals_type; } } /********************************************** //* END SCAN **********************************************/ /********************************************** //* START YARD **********************************************/ /********************************************** * YARD Track overlays for different ground types: **********************************************/ spriteset(track_overlays_YARD, "gfx/YARD/Overlay_YARD.png") { template_overlay() } spriteset(track_overlays_YARD_arctic, "gfx/YARD/Overlay_YARD_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_YARD, terrain_type) { TILETYPE_SNOW: track_overlays_YARD_arctic; track_overlays_YARD; } /********************************************** * YARD Track underlays for different ground types: **********************************************/ spriteset(track_underlays_YARD, "gfx/YARD/Underlay_YARD.png") { template_underlay() } spriteset(track_underlays_YARD_arctic, "gfx/YARD/Underlay_YARD_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_YARD, terrain_type) { TILETYPE_SNOW: track_underlays_YARD_arctic; track_underlays_YARD; } /********************************************** * YARD Custom Tunnels **********************************************/ spriteset(tunnel_tracks_YARD, "gfx/YARD/Tunnel_YARD.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_YARD_snow, "gfx/YARD/Tunnel_YARD_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_YARD, "gfx/YARD/Tunnel_YARD.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_YARD_snow, "gfx/YARD/Tunnel_YARD_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_YARD_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_YARD_snow; tunnel_tracks_YARD; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_YARD_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_YARD_snow; tunnel_overlay_YARD; } /********************************************** * YARD Level crossings: **********************************************/ spriteset(level_crossing_YARD_empty, "gfx/YARD/LevelCrossing_YARD.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_YARD_closed, "gfx/YARD/LevelCrossing_YARD.png") { template_levcrossclosed() } spriteset(level_crossing_YARD_open, "gfx/YARD/LevelCrossing_YARD.png") { template_levcrossopen() } spriteset(level_crossing_YARD_closed_snow, "gfx/YARD/LevelCrossing_YARD_snow.png") { template_levcrossclosed() } spriteset(level_crossing_YARD_open_snow, "gfx/YARD/LevelCrossing_YARD_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_YARD_closed_modern, "gfx/YARD/LevelCrossingModern_YARD.png") { template_levcrossclosed() } spriteset(level_crossing_YARD_open_modern, "gfx/YARD/LevelCrossingModern_YARD.png") { template_levcrossopen() } spriteset(level_crossing_YARD_closed_snow_modern, "gfx/YARD/LevelCrossingModern_YARD_snow.png") { template_levcrossclosed() } spriteset(level_crossing_YARD_open_snow_modern, "gfx/YARD/LevelCrossingModern_YARD_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_YARD_closed_snow ) { 3: level_crossing_YARD_closed_snow; 1: level_crossing_YARD_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_YARD_closed_snow ) { 2: level_crossing_YARD_closed_snow; 2: level_crossing_YARD_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_YARD_closed_snow) { 1: level_crossing_YARD_closed_snow; 3: level_crossing_YARD_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_YARD_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_YARD_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_YARD_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_YARD_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_YARD_closed_snow; level_crossing_YARD_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_YARD_open_snow ) { 3: level_crossing_YARD_open_snow; 1: level_crossing_YARD_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_YARD_open_snow ) { 2: level_crossing_YARD_open_snow; 2: level_crossing_YARD_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_YARD_open_snow) { 1: level_crossing_YARD_open_snow; 3: level_crossing_YARD_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_YARD_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_YARD_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_YARD_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_YARD_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_YARD_open_snow; level_crossing_YARD_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_YARD_closed ) { 3: level_crossing_YARD_closed; 1: level_crossing_YARD_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_YARD_closed ) { 2: level_crossing_YARD_closed; 2: level_crossing_YARD_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_YARD_closed) { 1: level_crossing_YARD_closed; 3: level_crossing_YARD_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_YARD_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_YARD_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_YARD_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_YARD_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_YARD_closed; level_crossing_YARD_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_YARD_open ) { 3: level_crossing_YARD_open; 1: level_crossing_YARD_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_YARD_open ) { 2: level_crossing_YARD_open; 2: level_crossing_YARD_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_YARD_open) { 1: level_crossing_YARD_open; 3: level_crossing_YARD_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_YARD_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_YARD_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_YARD_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_YARD_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_YARD_open; level_crossing_YARD_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_YARD_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_YARD_closed_snow_switch; lc_YARD_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_YARD_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_YARD_closed_switch; lc_YARD_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_YARD_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_YARD_state_switch_snow; level_crossing_YARD_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_YARD_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_YARD_state_switch_snow; level_crossing_YARD_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_YARD_switch, (param[4] == 1)) { 1: level_crossing_YARD_empty; LevelCrossing_YARD_terrain_switch; } */ /********************************************** //* YARD Tracks on bridges **********************************************/ spriteset(bridge_tracks_YARD, "gfx/YARD/BridgeTrack_YARD.png") { template_bridgetracks() } spriteset(bridge_tracks_YARD_snow, "gfx/YARD/BridgeTrack_YARD_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_YARD_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_YARD_snow; bridge_tracks_YARD; } /********************************************** * YARD Fences: **********************************************/ spriteset(spriteset_fences_YARD, "gfx/YARD/Fences_YARD.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_YARD_fences,param_fences) { 0: spriteset_fences_YARD; 1: spriteset_nofences; CB_FAILED; } //*Gui Non Electric spriteset(gui_YARD, "gfx/YARD/Gui_rail_YARD.png") { tmpl_gui() } /********************************************** //* YARD Depot **********************************************/ spriteset(depot_YARD, "gfx/YARD/Depot_YARD.png") { template_depot() } spriteset(depot_YARD_snow, "gfx/YARD/Depot_YARD_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_YARD_depots, terrain_type ) { TILETYPE_SNOW: depot_YARD_snow; depot_YARD; } /********************************************** //* YARD Signals **********************************************/ /********************************************** //YARD Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_YARD, "gfx/YARD/Semaphores_block_YARD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_YARD, "gfx/YARD/Semaphores_block_YARD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_YARD, "gfx/YARD/Semaphores_block_combo_YARD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_YARD, "gfx/YARD/Semaphores_block_combo_YARD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_YARD, "gfx/YARD/Semaphores_block_entry_YARD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_YARD, "gfx/YARD/Semaphores_block_entry_YARD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_YARD, "gfx/YARD/Semaphores_block_exit_YARD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_YARD, "gfx/YARD/Semaphores_block_exit_YARD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_YARD, "gfx/YARD/Semaphores_path_oneway_YARD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_YARD, "gfx/YARD/Semaphores_path_oneway_YARD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_YARD, "gfx/YARD/Semaphores_path_twoway_YARD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_YARD, "gfx/YARD/Semaphores_path_twoway_YARD.png") { template_semaphore_signals(40) } /********************************************** // YARD Light Signals **********************************************/ spriteset (spriteset_signals_block_green_YARD, "gfx/YARD/Signals_block_YARD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_YARD, "gfx/YARD/Signals_block_YARD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_YARD, "gfx/YARD/Signals_block_combo_YARD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_YARD, "gfx/YARD/Signals_block_combo_YARD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_YARD, "gfx/YARD/Signals_block_entry_YARD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_YARD, "gfx/YARD/Signals_block_entry_YARD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_YARD, "gfx/YARD/Signals_block_exit_YARD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_YARD, "gfx/YARD/Signals_block_exit_YARD.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_YARD, "gfx/YARD/Signals_path_oneway_YARD.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_YARD, "gfx/YARD/Signals_path_oneway_YARD.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_YARD, "gfx/YARD/Signals_path_twoway_YARD.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_YARD, "gfx/YARD/Signals_path_twoway_YARD.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_YARD, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_YARD; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_YARD; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_YARD; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_YARD; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_YARD; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_YARD; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_YARD; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_YARD; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_YARD; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_YARD; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_YARD; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_YARD; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_YARD; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_YARD; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_YARD; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_YARD; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_YARD; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_YARD; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_YARD; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_YARD; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_YARD; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_YARD; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_YARD; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_YARD; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_YARD_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_YARD; return CB_FAILED; } /********************************************** //* YARD Railtype Properties **********************************************/ item(FEAT_RAILTYPES, YARD) { property { label: "YARD"; introduction_date: date(1800,1,1); name: string(STR_TRACK_TYPE_YARD); toolbar_caption: string(STR_CONSTRUCTION_YARD); menu_text: string(STR_CONSTRUCTION_YARD); build_window_caption: string(STR_BUILD_CAPTION_YARD); autoreplace_text: string(STR_AUTOREPLACE_YARD); new_engine_text: string(STR_NEW_ENGINE_YARD); powered_railtype_list: ["RTU2", "RTE2"]; construction_cost: 3; maintenance_cost: 1; speed_limit: 40 km/h; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_YARD; underlay: ground_switch_underlay_YARD; tunnels: tunnel_track_YARD_switch; tunnel_overlay: tunnel_overlay_YARD_switch; bridge_surfaces: bridge_track_YARD_switch; level_crossings: LevelCrossing_YARD_terrain_switch; fences: switch_YARD_fences; gui: gui_YARD; depots: get_YARD_depots; signals: switch_YARD_signals_type; } } /********************************************** //* END YARD **********************************************/ /********************************************** //* START ELRL **********************************************/ /********************************************** * ELRL Track overlays for different ground types: **********************************************/ spriteset(track_overlays_ELRL, "gfx/ELRL/Overlay_ELRL.png") { template_overlay() } spriteset(track_overlays_ELRL_arctic, "gfx/ELRL/Overlay_ELRL_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_ELRL, terrain_type) { TILETYPE_SNOW: track_overlays_ELRL_arctic; track_overlays_ELRL; } /********************************************** * ELRL Track underlays for different ground types: **********************************************/ spriteset(track_underlays_ELRL, "gfx/ELRL/Underlay_ELRL.png") { template_underlay() } spriteset(track_underlays_ELRL_arctic, "gfx/ELRL/Underlay_ELRL_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_ELRL, terrain_type) { TILETYPE_SNOW: track_underlays_ELRL_arctic; track_underlays_ELRL; } /********************************************** * ELRL Custom Tunnels **********************************************/ spriteset(tunnel_tracks_ELRL, "gfx/ELRL/Tunnel_ELRL.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_ELRL_snow, "gfx/ELRL/Tunnel_ELRL_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_ELRL, "gfx/ELRL/Tunnel_ELRL.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_ELRL_snow, "gfx/ELRL/Tunnel_ELRL_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_ELRL_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_ELRL_snow; tunnel_tracks_ELRL; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_ELRL_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_ELRL_snow; tunnel_overlay_ELRL; } /********************************************** * ELRL Level crossings: **********************************************/ spriteset(level_crossing_ELRL_empty, "gfx/ELRL/LevelCrossing_ELRL.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_ELRL_closed, "gfx/ELRL/LevelCrossing_ELRL.png") { template_levcrossclosed() } spriteset(level_crossing_ELRL_open, "gfx/ELRL/LevelCrossing_ELRL.png") { template_levcrossopen() } spriteset(level_crossing_ELRL_closed_snow, "gfx/ELRL/LevelCrossing_ELRL_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELRL_open_snow, "gfx/ELRL/LevelCrossing_ELRL_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_ELRL_closed_modern, "gfx/ELRL/LevelCrossingModern_ELRL.png") { template_levcrossclosed() } spriteset(level_crossing_ELRL_open_modern, "gfx/ELRL/LevelCrossingModern_ELRL.png") { template_levcrossopen() } spriteset(level_crossing_ELRL_closed_snow_modern, "gfx/ELRL/LevelCrossingModern_ELRL_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELRL_open_snow_modern, "gfx/ELRL/LevelCrossingModern_ELRL_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELRL_closed_snow ) { 3: level_crossing_ELRL_closed_snow; 1: level_crossing_ELRL_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELRL_closed_snow ) { 2: level_crossing_ELRL_closed_snow; 2: level_crossing_ELRL_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELRL_closed_snow) { 1: level_crossing_ELRL_closed_snow; 3: level_crossing_ELRL_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELRL_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELRL_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELRL_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELRL_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELRL_closed_snow; level_crossing_ELRL_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELRL_open_snow ) { 3: level_crossing_ELRL_open_snow; 1: level_crossing_ELRL_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELRL_open_snow ) { 2: level_crossing_ELRL_open_snow; 2: level_crossing_ELRL_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELRL_open_snow) { 1: level_crossing_ELRL_open_snow; 3: level_crossing_ELRL_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELRL_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELRL_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELRL_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELRL_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELRL_open_snow; level_crossing_ELRL_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELRL_closed ) { 3: level_crossing_ELRL_closed; 1: level_crossing_ELRL_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELRL_closed ) { 2: level_crossing_ELRL_closed; 2: level_crossing_ELRL_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELRL_closed) { 1: level_crossing_ELRL_closed; 3: level_crossing_ELRL_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELRL_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELRL_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELRL_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELRL_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELRL_closed; level_crossing_ELRL_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELRL_open ) { 3: level_crossing_ELRL_open; 1: level_crossing_ELRL_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELRL_open ) { 2: level_crossing_ELRL_open; 2: level_crossing_ELRL_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELRL_open) { 1: level_crossing_ELRL_open; 3: level_crossing_ELRL_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELRL_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELRL_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELRL_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELRL_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELRL_open; level_crossing_ELRL_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_ELRL_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELRL_closed_snow_switch; lc_ELRL_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_ELRL_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELRL_closed_switch; lc_ELRL_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELRL_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELRL_state_switch_snow; level_crossing_ELRL_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELRL_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELRL_state_switch_snow; level_crossing_ELRL_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_ELRL_switch, (param[4] == 1)) { 1: level_crossing_ELRL_empty; LevelCrossing_ELRL_terrain_switch; } */ /********************************************** //* ELRL Tracks on bridges **********************************************/ spriteset(bridge_tracks_ELRL, "gfx/ELRL/BridgeTrack_ELRL.png") { template_bridgetracks() } spriteset(bridge_tracks_ELRL_snow, "gfx/ELRL/BridgeTrack_ELRL_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_ELRL_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_ELRL_snow; bridge_tracks_ELRL; } /********************************************** * ELRL Fences: **********************************************/ spriteset(spriteset_fences_ELRL, "gfx/ELRL/Fences_ELRL.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_ELRL_fences,param_fences) { 0: spriteset_fences_ELRL; 1: spriteset_nofences; CB_FAILED; } /********************************************** //* ELRL Electric **********************************************/ //*Gui Electric spriteset(gui_ELRL, "gfx/ELRL/Gui_erail_ELRL.png") { tmpl_gui() } /********************************************** //* ELRL Depot **********************************************/ spriteset(depot_ELRL, "gfx/ELRL/Depot_ELRL.png") { template_depot() } spriteset(depot_ELRL_snow, "gfx/ELRL/Depot_ELRL_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_ELRL_depots, terrain_type ) { TILETYPE_SNOW: depot_ELRL_snow; depot_ELRL; } /********************************************** //* ELRL Signals **********************************************/ /********************************************** //ELRL Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_ELRL, "gfx/ELRL/Semaphores_block_ELRL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_ELRL, "gfx/ELRL/Semaphores_block_ELRL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_ELRL, "gfx/ELRL/Semaphores_block_combo_ELRL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_ELRL, "gfx/ELRL/Semaphores_block_combo_ELRL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_ELRL, "gfx/ELRL/Semaphores_block_entry_ELRL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_ELRL, "gfx/ELRL/Semaphores_block_entry_ELRL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_ELRL, "gfx/ELRL/Semaphores_block_exit_ELRL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_ELRL, "gfx/ELRL/Semaphores_block_exit_ELRL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_ELRL, "gfx/ELRL/Semaphores_path_oneway_ELRL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_ELRL, "gfx/ELRL/Semaphores_path_oneway_ELRL.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_ELRL, "gfx/ELRL/Semaphores_path_twoway_ELRL.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_ELRL, "gfx/ELRL/Semaphores_path_twoway_ELRL.png") { template_semaphore_signals(40) } /********************************************** // ELRL Light Signals **********************************************/ spriteset (spriteset_signals_block_green_ELRL, "gfx/ELRL/Signals_block_ELRL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_ELRL, "gfx/ELRL/Signals_block_ELRL.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_ELRL, "gfx/ELRL/Signals_block_combo_ELRL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_ELRL, "gfx/ELRL/Signals_block_combo_ELRL.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_ELRL, "gfx/ELRL/Signals_block_entry_ELRL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_ELRL, "gfx/ELRL/Signals_block_entry_ELRL.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_ELRL, "gfx/ELRL/Signals_block_exit_ELRL.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_ELRL, "gfx/ELRL/Signals_block_exit_ELRL.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_ELRL, "gfx/ELRL/Signals_path_oneway_ELRL.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_ELRL, "gfx/ELRL/Signals_path_oneway_ELRL.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_ELRL, "gfx/ELRL/Signals_path_twoway_ELRL.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_ELRL, "gfx/ELRL/Signals_path_twoway_ELRL.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_ELRL, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_ELRL; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_ELRL; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_ELRL; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_ELRL; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_ELRL; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_ELRL; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_ELRL; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_ELRL; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_ELRL; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_ELRL; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_ELRL; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_ELRL; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_ELRL; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_ELRL; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_ELRL; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_ELRL; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_ELRL; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_ELRL; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_ELRL; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_ELRL; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_ELRL; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_ELRL; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_ELRL; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_ELRL; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_ELRL_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_ELRL; return CB_FAILED; } /********************************************** //*Catenarypylons **********************************************/ spriteset(spriteset_catenarypylons_ELRL, "gfx/ELRL/CatenaryPylons_ELRL.png") { template_catenarydoublepylons() } switch (FEAT_RAILTYPES, SELF, switch_ELRL_catenarypylons_type, param_original_catenarypylons) { 0 : return spriteset_catenarypylons_ELRL; return CB_FAILED; } //*Catenarywires spriteset(spriteset_catenarywires_ELRL, "gfx/ELRL/CatenaryWires_ELRL.png") { template_catenarywires() } switch (FEAT_RAILTYPES, SELF, switch_ELRL_catenarywires_type, param_original_catenarywires) { 0 : return spriteset_catenarywires_ELRL; return CB_FAILED; } /********************************************** //* ELRL Railtype Properties **********************************************/ item(FEAT_RAILTYPES, ELRL) { property { label: "ELRL"; introduction_date: date(1900,1,1); name: string(STR_TRACK_TYPE_ELRL); toolbar_caption: string(STR_CONSTRUCTION_ELRL); menu_text: string(STR_CONSTRUCTION_ELRL); build_window_caption: string(STR_BUILD_CAPTION_ELRL); autoreplace_text: string(STR_AUTOREPLACE_ELRL); new_engine_text: string(STR_NEW_ENGINE_ELRL); compatible_railtype_list: ["RAIL", "ELTX", "RLOW", "RMED", "RHIG", "SAAN", "NSWR", "YARD", "NSWE", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCAN", "SCBN", "SCCN", "SDAN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLO", "VOLE"]; powered_railtype_list: ["ELTX", "RLOW", "RMED", "RHIG", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCBN", "SCCN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLE"]; construction_cost: 6; maintenance_cost: 1; railtype_flags: bitmask(RAILTYPE_FLAG_CATENARY); speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_ELRL; underlay: ground_switch_underlay_ELRL; tunnels: tunnel_track_ELRL_switch; tunnel_overlay: tunnel_overlay_ELRL_switch; bridge_surfaces: bridge_track_ELRL_switch; level_crossings: LevelCrossing_ELRL_terrain_switch; fences: switch_ELRL_fences; gui: gui_ELRL; depots: get_ELRL_depots; signals: switch_ELRL_signals_type; catenary_wire: switch_ELRL_catenarywires_type; catenary_pylons: switch_ELRL_catenarypylons_type; } } /********************************************** //* END ELRL **********************************************/ /********************************************** //* START ELSA **********************************************/ /********************************************** * ELSA Track overlays for different ground types: **********************************************/ spriteset(track_overlays_ELSA, "gfx/ELSA/Overlay_ELSA.png") { template_overlay() } spriteset(track_overlays_ELSA_arctic, "gfx/ELSA/Overlay_ELSA_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_ELSA, terrain_type) { TILETYPE_SNOW: track_overlays_ELSA_arctic; track_overlays_ELSA; } /********************************************** * ELSA Track underlays for different ground types: **********************************************/ spriteset(track_underlays_ELSA, "gfx/ELSA/Underlay_ELSA.png") { template_underlay() } spriteset(track_underlays_ELSA_arctic, "gfx/ELSA/Underlay_ELSA_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_ELSA, terrain_type) { TILETYPE_SNOW: track_underlays_ELSA_arctic; track_underlays_ELSA; } /********************************************** * ELSA Custom Tunnels **********************************************/ spriteset(tunnel_tracks_ELSA, "gfx/ELSA/Tunnel_ELSA.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_ELSA_snow, "gfx/ELSA/Tunnel_ELSA_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_ELSA, "gfx/ELSA/Tunnel_ELSA.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_ELSA_snow, "gfx/ELSA/Tunnel_ELSA_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_ELSA_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_ELSA_snow; tunnel_tracks_ELSA; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_ELSA_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_ELSA_snow; tunnel_overlay_ELSA; } /********************************************** * ELSA Level crossings: **********************************************/ spriteset(level_crossing_ELSA_empty, "gfx/ELSA/LevelCrossing_ELSA.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_ELSA_closed, "gfx/ELSA/LevelCrossing_ELSA.png") { template_levcrossclosed() } spriteset(level_crossing_ELSA_open, "gfx/ELSA/LevelCrossing_ELSA.png") { template_levcrossopen() } spriteset(level_crossing_ELSA_closed_snow, "gfx/ELSA/LevelCrossing_ELSA_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSA_open_snow, "gfx/ELSA/LevelCrossing_ELSA_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_ELSA_closed_modern, "gfx/ELSA/LevelCrossingModern_ELSA.png") { template_levcrossclosed() } spriteset(level_crossing_ELSA_open_modern, "gfx/ELSA/LevelCrossingModern_ELSA.png") { template_levcrossopen() } spriteset(level_crossing_ELSA_closed_snow_modern, "gfx/ELSA/LevelCrossingModern_ELSA_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSA_open_snow_modern, "gfx/ELSA/LevelCrossingModern_ELSA_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSA_closed_snow ) { 3: level_crossing_ELSA_closed_snow; 1: level_crossing_ELSA_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSA_closed_snow ) { 2: level_crossing_ELSA_closed_snow; 2: level_crossing_ELSA_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSA_closed_snow) { 1: level_crossing_ELSA_closed_snow; 3: level_crossing_ELSA_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSA_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSA_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSA_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSA_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSA_closed_snow; level_crossing_ELSA_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSA_open_snow ) { 3: level_crossing_ELSA_open_snow; 1: level_crossing_ELSA_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSA_open_snow ) { 2: level_crossing_ELSA_open_snow; 2: level_crossing_ELSA_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSA_open_snow) { 1: level_crossing_ELSA_open_snow; 3: level_crossing_ELSA_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSA_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSA_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSA_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSA_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSA_open_snow; level_crossing_ELSA_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSA_closed ) { 3: level_crossing_ELSA_closed; 1: level_crossing_ELSA_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSA_closed ) { 2: level_crossing_ELSA_closed; 2: level_crossing_ELSA_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSA_closed) { 1: level_crossing_ELSA_closed; 3: level_crossing_ELSA_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSA_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSA_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSA_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSA_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSA_closed; level_crossing_ELSA_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSA_open ) { 3: level_crossing_ELSA_open; 1: level_crossing_ELSA_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSA_open ) { 2: level_crossing_ELSA_open; 2: level_crossing_ELSA_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSA_open) { 1: level_crossing_ELSA_open; 3: level_crossing_ELSA_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSA_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSA_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSA_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSA_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSA_open; level_crossing_ELSA_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_ELSA_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSA_closed_snow_switch; lc_ELSA_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_ELSA_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSA_closed_switch; lc_ELSA_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSA_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSA_state_switch_snow; level_crossing_ELSA_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSA_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSA_state_switch_snow; level_crossing_ELSA_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_ELSA_switch, (param[4] == 1)) { 1: level_crossing_ELSA_empty; LevelCrossing_ELSA_terrain_switch; } */ /********************************************** //* ELSA Tracks on bridges **********************************************/ spriteset(bridge_tracks_ELSA, "gfx/ELSA/BridgeTrack_ELSA.png") { template_bridgetracks() } spriteset(bridge_tracks_ELSA_snow, "gfx/ELSA/BridgeTrack_ELSA_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_ELSA_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_ELSA_snow; bridge_tracks_ELSA; } /********************************************** * ELSA Fences: **********************************************/ spriteset(spriteset_fences_ELSA, "gfx/ELSA/Fences_ELSA.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_ELSA_fences,param_fences) { 0: spriteset_fences_ELSA; 1: spriteset_nofences; CB_FAILED; } /********************************************** //* ELSA Electric **********************************************/ //*Gui Electric spriteset(gui_ELSA, "gfx/ELSA/Gui_erail_ELSA.png") { tmpl_gui() } /********************************************** //* ELSA Depot **********************************************/ spriteset(depot_ELSA, "gfx/ELSA/Depot_ELSA.png") { template_depot() } spriteset(depot_ELSA_snow, "gfx/ELSA/Depot_ELSA_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_ELSA_depots, terrain_type ) { TILETYPE_SNOW: depot_ELSA_snow; depot_ELSA; } /********************************************** //* ELSA Signals **********************************************/ /********************************************** //ELSA Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_ELSA, "gfx/ELSA/Semaphores_block_ELSA.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_ELSA, "gfx/ELSA/Semaphores_block_ELSA.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_ELSA, "gfx/ELSA/Semaphores_block_combo_ELSA.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_ELSA, "gfx/ELSA/Semaphores_block_combo_ELSA.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_ELSA, "gfx/ELSA/Semaphores_block_entry_ELSA.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_ELSA, "gfx/ELSA/Semaphores_block_entry_ELSA.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_ELSA, "gfx/ELSA/Semaphores_block_exit_ELSA.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_ELSA, "gfx/ELSA/Semaphores_block_exit_ELSA.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_ELSA, "gfx/ELSA/Semaphores_path_oneway_ELSA.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_ELSA, "gfx/ELSA/Semaphores_path_oneway_ELSA.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_ELSA, "gfx/ELSA/Semaphores_path_twoway_ELSA.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_ELSA, "gfx/ELSA/Semaphores_path_twoway_ELSA.png") { template_semaphore_signals(40) } /********************************************** // ELSA Light Signals **********************************************/ spriteset (spriteset_signals_block_green_ELSA, "gfx/ELSA/Signals_block_ELSA.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_ELSA, "gfx/ELSA/Signals_block_ELSA.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_ELSA, "gfx/ELSA/Signals_block_combo_ELSA.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_ELSA, "gfx/ELSA/Signals_block_combo_ELSA.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_ELSA, "gfx/ELSA/Signals_block_entry_ELSA.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_ELSA, "gfx/ELSA/Signals_block_entry_ELSA.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_ELSA, "gfx/ELSA/Signals_block_exit_ELSA.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_ELSA, "gfx/ELSA/Signals_block_exit_ELSA.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_ELSA, "gfx/ELSA/Signals_path_oneway_ELSA.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_ELSA, "gfx/ELSA/Signals_path_oneway_ELSA.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_ELSA, "gfx/ELSA/Signals_path_twoway_ELSA.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_ELSA, "gfx/ELSA/Signals_path_twoway_ELSA.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_ELSA, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_ELSA; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_ELSA; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_ELSA; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_ELSA; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_ELSA; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_ELSA; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_ELSA; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_ELSA; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_ELSA; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_ELSA; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_ELSA; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_ELSA; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_ELSA; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_ELSA; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_ELSA; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_ELSA; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_ELSA; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_ELSA; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_ELSA; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_ELSA; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_ELSA; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_ELSA; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_ELSA; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_ELSA; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_ELSA_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_ELSA; return CB_FAILED; } /********************************************** //*Catenarypylons **********************************************/ spriteset(spriteset_catenarypylons_ELSA, "gfx/ELSA/CatenaryPylons_ELSA.png") { template_catenarymultipylons() } switch (FEAT_RAILTYPES, SELF, switch_ELSA_catenarypylons_type, param_original_catenarypylons) { 0 : return spriteset_catenarypylons_ELSA; return CB_FAILED; } //*Catenarywires spriteset(spriteset_catenarywires_ELSA, "gfx/ELSA/CatenaryWires_ELSA.png") { template_catenarywires() } switch (FEAT_RAILTYPES, SELF, switch_ELSA_catenarywires_type, param_original_catenarywires) { 0 : return spriteset_catenarywires_ELSA; return CB_FAILED; } /********************************************** //* ELSA Railtype Properties **********************************************/ item(FEAT_RAILTYPES, ELSA) { property { label: "ELSA"; introduction_date: date(1900,1,1); name: string(STR_TRACK_TYPE_ELSA); toolbar_caption: string(STR_CONSTRUCTION_ELSA); menu_text: string(STR_CONSTRUCTION_ELSA); build_window_caption: string(STR_BUILD_CAPTION_ELSA); autoreplace_text: string(STR_AUTOREPLACE_ELSA); new_engine_text: string(STR_NEW_ENGINE_ELSA); powered_railtype_list: ["ELTX", "RLOW", "RMED", "RHIG", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCBN", "SCCN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLE"]; construction_cost: 6; maintenance_cost: 1; railtype_flags: bitmask(RAILTYPE_FLAG_CATENARY); speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_ELSA; underlay: ground_switch_underlay_ELSA; tunnels: tunnel_track_ELSA_switch; tunnel_overlay: tunnel_overlay_ELSA_switch; bridge_surfaces: bridge_track_ELSA_switch; level_crossings: LevelCrossing_ELSA_terrain_switch; fences: switch_ELSA_fences; gui: gui_ELSA; depots: get_ELSA_depots; signals: switch_ELSA_signals_type; catenary_wire: switch_ELSA_catenarywires_type; catenary_pylons: switch_ELSA_catenarypylons_type; } } /********************************************** //* END ELSA **********************************************/ /********************************************** //* START ELSC **********************************************/ /********************************************** * ELSC Track overlays for different ground types: **********************************************/ spriteset(track_overlays_ELSC, "gfx/ELSC/Overlay_ELSC.png") { template_overlay() } spriteset(track_overlays_ELSC_arctic, "gfx/ELSC/Overlay_ELSC_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_ELSC, terrain_type) { TILETYPE_SNOW: track_overlays_ELSC_arctic; track_overlays_ELSC; } /********************************************** * ELSC Track underlays for different ground types: **********************************************/ spriteset(track_underlays_ELSC, "gfx/ELSC/Underlay_ELSC.png") { template_underlay() } spriteset(track_underlays_ELSC_arctic, "gfx/ELSC/Underlay_ELSC_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_ELSC, terrain_type) { TILETYPE_SNOW: track_underlays_ELSC_arctic; track_underlays_ELSC; } /********************************************** * ELSC Custom Tunnels **********************************************/ spriteset(tunnel_tracks_ELSC, "gfx/ELSC/Tunnel_ELSC.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_ELSC_snow, "gfx/ELSC/Tunnel_ELSC_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_ELSC, "gfx/ELSC/Tunnel_ELSC.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_ELSC_snow, "gfx/ELSC/Tunnel_ELSC_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_ELSC_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_ELSC_snow; tunnel_tracks_ELSC; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_ELSC_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_ELSC_snow; tunnel_overlay_ELSC; } /********************************************** * ELSC Level crossings: **********************************************/ spriteset(level_crossing_ELSC_empty, "gfx/ELSC/LevelCrossing_ELSC.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_ELSC_closed, "gfx/ELSC/LevelCrossing_ELSC.png") { template_levcrossclosed() } spriteset(level_crossing_ELSC_open, "gfx/ELSC/LevelCrossing_ELSC.png") { template_levcrossopen() } spriteset(level_crossing_ELSC_closed_snow, "gfx/ELSC/LevelCrossing_ELSC_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSC_open_snow, "gfx/ELSC/LevelCrossing_ELSC_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_ELSC_closed_modern, "gfx/ELSC/LevelCrossingModern_ELSC.png") { template_levcrossclosed() } spriteset(level_crossing_ELSC_open_modern, "gfx/ELSC/LevelCrossingModern_ELSC.png") { template_levcrossopen() } spriteset(level_crossing_ELSC_closed_snow_modern, "gfx/ELSC/LevelCrossingModern_ELSC_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSC_open_snow_modern, "gfx/ELSC/LevelCrossingModern_ELSC_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSC_closed_snow ) { 3: level_crossing_ELSC_closed_snow; 1: level_crossing_ELSC_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSC_closed_snow ) { 2: level_crossing_ELSC_closed_snow; 2: level_crossing_ELSC_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSC_closed_snow) { 1: level_crossing_ELSC_closed_snow; 3: level_crossing_ELSC_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSC_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSC_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSC_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSC_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSC_closed_snow; level_crossing_ELSC_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSC_open_snow ) { 3: level_crossing_ELSC_open_snow; 1: level_crossing_ELSC_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSC_open_snow ) { 2: level_crossing_ELSC_open_snow; 2: level_crossing_ELSC_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSC_open_snow) { 1: level_crossing_ELSC_open_snow; 3: level_crossing_ELSC_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSC_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSC_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSC_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSC_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSC_open_snow; level_crossing_ELSC_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSC_closed ) { 3: level_crossing_ELSC_closed; 1: level_crossing_ELSC_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSC_closed ) { 2: level_crossing_ELSC_closed; 2: level_crossing_ELSC_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSC_closed) { 1: level_crossing_ELSC_closed; 3: level_crossing_ELSC_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSC_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSC_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSC_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSC_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSC_closed; level_crossing_ELSC_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSC_open ) { 3: level_crossing_ELSC_open; 1: level_crossing_ELSC_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSC_open ) { 2: level_crossing_ELSC_open; 2: level_crossing_ELSC_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSC_open) { 1: level_crossing_ELSC_open; 3: level_crossing_ELSC_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSC_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSC_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSC_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSC_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSC_open; level_crossing_ELSC_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_ELSC_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSC_closed_snow_switch; lc_ELSC_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_ELSC_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSC_closed_switch; lc_ELSC_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSC_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSC_state_switch_snow; level_crossing_ELSC_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSC_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSC_state_switch_snow; level_crossing_ELSC_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_ELSC_switch, (param[4] == 1)) { 1: level_crossing_ELSC_empty; LevelCrossing_ELSC_terrain_switch; } */ /********************************************** //* ELSC Tracks on bridges **********************************************/ spriteset(bridge_tracks_ELSC, "gfx/ELSC/BridgeTrack_ELSC.png") { template_bridgetracks() } spriteset(bridge_tracks_ELSC_snow, "gfx/ELSC/BridgeTrack_ELSC_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_ELSC_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_ELSC_snow; bridge_tracks_ELSC; } /********************************************** * ELSC Fences: **********************************************/ spriteset(spriteset_fences_ELSC, "gfx/ELSC/Fences_ELSC.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_ELSC_fences,param_fences) { 0: spriteset_fences_ELSC; 1: spriteset_nofences; CB_FAILED; } /********************************************** //* ELSC Electric **********************************************/ //*Gui Electric spriteset(gui_ELSC, "gfx/ELSC/Gui_erail_ELSC.png") { tmpl_gui() } /********************************************** //* ELSC Depot **********************************************/ spriteset(depot_ELSC, "gfx/ELSC/Depot_ELSC.png") { template_depot() } spriteset(depot_ELSC_snow, "gfx/ELSC/Depot_ELSC_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_ELSC_depots, terrain_type ) { TILETYPE_SNOW: depot_ELSC_snow; depot_ELSC; } /********************************************** //* ELSC Signals **********************************************/ /********************************************** //ELSC Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_ELSC, "gfx/ELSC/Semaphores_block_ELSC.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_ELSC, "gfx/ELSC/Semaphores_block_ELSC.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_ELSC, "gfx/ELSC/Semaphores_block_combo_ELSC.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_ELSC, "gfx/ELSC/Semaphores_block_combo_ELSC.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_ELSC, "gfx/ELSC/Semaphores_block_entry_ELSC.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_ELSC, "gfx/ELSC/Semaphores_block_entry_ELSC.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_ELSC, "gfx/ELSC/Semaphores_block_exit_ELSC.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_ELSC, "gfx/ELSC/Semaphores_block_exit_ELSC.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_ELSC, "gfx/ELSC/Semaphores_path_oneway_ELSC.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_ELSC, "gfx/ELSC/Semaphores_path_oneway_ELSC.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_ELSC, "gfx/ELSC/Semaphores_path_twoway_ELSC.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_ELSC, "gfx/ELSC/Semaphores_path_twoway_ELSC.png") { template_semaphore_signals(40) } /********************************************** // ELSC Light Signals **********************************************/ spriteset (spriteset_signals_block_green_ELSC, "gfx/ELSC/Signals_block_ELSC.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_ELSC, "gfx/ELSC/Signals_block_ELSC.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_ELSC, "gfx/ELSC/Signals_block_combo_ELSC.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_ELSC, "gfx/ELSC/Signals_block_combo_ELSC.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_ELSC, "gfx/ELSC/Signals_block_entry_ELSC.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_ELSC, "gfx/ELSC/Signals_block_entry_ELSC.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_ELSC, "gfx/ELSC/Signals_block_exit_ELSC.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_ELSC, "gfx/ELSC/Signals_block_exit_ELSC.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_ELSC, "gfx/ELSC/Signals_path_oneway_ELSC.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_ELSC, "gfx/ELSC/Signals_path_oneway_ELSC.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_ELSC, "gfx/ELSC/Signals_path_twoway_ELSC.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_ELSC, "gfx/ELSC/Signals_path_twoway_ELSC.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_ELSC, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_ELSC; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_ELSC; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_ELSC; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_ELSC; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_ELSC; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_ELSC; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_ELSC; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_ELSC; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_ELSC; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_ELSC; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_ELSC; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_ELSC; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_ELSC; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_ELSC; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_ELSC; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_ELSC; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_ELSC; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_ELSC; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_ELSC; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_ELSC; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_ELSC; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_ELSC; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_ELSC; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_ELSC; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_ELSC_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_ELSC; return CB_FAILED; } /********************************************** //*Catenarypylons **********************************************/ spriteset(spriteset_catenarypylons_ELSC, "gfx/ELSC/CatenaryPylons_ELSC.png") { template_catenarydoublepylons() } switch (FEAT_RAILTYPES, SELF, switch_ELSC_catenarypylons_type, param_original_catenarypylons) { 0 : return spriteset_catenarypylons_ELSC; return CB_FAILED; } //*Catenarywires spriteset(spriteset_catenarywires_ELSC, "gfx/ELSC/CatenaryWires_ELSC.png") { template_catenarywires() } switch (FEAT_RAILTYPES, SELF, switch_ELSC_catenarywires_type, param_original_catenarywires) { 0 : return spriteset_catenarywires_ELSC; return CB_FAILED; } /********************************************** //* ELSC Railtype Properties **********************************************/ item(FEAT_RAILTYPES, ELSC) { property { label: "ELSC"; introduction_date: date(1900,1,1); name: string(STR_TRACK_TYPE_ELSC); toolbar_caption: string(STR_CONSTRUCTION_ELSC); menu_text: string(STR_CONSTRUCTION_ELSC); build_window_caption: string(STR_BUILD_CAPTION_ELSC); autoreplace_text: string(STR_AUTOREPLACE_ELSC); new_engine_text: string(STR_NEW_ENGINE_ELSC); powered_railtype_list: ["ELTX", "RLOW", "RMED", "RHIG", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCBN", "SCCN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLE"]; construction_cost: 6; maintenance_cost: 1; railtype_flags: bitmask(RAILTYPE_FLAG_CATENARY); speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_ELSC; underlay: ground_switch_underlay_ELSC; tunnels: tunnel_track_ELSC_switch; tunnel_overlay: tunnel_overlay_ELSC_switch; bridge_surfaces: bridge_track_ELSC_switch; level_crossings: LevelCrossing_ELSC_terrain_switch; fences: switch_ELSC_fences; gui: gui_ELSC; depots: get_ELSC_depots; signals: switch_ELSC_signals_type; catenary_wire: switch_ELSC_catenarywires_type; catenary_pylons: switch_ELSC_catenarypylons_type; } } /********************************************** //* END ELSC **********************************************/ /********************************************** //* START ELSD **********************************************/ /********************************************** * ELSD Track overlays for different ground types: **********************************************/ spriteset(track_overlays_ELSD, "gfx/ELSD/Overlay_ELSD.png") { template_overlay() } spriteset(track_overlays_ELSD_arctic, "gfx/ELSD/Overlay_ELSD_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_ELSD, terrain_type) { TILETYPE_SNOW: track_overlays_ELSD_arctic; track_overlays_ELSD; } /********************************************** * ELSD Track underlays for different ground types: **********************************************/ spriteset(track_underlays_ELSD, "gfx/ELSD/Underlay_ELSD.png") { template_underlay() } spriteset(track_underlays_ELSD_arctic, "gfx/ELSD/Underlay_ELSD_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_ELSD, terrain_type) { TILETYPE_SNOW: track_underlays_ELSD_arctic; track_underlays_ELSD; } /********************************************** * ELSD Custom Tunnels **********************************************/ spriteset(tunnel_tracks_ELSD, "gfx/ELSD/Tunnel_ELSD.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_ELSD_snow, "gfx/ELSD/Tunnel_ELSD_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_ELSD, "gfx/ELSD/Tunnel_ELSD.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_ELSD_snow, "gfx/ELSD/Tunnel_ELSD_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_ELSD_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_ELSD_snow; tunnel_tracks_ELSD; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_ELSD_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_ELSD_snow; tunnel_overlay_ELSD; } /********************************************** * ELSD Level crossings: **********************************************/ spriteset(level_crossing_ELSD_empty, "gfx/ELSD/LevelCrossing_ELSD.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_ELSD_closed, "gfx/ELSD/LevelCrossing_ELSD.png") { template_levcrossclosed() } spriteset(level_crossing_ELSD_open, "gfx/ELSD/LevelCrossing_ELSD.png") { template_levcrossopen() } spriteset(level_crossing_ELSD_closed_snow, "gfx/ELSD/LevelCrossing_ELSD_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSD_open_snow, "gfx/ELSD/LevelCrossing_ELSD_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_ELSD_closed_modern, "gfx/ELSD/LevelCrossingModern_ELSD.png") { template_levcrossclosed() } spriteset(level_crossing_ELSD_open_modern, "gfx/ELSD/LevelCrossingModern_ELSD.png") { template_levcrossopen() } spriteset(level_crossing_ELSD_closed_snow_modern, "gfx/ELSD/LevelCrossingModern_ELSD_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSD_open_snow_modern, "gfx/ELSD/LevelCrossingModern_ELSD_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSD_closed_snow ) { 3: level_crossing_ELSD_closed_snow; 1: level_crossing_ELSD_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSD_closed_snow ) { 2: level_crossing_ELSD_closed_snow; 2: level_crossing_ELSD_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSD_closed_snow) { 1: level_crossing_ELSD_closed_snow; 3: level_crossing_ELSD_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSD_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSD_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSD_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSD_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSD_closed_snow; level_crossing_ELSD_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSD_open_snow ) { 3: level_crossing_ELSD_open_snow; 1: level_crossing_ELSD_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSD_open_snow ) { 2: level_crossing_ELSD_open_snow; 2: level_crossing_ELSD_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSD_open_snow) { 1: level_crossing_ELSD_open_snow; 3: level_crossing_ELSD_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSD_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSD_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSD_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSD_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSD_open_snow; level_crossing_ELSD_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSD_closed ) { 3: level_crossing_ELSD_closed; 1: level_crossing_ELSD_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSD_closed ) { 2: level_crossing_ELSD_closed; 2: level_crossing_ELSD_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSD_closed) { 1: level_crossing_ELSD_closed; 3: level_crossing_ELSD_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSD_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSD_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSD_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSD_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSD_closed; level_crossing_ELSD_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSD_open ) { 3: level_crossing_ELSD_open; 1: level_crossing_ELSD_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSD_open ) { 2: level_crossing_ELSD_open; 2: level_crossing_ELSD_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSD_open) { 1: level_crossing_ELSD_open; 3: level_crossing_ELSD_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSD_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSD_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSD_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSD_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSD_open; level_crossing_ELSD_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_ELSD_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSD_closed_snow_switch; lc_ELSD_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_ELSD_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSD_closed_switch; lc_ELSD_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSD_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSD_state_switch_snow; level_crossing_ELSD_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSD_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSD_state_switch_snow; level_crossing_ELSD_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_ELSD_switch, (param[4] == 1)) { 1: level_crossing_ELSD_empty; LevelCrossing_ELSD_terrain_switch; } */ /********************************************** //* ELSD Tracks on bridges **********************************************/ spriteset(bridge_tracks_ELSD, "gfx/ELSD/BridgeTrack_ELSD.png") { template_bridgetracks() } spriteset(bridge_tracks_ELSD_snow, "gfx/ELSD/BridgeTrack_ELSD_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_ELSD_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_ELSD_snow; bridge_tracks_ELSD; } /********************************************** * ELSD Fences: **********************************************/ spriteset(spriteset_fences_ELSD, "gfx/ELSD/Fences_ELSD.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_ELSD_fences,param_fences) { 0: spriteset_fences_ELSD; 1: spriteset_nofences; CB_FAILED; } /********************************************** //* ELSD Electric **********************************************/ //*Gui Electric spriteset(gui_ELSD, "gfx/ELSD/Gui_erail_ELSD.png") { tmpl_gui() } /********************************************** //* ELSD Depot **********************************************/ spriteset(depot_ELSD, "gfx/ELSD/Depot_ELSD.png") { template_depot() } spriteset(depot_ELSD_snow, "gfx/ELSD/Depot_ELSD_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_ELSD_depots, terrain_type ) { TILETYPE_SNOW: depot_ELSD_snow; depot_ELSD; } /********************************************** //* ELSD Signals **********************************************/ /********************************************** //ELSD Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_ELSD, "gfx/ELSD/Semaphores_block_ELSD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_ELSD, "gfx/ELSD/Semaphores_block_ELSD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_ELSD, "gfx/ELSD/Semaphores_block_combo_ELSD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_ELSD, "gfx/ELSD/Semaphores_block_combo_ELSD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_ELSD, "gfx/ELSD/Semaphores_block_entry_ELSD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_ELSD, "gfx/ELSD/Semaphores_block_entry_ELSD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_ELSD, "gfx/ELSD/Semaphores_block_exit_ELSD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_ELSD, "gfx/ELSD/Semaphores_block_exit_ELSD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_ELSD, "gfx/ELSD/Semaphores_path_oneway_ELSD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_ELSD, "gfx/ELSD/Semaphores_path_oneway_ELSD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_ELSD, "gfx/ELSD/Semaphores_path_twoway_ELSD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_ELSD, "gfx/ELSD/Semaphores_path_twoway_ELSD.png") { template_semaphore_signals(40) } /********************************************** // ELSD Light Signals **********************************************/ spriteset (spriteset_signals_block_green_ELSD, "gfx/ELSD/Signals_block_ELSD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_ELSD, "gfx/ELSD/Signals_block_ELSD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_ELSD, "gfx/ELSD/Signals_block_combo_ELSD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_ELSD, "gfx/ELSD/Signals_block_combo_ELSD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_ELSD, "gfx/ELSD/Signals_block_entry_ELSD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_ELSD, "gfx/ELSD/Signals_block_entry_ELSD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_ELSD, "gfx/ELSD/Signals_block_exit_ELSD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_ELSD, "gfx/ELSD/Signals_block_exit_ELSD.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_ELSD, "gfx/ELSD/Signals_path_oneway_ELSD.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_ELSD, "gfx/ELSD/Signals_path_oneway_ELSD.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_ELSD, "gfx/ELSD/Signals_path_twoway_ELSD.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_ELSD, "gfx/ELSD/Signals_path_twoway_ELSD.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_ELSD, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_ELSD; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_ELSD; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_ELSD; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_ELSD; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_ELSD; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_ELSD; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_ELSD; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_ELSD; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_ELSD; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_ELSD; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_ELSD; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_ELSD; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_ELSD; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_ELSD; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_ELSD; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_ELSD; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_ELSD; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_ELSD; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_ELSD; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_ELSD; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_ELSD; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_ELSD; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_ELSD; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_ELSD; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_ELSD_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_ELSD; return CB_FAILED; } /********************************************** //*Catenarypylons **********************************************/ spriteset(spriteset_catenarypylons_ELSD, "gfx/ELSD/CatenaryPylons_ELSD.png") { template_catenarymultipylons() } switch (FEAT_RAILTYPES, SELF, switch_ELSD_catenarypylons_type, param_original_catenarypylons) { 0 : return spriteset_catenarypylons_ELSD; return CB_FAILED; } //*Catenarywires spriteset(spriteset_catenarywires_ELSD, "gfx/ELSD/CatenaryWires_ELSD.png") { template_catenarywires() } switch (FEAT_RAILTYPES, SELF, switch_ELSD_catenarywires_type, param_original_catenarywires) { 0 : return spriteset_catenarywires_ELSD; return CB_FAILED; } /********************************************** //* ELSD Railtype Properties **********************************************/ item(FEAT_RAILTYPES, ELSD) { property { label: "ELSD"; introduction_date: date(1900,1,1); name: string(STR_TRACK_TYPE_ELSD); toolbar_caption: string(STR_CONSTRUCTION_ELSD); menu_text: string(STR_CONSTRUCTION_ELSD); build_window_caption: string(STR_BUILD_CAPTION_ELSD); autoreplace_text: string(STR_AUTOREPLACE_ELSD); new_engine_text: string(STR_NEW_ENGINE_ELSD); powered_railtype_list: ["ELTX", "RLOW", "RMED", "RHIG", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCBN", "SCCN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLE"]; construction_cost: 6; maintenance_cost: 1; railtype_flags: bitmask(RAILTYPE_FLAG_CATENARY); speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_ELSD; underlay: ground_switch_underlay_ELSD; tunnels: tunnel_track_ELSD_switch; tunnel_overlay: tunnel_overlay_ELSD_switch; bridge_surfaces: bridge_track_ELSD_switch; level_crossings: LevelCrossing_ELSD_terrain_switch; fences: switch_ELSD_fences; gui: gui_ELSD; depots: get_ELSD_depots; signals: switch_ELSD_signals_type; catenary_wire: switch_ELSD_catenarywires_type; catenary_pylons: switch_ELSD_catenarypylons_type; } } /********************************************** //* END ELSD **********************************************/ /********************************************** //* START ELSE **********************************************/ /********************************************** * ELSE Track overlays for different ground types: **********************************************/ spriteset(track_overlays_ELSE, "gfx/ELSE/Overlay_ELSE.png") { template_overlay() } spriteset(track_overlays_ELSE_arctic, "gfx/ELSE/Overlay_ELSE_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_ELSE, terrain_type) { TILETYPE_SNOW: track_overlays_ELSE_arctic; track_overlays_ELSE; } /********************************************** * ELSE Track underlays for different ground types: **********************************************/ spriteset(track_underlays_ELSE, "gfx/ELSE/Underlay_ELSE.png") { template_underlay() } spriteset(track_underlays_ELSE_arctic, "gfx/ELSE/Underlay_ELSE_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_ELSE, terrain_type) { TILETYPE_SNOW: track_underlays_ELSE_arctic; track_underlays_ELSE; } /********************************************** * ELSE Custom Tunnels **********************************************/ spriteset(tunnel_tracks_ELSE, "gfx/ELSE/Tunnel_ELSE.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_ELSE_snow, "gfx/ELSE/Tunnel_ELSE_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_ELSE, "gfx/ELSE/Tunnel_ELSE.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_ELSE_snow, "gfx/ELSE/Tunnel_ELSE_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_ELSE_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_ELSE_snow; tunnel_tracks_ELSE; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_ELSE_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_ELSE_snow; tunnel_overlay_ELSE; } /********************************************** * ELSE Level crossings: **********************************************/ spriteset(level_crossing_ELSE_empty, "gfx/ELSE/LevelCrossing_ELSE.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_ELSE_closed, "gfx/ELSE/LevelCrossing_ELSE.png") { template_levcrossclosed() } spriteset(level_crossing_ELSE_open, "gfx/ELSE/LevelCrossing_ELSE.png") { template_levcrossopen() } spriteset(level_crossing_ELSE_closed_snow, "gfx/ELSE/LevelCrossing_ELSE_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSE_open_snow, "gfx/ELSE/LevelCrossing_ELSE_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_ELSE_closed_modern, "gfx/ELSE/LevelCrossingModern_ELSE.png") { template_levcrossclosed() } spriteset(level_crossing_ELSE_open_modern, "gfx/ELSE/LevelCrossingModern_ELSE.png") { template_levcrossopen() } spriteset(level_crossing_ELSE_closed_snow_modern, "gfx/ELSE/LevelCrossingModern_ELSE_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELSE_open_snow_modern, "gfx/ELSE/LevelCrossingModern_ELSE_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSE_closed_snow ) { 3: level_crossing_ELSE_closed_snow; 1: level_crossing_ELSE_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSE_closed_snow ) { 2: level_crossing_ELSE_closed_snow; 2: level_crossing_ELSE_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSE_closed_snow) { 1: level_crossing_ELSE_closed_snow; 3: level_crossing_ELSE_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSE_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSE_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSE_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSE_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSE_closed_snow; level_crossing_ELSE_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSE_open_snow ) { 3: level_crossing_ELSE_open_snow; 1: level_crossing_ELSE_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSE_open_snow ) { 2: level_crossing_ELSE_open_snow; 2: level_crossing_ELSE_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSE_open_snow) { 1: level_crossing_ELSE_open_snow; 3: level_crossing_ELSE_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSE_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSE_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSE_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSE_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSE_open_snow; level_crossing_ELSE_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSE_closed ) { 3: level_crossing_ELSE_closed; 1: level_crossing_ELSE_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSE_closed ) { 2: level_crossing_ELSE_closed; 2: level_crossing_ELSE_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSE_closed) { 1: level_crossing_ELSE_closed; 3: level_crossing_ELSE_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSE_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSE_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSE_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSE_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSE_closed; level_crossing_ELSE_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELSE_open ) { 3: level_crossing_ELSE_open; 1: level_crossing_ELSE_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELSE_open ) { 2: level_crossing_ELSE_open; 2: level_crossing_ELSE_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELSE_open) { 1: level_crossing_ELSE_open; 3: level_crossing_ELSE_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELSE_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELSE_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELSE_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELSE_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELSE_open; level_crossing_ELSE_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_ELSE_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSE_closed_snow_switch; lc_ELSE_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_ELSE_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELSE_closed_switch; lc_ELSE_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSE_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSE_state_switch_snow; level_crossing_ELSE_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELSE_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELSE_state_switch_snow; level_crossing_ELSE_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_ELSE_switch, (param[4] == 1)) { 1: level_crossing_ELSE_empty; LevelCrossing_ELSE_terrain_switch; } */ /********************************************** //* ELSE Tracks on bridges **********************************************/ spriteset(bridge_tracks_ELSE, "gfx/ELSE/BridgeTrack_ELSE.png") { template_bridgetracks() } spriteset(bridge_tracks_ELSE_snow, "gfx/ELSE/BridgeTrack_ELSE_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_ELSE_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_ELSE_snow; bridge_tracks_ELSE; } /********************************************** * ELSE Fences: **********************************************/ spriteset(spriteset_fences_ELSE, "gfx/ELSE/Fences_ELSE.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_ELSE_fences,param_fences) { 0: spriteset_fences_ELSE; 1: spriteset_nofences; CB_FAILED; } /********************************************** //* ELSE Electric **********************************************/ //*Gui Electric spriteset(gui_ELSE, "gfx/ELSE/Gui_erail_ELSE.png") { tmpl_gui() } /********************************************** //* ELSE Depot **********************************************/ spriteset(depot_ELSE, "gfx/ELSE/Depot_ELSE.png") { template_depot() } spriteset(depot_ELSE_snow, "gfx/ELSE/Depot_ELSE_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_ELSE_depots, terrain_type ) { TILETYPE_SNOW: depot_ELSE_snow; depot_ELSE; } /********************************************** //* ELSE Signals **********************************************/ /********************************************** //ELSE Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_ELSE, "gfx/ELSE/Semaphores_block_ELSE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_ELSE, "gfx/ELSE/Semaphores_block_ELSE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_ELSE, "gfx/ELSE/Semaphores_block_combo_ELSE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_ELSE, "gfx/ELSE/Semaphores_block_combo_ELSE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_ELSE, "gfx/ELSE/Semaphores_block_entry_ELSE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_ELSE, "gfx/ELSE/Semaphores_block_entry_ELSE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_ELSE, "gfx/ELSE/Semaphores_block_exit_ELSE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_ELSE, "gfx/ELSE/Semaphores_block_exit_ELSE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_ELSE, "gfx/ELSE/Semaphores_path_oneway_ELSE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_ELSE, "gfx/ELSE/Semaphores_path_oneway_ELSE.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_ELSE, "gfx/ELSE/Semaphores_path_twoway_ELSE.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_ELSE, "gfx/ELSE/Semaphores_path_twoway_ELSE.png") { template_semaphore_signals(40) } /********************************************** // ELSE Light Signals **********************************************/ spriteset (spriteset_signals_block_green_ELSE, "gfx/ELSE/Signals_block_ELSE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_ELSE, "gfx/ELSE/Signals_block_ELSE.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_ELSE, "gfx/ELSE/Signals_block_combo_ELSE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_ELSE, "gfx/ELSE/Signals_block_combo_ELSE.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_ELSE, "gfx/ELSE/Signals_block_entry_ELSE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_ELSE, "gfx/ELSE/Signals_block_entry_ELSE.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_ELSE, "gfx/ELSE/Signals_block_exit_ELSE.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_ELSE, "gfx/ELSE/Signals_block_exit_ELSE.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_ELSE, "gfx/ELSE/Signals_path_oneway_ELSE.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_ELSE, "gfx/ELSE/Signals_path_oneway_ELSE.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_ELSE, "gfx/ELSE/Signals_path_twoway_ELSE.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_ELSE, "gfx/ELSE/Signals_path_twoway_ELSE.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_ELSE, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_ELSE; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_ELSE; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_ELSE; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_ELSE; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_ELSE; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_ELSE; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_ELSE; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_ELSE; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_ELSE; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_ELSE; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_ELSE; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_ELSE; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_ELSE; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_ELSE; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_ELSE; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_ELSE; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_ELSE; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_ELSE; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_ELSE; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_ELSE; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_ELSE; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_ELSE; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_ELSE; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_ELSE; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_ELSE_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_ELSE; return CB_FAILED; } /********************************************** //*Catenarypylons **********************************************/ spriteset(spriteset_catenarypylons_ELSE, "gfx/ELSE/CatenaryPylons_ELSE.png") { template_catenarydoublepylons() } switch (FEAT_RAILTYPES, SELF, switch_ELSE_catenarypylons_type, param_original_catenarypylons) { 0 : return spriteset_catenarypylons_ELSE; return CB_FAILED; } //*Catenarywires spriteset(spriteset_catenarywires_ELSE, "gfx/ELSE/CatenaryWires_ELSE.png") { template_catenarywires() } switch (FEAT_RAILTYPES, SELF, switch_ELSE_catenarywires_type, param_original_catenarywires) { 0 : return spriteset_catenarywires_ELSE; return CB_FAILED; } /********************************************** //* ELSE Railtype Properties **********************************************/ item(FEAT_RAILTYPES, ELSE) { property { label: "ELSE"; introduction_date: date(1900,1,1); name: string(STR_TRACK_TYPE_ELSE); toolbar_caption: string(STR_CONSTRUCTION_ELSE); menu_text: string(STR_CONSTRUCTION_ELSE); build_window_caption: string(STR_BUILD_CAPTION_ELSE); autoreplace_text: string(STR_AUTOREPLACE_ELSE); new_engine_text: string(STR_NEW_ENGINE_ELSE); powered_railtype_list: ["ELTX", "RLOW", "RMED", "RHIG", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCBN", "SCCN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLE"]; construction_cost: 6; maintenance_cost: 1; railtype_flags: bitmask(RAILTYPE_FLAG_CATENARY); speed_limit: 0; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_ELSE; underlay: ground_switch_underlay_ELSE; tunnels: tunnel_track_ELSE_switch; tunnel_overlay: tunnel_overlay_ELSE_switch; bridge_surfaces: bridge_track_ELSE_switch; level_crossings: LevelCrossing_ELSE_terrain_switch; fences: switch_ELSE_fences; gui: gui_ELSE; depots: get_ELSE_depots; signals: switch_ELSE_signals_type; catenary_wire: switch_ELSE_catenarywires_type; catenary_pylons: switch_ELSE_catenarypylons_type; } } /********************************************** //* END ELSE **********************************************/ /********************************************** //* START ELYD **********************************************/ /********************************************** * ELYD Track overlays for different ground types: **********************************************/ spriteset(track_overlays_ELYD, "gfx/ELYD/Overlay_ELYD.png") { template_overlay() } spriteset(track_overlays_ELYD_arctic, "gfx/ELYD/Overlay_ELYD_snow.png") { template_overlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_overlay_ELYD, terrain_type) { TILETYPE_SNOW: track_overlays_ELYD_arctic; track_overlays_ELYD; } /********************************************** * ELYD Track underlays for different ground types: **********************************************/ spriteset(track_underlays_ELYD, "gfx/ELYD/Underlay_ELYD.png") { template_underlay() } spriteset(track_underlays_ELYD_arctic, "gfx/ELYD/Underlay_ELYD_snow.png") { template_underlay() } switch(FEAT_RAILTYPES, SELF, ground_switch_underlay_ELYD, terrain_type) { TILETYPE_SNOW: track_underlays_ELYD_arctic; track_underlays_ELYD; } /********************************************** * ELYD Custom Tunnels **********************************************/ spriteset(tunnel_tracks_ELYD, "gfx/ELYD/Tunnel_ELYD.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_tracks_ELYD_snow, "gfx/ELYD/Tunnel_ELYD_snow.png") { tmpl_tunnel_overlaytracks() } spriteset(tunnel_overlay_ELYD, "gfx/ELYD/Tunnel_ELYD.png") { tmpl_tunnel_overlays() } spriteset(tunnel_overlay_ELYD_snow, "gfx/ELYD/Tunnel_ELYD_snow.png") { tmpl_tunnel_overlays() } switch(FEAT_RAILTYPES, SELF, tunnel_track_ELYD_switch, terrain_type) { TILETYPE_SNOW: tunnel_tracks_ELYD_snow; tunnel_tracks_ELYD; } switch(FEAT_RAILTYPES, SELF, tunnel_overlay_ELYD_switch, terrain_type) { TILETYPE_SNOW: tunnel_overlay_ELYD_snow; tunnel_overlay_ELYD; } /********************************************** * ELYD Level crossings: **********************************************/ spriteset(level_crossing_ELYD_empty, "gfx/ELYD/LevelCrossing_ELYD.png") { tmpl_level_crossing_railtypes_empty() } spriteset(level_crossing_ELYD_closed, "gfx/ELYD/LevelCrossing_ELYD.png") { template_levcrossclosed() } spriteset(level_crossing_ELYD_open, "gfx/ELYD/LevelCrossing_ELYD.png") { template_levcrossopen() } spriteset(level_crossing_ELYD_closed_snow, "gfx/ELYD/LevelCrossing_ELYD_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELYD_open_snow, "gfx/ELYD/LevelCrossing_ELYD_snow.png") { template_levcrossopen() } // modern level crossings: spriteset(level_crossing_ELYD_closed_modern, "gfx/ELYD/LevelCrossingModern_ELYD.png") { template_levcrossclosed() } spriteset(level_crossing_ELYD_open_modern, "gfx/ELYD/LevelCrossingModern_ELYD.png") { template_levcrossopen() } spriteset(level_crossing_ELYD_closed_snow_modern, "gfx/ELYD/LevelCrossingModern_ELYD_snow.png") { template_levcrossclosed() } spriteset(level_crossing_ELYD_open_snow_modern, "gfx/ELYD/LevelCrossingModern_ELYD_snow.png") { template_levcrossopen() } random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELYD_closed_snow ) { 3: level_crossing_ELYD_closed_snow; 1: level_crossing_ELYD_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELYD_closed_snow ) { 2: level_crossing_ELYD_closed_snow; 2: level_crossing_ELYD_closed_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELYD_closed_snow) { 1: level_crossing_ELYD_closed_snow; 3: level_crossing_ELYD_closed_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELYD_closed_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELYD_closed_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELYD_closed_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELYD_closed_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELYD_closed_snow; level_crossing_ELYD_closed_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELYD_open_snow ) { 3: level_crossing_ELYD_open_snow; 1: level_crossing_ELYD_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELYD_open_snow ) { 2: level_crossing_ELYD_open_snow; 2: level_crossing_ELYD_open_snow_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELYD_open_snow) { 1: level_crossing_ELYD_open_snow; 3: level_crossing_ELYD_open_snow_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELYD_open_snow_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELYD_open_snow ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELYD_open_snow; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELYD_open_snow; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELYD_open_snow; level_crossing_ELYD_open_snow_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELYD_closed ) { 3: level_crossing_ELYD_closed; 1: level_crossing_ELYD_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELYD_closed ) { 2: level_crossing_ELYD_closed; 2: level_crossing_ELYD_closed_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELYD_closed) { 1: level_crossing_ELYD_closed; 3: level_crossing_ELYD_closed_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELYD_closed_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELYD_closed ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELYD_closed; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELYD_closed; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELYD_closed; level_crossing_ELYD_closed_modern;} random_switch(FEAT_RAILTYPES, SELF, time1_level_crossing_ELYD_open ) { 3: level_crossing_ELYD_open; 1: level_crossing_ELYD_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time2_level_crossing_ELYD_open ) { 2: level_crossing_ELYD_open; 2: level_crossing_ELYD_open_modern;}random_switch(FEAT_RAILTYPES, SELF, time3_level_crossing_ELYD_open) { 1: level_crossing_ELYD_open; 3: level_crossing_ELYD_open_modern;}switch(FEAT_RAILTYPES, SELF, lc_ELYD_open_switch, current_year) { 0 .. param_modern_lc_year - 1 : level_crossing_ELYD_open ; param_modern_lc_year .. param_modern_lc_year + 5 - 1: time1_level_crossing_ELYD_open; param_modern_lc_year + 5 .. param_modern_lc_year + 2 * 5 - 1: time2_level_crossing_ELYD_open; param_modern_lc_year + 2 * 5 .. param_modern_lc_year + 3 * 5 - 1: time3_level_crossing_ELYD_open; level_crossing_ELYD_open_modern;} switch(FEAT_RAILTYPES, SELF, level_crossing_ELYD_state_switch_snow, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELYD_closed_snow_switch; lc_ELYD_open_snow_switch; } switch(FEAT_RAILTYPES, SELF, level_crossing_ELYD_state_switch, level_crossing_status) { LEVEL_CROSSING_CLOSED: lc_ELYD_closed_switch; lc_ELYD_open_switch; } switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELYD_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELYD_state_switch_snow; level_crossing_ELYD_state_switch; } /* switch(FEAT_RAILTYPES, SELF, LevelCrossing_ELYD_terrain_switch, terrain_type) { TILETYPE_SNOW: level_crossing_ELYD_state_switch_snow; level_crossing_ELYD_state_switch; } */ /* switch(FEAT_RAILTYPES, SELF, level_crossing_ELYD_switch, (param[4] == 1)) { 1: level_crossing_ELYD_empty; LevelCrossing_ELYD_terrain_switch; } */ /********************************************** //* ELYD Tracks on bridges **********************************************/ spriteset(bridge_tracks_ELYD, "gfx/ELYD/BridgeTrack_ELYD.png") { template_bridgetracks() } spriteset(bridge_tracks_ELYD_snow, "gfx/ELYD/BridgeTrack_ELYD_snow.png") { template_bridgetracks() } switch(FEAT_RAILTYPES, SELF, bridge_track_ELYD_switch, terrain_type) { TILETYPE_SNOW: bridge_tracks_ELYD_snow; bridge_tracks_ELYD; } /********************************************** * ELYD Fences: **********************************************/ spriteset(spriteset_fences_ELYD, "gfx/ELYD/Fences_ELYD.png") { template_fences() } switch(FEAT_RAILTYPES,SELF,switch_ELYD_fences,param_fences) { 0: spriteset_fences_ELYD; 1: spriteset_nofences; CB_FAILED; } /********************************************** //* ELYD Electric **********************************************/ //*Gui Electric spriteset(gui_ELYD, "gfx/ELYD/Gui_erail_ELYD.png") { tmpl_gui() } /********************************************** //* ELYD Depot **********************************************/ spriteset(depot_ELYD, "gfx/ELYD/Depot_ELYD.png") { template_depot() } spriteset(depot_ELYD_snow, "gfx/ELYD/Depot_ELYD_snow.png") { template_depot_snow() } switch (FEAT_RAILTYPES, SELF, get_ELYD_depots, terrain_type ) { TILETYPE_SNOW: depot_ELYD_snow; depot_ELYD; } /********************************************** //* ELYD Signals **********************************************/ /********************************************** //ELYD Semaphores **********************************************/ spriteset (spriteset_semaphore_block_green_ELYD, "gfx/ELYD/Semaphores_block_ELYD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_red_ELYD, "gfx/ELYD/Semaphores_block_ELYD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_combo_green_ELYD, "gfx/ELYD/Semaphores_block_combo_ELYD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_combo_red_ELYD, "gfx/ELYD/Semaphores_block_combo_ELYD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_entry_green_ELYD, "gfx/ELYD/Semaphores_block_entry_ELYD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_entry_red_ELYD, "gfx/ELYD/Semaphores_block_entry_ELYD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_block_exit_green_ELYD, "gfx/ELYD/Semaphores_block_exit_ELYD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_block_exit_red_ELYD, "gfx/ELYD/Semaphores_block_exit_ELYD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_oneway_green_ELYD, "gfx/ELYD/Semaphores_path_oneway_ELYD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_oneway_red_ELYD, "gfx/ELYD/Semaphores_path_oneway_ELYD.png") { template_semaphore_signals(40) } spriteset (spriteset_semaphore_path_twoway_green_ELYD, "gfx/ELYD/Semaphores_path_twoway_ELYD.png") { template_semaphore_signals(0) } spriteset (spriteset_semaphore_path_twoway_red_ELYD, "gfx/ELYD/Semaphores_path_twoway_ELYD.png") { template_semaphore_signals(40) } /********************************************** // ELYD Light Signals **********************************************/ spriteset (spriteset_signals_block_green_ELYD, "gfx/ELYD/Signals_block_ELYD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_red_ELYD, "gfx/ELYD/Signals_block_ELYD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_combo_green_ELYD, "gfx/ELYD/Signals_block_combo_ELYD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_combo_red_ELYD, "gfx/ELYD/Signals_block_combo_ELYD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_entry_green_ELYD, "gfx/ELYD/Signals_block_entry_ELYD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_entry_red_ELYD, "gfx/ELYD/Signals_block_entry_ELYD.png") { template_light_signals(40) } spriteset (spriteset_signals_block_exit_green_ELYD, "gfx/ELYD/Signals_block_exit_ELYD.png") { template_light_signals(0) } spriteset (spriteset_signals_block_exit_red_ELYD, "gfx/ELYD/Signals_block_exit_ELYD.png") { template_light_signals(40) } spriteset (spriteset_signals_path_oneway_green_ELYD, "gfx/ELYD/Signals_path_oneway_ELYD.png") { template_light_signals(0) } spriteset (spriteset_signals_path_oneway_red_ELYD, "gfx/ELYD/Signals_path_oneway_ELYD.png") { template_light_signals(40) } spriteset (spriteset_signals_path_twoway_green_ELYD, "gfx/ELYD/Signals_path_twoway_ELYD.png") { template_light_signals(0) } spriteset (spriteset_signals_path_twoway_red_ELYD, "gfx/ELYD/Signals_path_twoway_ELYD.png") { template_light_signals(40) } switch (FEAT_RAILTYPES, SELF, switch_signals_custom_type_ELYD, extra_callback_info2 & 0x00FFFFFF) { //light signals //TT VV SS (0 << 16) | (0 << 8) | 0 : spriteset_signals_block_red_ELYD; (0 << 16) | (0 << 8) | 1 : spriteset_signals_block_green_ELYD; (1 << 16) | (0 << 8) | 0 : spriteset_signals_block_entry_red_ELYD; (1 << 16) | (0 << 8) | 1 : spriteset_signals_block_entry_green_ELYD; (2 << 16) | (0 << 8) | 0 : spriteset_signals_block_exit_red_ELYD; (2 << 16) | (0 << 8) | 1 : spriteset_signals_block_exit_green_ELYD; (3 << 16) | (0 << 8) | 0 : spriteset_signals_block_combo_red_ELYD; (3 << 16) | (0 << 8) | 1 : spriteset_signals_block_combo_green_ELYD; (4 << 16) | (0 << 8) | 0 : spriteset_signals_path_twoway_red_ELYD; (4 << 16) | (0 << 8) | 1 : spriteset_signals_path_twoway_green_ELYD; (5 << 16) | (0 << 8) | 0 : spriteset_signals_path_oneway_red_ELYD; (5 << 16) | (0 << 8) | 1 : spriteset_signals_path_oneway_green_ELYD; //Semaphores //TT VV SS (0 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_red_ELYD; (0 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_green_ELYD; (1 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_entry_red_ELYD; (1 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_entry_green_ELYD; (2 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_exit_red_ELYD; (2 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_exit_green_ELYD; (3 << 16) | (1 << 8) | 0 : spriteset_semaphore_block_combo_red_ELYD; (3 << 16) | (1 << 8) | 1 : spriteset_semaphore_block_combo_green_ELYD; (4 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_twoway_red_ELYD; (4 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_twoway_green_ELYD; (5 << 16) | (1 << 8) | 0 : spriteset_semaphore_path_oneway_red_ELYD; (5 << 16) | (1 << 8) | 1 : spriteset_semaphore_path_oneway_green_ELYD; CB_FAILED; } switch (FEAT_RAILTYPES, SELF, switch_ELYD_signals_type, param_original_signals) { 0 : return switch_signals_custom_type_ELYD; return CB_FAILED; } /********************************************** //*Catenarypylons **********************************************/ spriteset(spriteset_catenarypylons_ELYD, "gfx/ELYD/CatenaryPylons_ELYD.png") { template_catenarydoublepylons() } switch (FEAT_RAILTYPES, SELF, switch_ELYD_catenarypylons_type, param_original_catenarypylons) { 0 : return spriteset_catenarypylons_ELYD; return CB_FAILED; } //*Catenarywires spriteset(spriteset_catenarywires_ELYD, "gfx/ELYD/CatenaryWires_ELYD.png") { template_catenarywires() } switch (FEAT_RAILTYPES, SELF, switch_ELYD_catenarywires_type, param_original_catenarywires) { 0 : return spriteset_catenarywires_ELYD; return CB_FAILED; } /********************************************** //* ELYD Railtype Properties **********************************************/ item(FEAT_RAILTYPES, ELYD) { property { label: "ELYD"; introduction_date: date(1900,1,1); name: string(STR_TRACK_TYPE_ELYD); toolbar_caption: string(STR_CONSTRUCTION_ELYD); menu_text: string(STR_CONSTRUCTION_ELYD); build_window_caption: string(STR_BUILD_CAPTION_ELYD); autoreplace_text: string(STR_AUTOREPLACE_ELYD); new_engine_text: string(STR_NEW_ENGINE_ELYD); powered_railtype_list: ["ELTX", "RLOW", "RMED", "RHIG", "SABN", "SACN", "SBAN", "SBBN", "SBCN", "SCBN", "SCCN", "SDBN", "ELRL", "ELOW", "EMED", "EHIG", "HSTR", "ELSA", "SABE", "SACE", "SBAE", "SBBE", "SBCE", "ELSC", "SCBE", "SCCE", "ELSD", "ELYD", "SDBE", "ELSE", "SEBE", "3RDR", "3LOW", "3MED", "SAA3", "SAB3", "SAC3", "SBA3", "SBB3", "SBC3", "SCA3", "SCB3", "SCC3", "3RDC", "CLOW", "CMED", "SAAZ", "SABZ", "SACZ", "SBAZ", "SBBZ", "SBCZ", "SCAZ", "SCBZ", "SCCZ", "VOLE"]; construction_cost: 4; maintenance_cost: 1; railtype_flags: bitmask(RAILTYPE_FLAG_CATENARY); speed_limit: 40 km/h; acceleration_model: ACC_MODEL_RAIL; map_colour: 65; } graphics { track_overlay: ground_switch_overlay_ELYD; underlay: ground_switch_underlay_ELYD; tunnels: tunnel_track_ELYD_switch; tunnel_overlay: tunnel_overlay_ELYD_switch; bridge_surfaces: bridge_track_ELYD_switch; level_crossings: LevelCrossing_ELYD_terrain_switch; fences: switch_ELYD_fences; gui: gui_ELYD; depots: get_ELYD_depots; signals: switch_ELYD_signals_type; catenary_wire: switch_ELYD_catenarywires_type; catenary_pylons: switch_ELYD_catenarypylons_type; } } /********************************************** //* END ELYD **********************************************/