Crate n18route[][src]

Expand description

Overview

This module solves the problem of finding the set of routes that can be run by a company to yield the highest possible revenue.

For example, the following function can find the best routes on a map for a specific company (identified here by their Token) that owns one or more trains, given (game-specific) rules about which elements may be reused by a single route (conflict_rule) and which elements may be shared by multiple routes (route_conflict_rule):

use n18route::{paths_for_token, Bonus, Criteria, ConflictRule, Trains, Routes};
use n18map::Map;
use n18token::Token;

fn find_best_routes(map: &Map, token: Token, trains: Trains,
                    bonuses: Vec<Bonus>) -> Routes {
    // Find all of the paths that the trains could operate.
    let criteria = Criteria {
        token,
        path_limit: trains.path_limit(),
        // NOTE: game-specific rule.
        conflict_rule: ConflictRule::TrackOrCityHex,
        // NOTE: game-specific rule.
        route_conflict_rule: ConflictRule::TrackOnly,
    };
    let paths = paths_for_token(&map, &criteria);

    // Return the best routes out of the available paths.
    trains
        .select_routes(paths, bonuses)
        .expect("Could not find an optimal set of routes")
}

See the route-finding documentation for details.

Modules

Route bonuses that can increase revenue.

Provide a convenient way to construct arbitrary paths.

Generate combinations of, e.g., paths for trains to operate.

Paths and routes may not share certain features.

Explains how we find the best set of routes.

Overview

Generate permutations of, e.g., trains to allocate to paths.

Search a map for paths from a starting location.

Train types and revenue earned for operating routes.

Structs

The search criteria for identifying valid paths.

A path that a train may travel along.

The search criteria for identifying valid paths that start from a specific location.

A route operated by a train.

Pairings of trains to routes.

A single step in a path.

The types of trains that can operate routes to earn revenue.

A train that operates a path to earn revenue.

The trains owned by a single company, which may operate routes.

A location on a path that, if the train stops here, may earn revenue.

Enums

The different types of route bonus that may be applied.

A specific element of a path or route that cannot be shared.

A rule defines which elements of a path or route may not be shared.

The different locations at which a train may stop and earn revenue.

The types of trains that can operate routes to earn revenue.

Functions

Returns all valid paths that match the provided criteria and which pass through any matching token on the map.