Define the WormRailBuilder class which handles trains. More...
Public Member Functions | |
function | GetTilesAroundTown (town_id, width, height) |
Get a TileList around a town. | |
function | BuildSingleRailStation (is_source, platform_length, route_data, station_data, rail_manager) |
Build a single (one-lane) rail station at a town or an industry. | |
function | CanBuildSingleRailStation (tile, direction, platform_length, station_data) |
Check whether a single rail station can be built at the given position. | |
function | BuildDoubleRailStation (is_source, platform_length, route_data, station_data, rail_manager) |
Build a double (two-lane) rail station at a town or an industry. | |
function | CanBuildDoubleRailStation (tile, direction, platform_length, station_data) |
Determine whether a double rail station can be built at a given place. | |
function | BuildRail (head1, head2, railbridges) |
Build a rail line between two given points. | |
function | InternalBuildRail (head1, head2, railbridges, recursiondepth) |
Build a rail line between two given points. | |
function | RetryRail (prevprev, pp1, pp2, pp3, head1, railbridges, recursiondepth) |
Retry building a rail track after it was interrupted. | |
function | BuildPassingLaneSection (near_source, train_length, station_data, rail_manager) |
Build a passing lane section between the current source and destination. | |
function | CanBuildPassingLaneSection (centre, direction, reverse, train_length) |
Determine whether a passing lane section can be built at a given position. | |
function | BuildAndStartTrains (number, length, engine, wagon, ordervehicle, group, cargo, station_data, engineblacklist) |
Build and start trains for the current route. | |
function | MailWagonWorkaround (mailwagon, firstwagon, trainengine, crg) |
A workaround for refitting the mail wagon separately. | |
function | RemoveRailLine (start_tile, rail_manager) |
Remove a continuous segment of rail track starting from a single point. | |
function | AreRailTilesConnected (tilefrom, tileto) |
Determine whether two tiles are connected with rail directly. | |
function | DeleteRailStation (sta, rail_manager) |
Delete a rail station together with the rail line. | |
function | ElectrifyRail (start_tile, rail_manager) |
Upgrade a segment of normal rail to electrified rail from a given starting point. | |
function | GetRailStationPlatformLength (sta) |
Get the platform length of a station. | |
function | AttachMoreWagons (vehicle, rail_manager) |
Attach more wagons to a train after it has been sent to the depot. |
Static Public Member Functions | |
static function | ChooseWagon (cargo, blacklist) |
Choose a rail wagon for the given cargo. | |
static function | ChooseTrainEngine (cargo, distance, wagon, num_wagons, blacklist) |
Choose a train locomotive. | |
static function | TrainEngineValuator (engine, weight, max_speed, money) |
A valuator function for scoring train locomotives. |
Define the WormRailBuilder class which handles trains.
function WormRailBuilder::AreRailTilesConnected | ( | tilefrom | , |
tileto | |||
) |
Determine whether two tiles are connected with rail directly.
tilefrom | The first tile to check. |
tileto | The second tile to check. |
function WormRailBuilder::AttachMoreWagons | ( | vehicle | , |
rail_manager | |||
) |
Attach more wagons to a train after it has been sent to the depot.
vehicle | The VehicleID of the train. |
rail_manager | The WormRailManager class object. |
function WormRailBuilder::BuildAndStartTrains | ( | number | , |
length | , | ||
engine | , | ||
wagon | , | ||
ordervehicle | , | ||
group | , | ||
cargo | , | ||
station_data | , | ||
engineblacklist | |||
) |
Build and start trains for the current route.
number | The number of trains to be built. |
length | The number of wagons to be attached to the train. |
engine | The EngineID of the locomotive. |
wagon | The EngineID of the wagons. |
ordervehicle | The vehicle to share orders with. Null, if there is no such vehicle. |
group | The vehicle group this train should be part of. |
cargo | The cargo to transport. |
station_data | A WormStation class object with info about the stations between which rail is being built. |
engineblacklist | The blacklist of engines to which bad engines will be added. |
function WormRailBuilder::BuildDoubleRailStation | ( | is_source | , |
platform_length | , | ||
route_data | , | ||
station_data | , | ||
rail_manager | |||
) |
Build a double (two-lane) rail station at a town or an industry.
Builder class variables used: crg, src, dst, srcplace, dstplace, srcistown, dstistown, statile, deptile, stafront, depfront, frontfront, front1, front2, lane2, morefront Builder class variables set: stasrc, stadst, homedepot
is_source | True if we are building the source station. |
platform_length | The length of the proposed station's platform. |
route_data | A WormRoute class object containing info about the route. |
station_data | A WormStation class object containing info about the station. |
rail_manager | The WormRailManager class object. |
function WormRailBuilder::BuildPassingLaneSection | ( | near_source | , |
train_length | , | ||
station_data | , | ||
rail_manager | |||
) |
Build a passing lane section between the current source and destination.
Builder class variables used: stasrc, stadst
near_source | True if we're building the first passing lane section. (the one closer to the source station) |
train_length | The maximum train length in tiles that should fit (should be at least 3). |
station_data | A WormStation class object with info about the stations between which rail is being built. |
rail_manager | The WormRailManager class object. |
function WormRailBuilder::BuildRail | ( | head1 | , |
head2 | , | ||
railbridges | |||
) |
Build a rail line between two given points.
head1 | The starting points of the rail line. |
head2 | The ending points of the rail line. |
railbridges | The list of railbridges. If we need to build a bridge it will be added to this list. |
function WormRailBuilder::BuildSingleRailStation | ( | is_source | , |
platform_length | , | ||
route_data | , | ||
station_data | , | ||
rail_manager | |||
) |
Build a single (one-lane) rail station at a town or an industry.
Builder class variables used: crg, src, dst, srcplace, dstplace, srcistown, dstistown, statile, stafront, depfront, frontfront, statop, stationdir Builder class variables set: stasrc, stadst, homedepot
is_source | True if we are building the source station. |
platform_length | The length of the new station's platform. |
route_data | A WormRoute class object containing info about the route. |
station_data | A WormStation class object containing info about the station. |
rail_manager | The WormRailManager class object. |
function WormRailBuilder::CanBuildDoubleRailStation | ( | tile | , |
direction | , | ||
platform_length | , | ||
station_data | |||
) |
Determine whether a double rail station can be built at a given place.
Builder class variables set: statile, deptile, stafront, depfront, front1, front2, lane2, frontfront, morefront, statop, stabottom
tile | The tile to be checked. |
direction | The direction of the proposed station. |
platform_length | The length of the proposed station's platform. |
station_data | WormStation class object where the build info will be store (should be non null when called). |
function WormRailBuilder::CanBuildPassingLaneSection | ( | centre | , |
direction | , | ||
reverse | , | ||
train_length | |||
) |
Determine whether a passing lane section can be built at a given position.
centre | The centre tile of the proposed passing lane section. |
direction | The direction of the proposed passing lane section. |
reverse | True if we are trying to build a flipped passing lane section. |
train_length | The maximum train length in tiles that should fit (should be at least 3). |
function WormRailBuilder::CanBuildSingleRailStation | ( | tile | , |
direction | , | ||
platform_length | , | ||
station_data | |||
) |
Check whether a single rail station can be built at the given position.
Builder class variables set: statop, stabotton, statile, stafront, depfront, frontfront
tile | The tile to be checked. |
direction | The direction of the proposed station. |
platform_length | The length of the proposed station's platform. |
station_data | WormStation class object where the build info will be store (should be non null when called). |
|
static |
Choose a train locomotive.
cargo | The cargo to carry. |
distance | The distance to be traveled. |
wagon | The EngineID of the wagons to be pulled. |
num_wagons | The number of wagons to be pulled. |
blacklist | A list of engines that cannot be used. |
|
static |
Choose a rail wagon for the given cargo.
cargo | The cargo which will be transported by te wagon. |
function WormRailBuilder::DeleteRailStation | ( | sta | , |
rail_manager | |||
) |
Delete a rail station together with the rail line.
Builder class variables used and set:
sta | The StationID of the station to be deleted. |
rail_manager | The WormRailManager class object. |
function WormRailBuilder::ElectrifyRail | ( | start_tile | , |
rail_manager | |||
) |
Upgrade a segment of normal rail to electrified rail from a given starting point.
Tiles which are reachable by a train from a given starting point are electrified, including stations and depots. This function is not static.
start_tile | The starting point from which rails are electrified. |
rail_manager | The WormRailManager class object. |
function WormRailBuilder::GetRailStationPlatformLength | ( | sta | ) |
Get the platform length of a station.
sta | The StationID of the station. |
function WormRailBuilder::GetTilesAroundTown | ( | town_id | , |
width | , | ||
height | |||
) |
Get a TileList around a town.
town_id | The TownID of the given town. |
width | The width of the proposed station. |
height | The height of the proposed station. |
function WormRailBuilder::InternalBuildRail | ( | head1 | , |
head2 | , | ||
railbridges | , | ||
recursiondepth | |||
) |
Build a rail line between two given points.
head1 | The starting points of the rail line. |
head2 | The ending points of the rail line. |
railbridges | The list of railbridges. If we need to build a bridge it will be added to this list. |
recursiondepth | The recursion depth used to catch infinite recursions. |
function WormRailBuilder::MailWagonWorkaround | ( | mailwagon | , |
firstwagon | , | ||
trainengine | , | ||
crg | |||
) |
A workaround for refitting the mail wagon separately.
mailwagon | The mail wagon to be refitted. |
firstwagon | The wagon to which the mail wagon is attached. |
trainengine | The locomotive of the train, used to move the wagons. |
crg | The cargo which the mail wagon will be refitted to. |
function WormRailBuilder::RemoveRailLine | ( | start_tile | , |
rail_manager | |||
) |
Remove a continuous segment of rail track starting from a single point.
This includes depots and stations, in all directions and braches. Basically the function deletes all rail tiles which are reachable by a train from the starting point. This function is not static.
start_tile | The starting point of the rail. |
rail_manager | The WormRailManager class object. |
function WormRailBuilder::RetryRail | ( | prevprev | , |
pp1 | , | ||
pp2 | , | ||
pp3 | , | ||
head1 | , | ||
railbridges | , | ||
recursiondepth | |||
) |
Retry building a rail track after it was interrupted.
The last three pieces of track are removed, and then pathfinding is restarted from the other end.
prevprev | The last successfully built piece of track. |
pp1 | The piece of track before prevprev. |
pp2 | The piece of track before pp1. |
pp3 | The piece of track before pp2. It is not removed. |
head1 | The other end to be connected. |
railbridges | The list of railbridges. If we need to build a bridge it will be added to this list. |
recursiondepth | The recursion depth used to catch infinite recursions. |
|
static |
A valuator function for scoring train locomotives.
engine | The engine to be scored. |
weight | The weight to be pulled. |
max_speed | The maximum speed allowed. |
money | The amount of money the company has. |