- NotRoadType Spec
- Essential
- • ‘road' and ‘tram' are independent, like ‘road’ and ‘rail’
- • they can coexist on the same tile in some cases, but do not influence each other
- • the term ‘roadtypes’ is confusing for historical reasons and due to pre-existing use in code, and is not used here: this is NotRoadTypes
- • ‘tram’ and ‘road’ are built as subtypes
- • per tile, one subtype of ‘road’ and one subtype of ’tram’ may be present
- • construction tools for ‘road’ and ’tram' are independent
- • adding/removing/converting ‘road’ on a tile does not affect ‘tram’ for tile and vice-versa
- • vehicles are either ‘road’ or ‘tram’, they cannot be both
- • vehicle routing and movement per ‘road’ and ‘tram’ are independent
- • any ‘road’ subtype may be freely combined with any ’tram’ subtype, there are no ways to make ‘road’ and ’tram’ incompatible with each other by subtype or any other means
- • subtypes
- ◦ proposed up to 15 ‘road' subtypes and 15 ‘tram’ subtypes (implementation detail: uses 4 bits each, uses 8 bits free in m8)
- ◦ 15 is more than enough for any game
- ◦ spec shouldn’t have an opinion on how many type a game needs, but 3 or 4 of each is plenty imho
- ◦ each subtype has a label
- ◦ vehicle compatibility with a subtype is determined by label
- ◦ vehicle may determine some properties by subtype (power, possibly others)
- • drawing
- ◦ ‘tram’ is always drawn above ‘road’; authors need to be aware of this when drawing sprites, no mechanism will be provided to vary this
- ◦ drawing of city roads, bridges, tunnels, and similar will follow existing behaviour
- ◦ drawing of rail crossings may or may not be fixed (road tile is enforced for tram crossings currently, this looked non-trivial to fix when I tried)
- ◦ methods _may_ be provided to enable more control over appearance, e.g. snow above snowline etc
- • catenary
- ◦ subtypes can provide catenary, or not (implementation detail: flag or cb returning sprites)
- ◦ both ‘road’ and ‘tram’ can provide catenary on a tile
- ◦ authors will need to draw catenary carefully to avoid it looking bad when ‘road’ and ‘tram’ catenary are combined on a tile
- ◦ vehicle power on a tile is determined by vehicle against subtype label, unrelated to drawing of catenary sprites
- ◦ there is sophisticated handling of rail catenary to preserve continuity where railtypes cross, something similar needs to be provided for NotRoadTypes
- • converting between subtypes
- ◦ a convert tool is needed, similar to rail conversion
- ◦ this will need to consider ownership carefully
- ▪ too restrictive = can’t overbuild subtypes in towns
- ▪ too permissive = deliberate or accidental breaking of existing routes by overbuilding incompatible subtype
- • drive-in stops:
- ◦ behaviour of articulated vehicles and trams unchanged, can’t use drive-in stops
- ◦ catenary needs to be provided for ‘road' drive-in stops
- • overtaking: out of scope
- Optional (proposed by frosch)
- • split global toolbar to ‘road’ and ‘light rail’
- • this makes the distinction between the transport types obvious
- • in this way it’s clear that a tile can have
- ◦ 1 type of rail
- ◦ 1 type of road
- ◦ 1 type of light rail
- • unknown: would the various vehicle menus, station menus etc also be split for ‘road’ and ‘light rail’?