OpenTTD Source 20260311-master-g511d3794ce
yapf_ship_regions.cpp File Reference

Implementation of YAPF for water regions, which are used for finding intermediate ship destinations. More...

#include "../../stdafx.h"
#include "../../ship.h"
#include "yapf.hpp"
#include "yapf_ship_regions.h"
#include "../water_regions.h"
#include "../../safeguards.h"

Go to the source code of this file.

Data Structures

struct  WaterRegionPatchKey
 Yapf Node Key that represents a single patch of interconnected water within a water region. More...
struct  WaterRegionNode
 Yapf Node for water regions. More...
struct  WaterRegionFollower
struct  WaterRegionTypes
 Types struct required for YAPF internals. More...
class  YapfShipRegions
 Water region based YAPF implementation for ships. More...

Typedefs

using WaterRegionNodeList = NodeList<WaterRegionNode, NODE_LIST_HASH_BITS_OPEN, NODE_LIST_HASH_BITS_CLOSED>

Functions

uint ManhattanDistance (const WaterRegionPatchKey &a, const WaterRegionPatchKey &b)
std::vector< WaterRegionPatchDescYapfShipFindWaterRegionPath (const Ship *v, TileIndex start_tile, int max_returned_path_length)
 Finds a path at the water region level.

Variables

static constexpr int DIRECT_NEIGHBOUR_COST = 100
static constexpr int NODES_PER_REGION = 4
static constexpr int MAX_NUMBER_OF_NODES = 65536
static constexpr int NODE_LIST_HASH_BITS_OPEN = 12
static constexpr int NODE_LIST_HASH_BITS_CLOSED = 12

Detailed Description

Implementation of YAPF for water regions, which are used for finding intermediate ship destinations.

Definition in file yapf_ship_regions.cpp.

Typedef Documentation

◆ WaterRegionNodeList

using WaterRegionNodeList = NodeList<WaterRegionNode, NODE_LIST_HASH_BITS_OPEN, NODE_LIST_HASH_BITS_CLOSED>

Definition at line 76 of file yapf_ship_regions.cpp.

Function Documentation

◆ ManhattanDistance()

uint ManhattanDistance ( const WaterRegionPatchKey & a,
const WaterRegionPatchKey & b )
inline

Definition at line 39 of file yapf_ship_regions.cpp.

◆ YapfShipFindWaterRegionPath()

std::vector< WaterRegionPatchDesc > YapfShipFindWaterRegionPath ( const Ship * v,
TileIndex start_tile,
int max_returned_path_length )

Finds a path at the water region level.

Note that the starting region is always included if the path was found.

Parameters
vThe ship to find a path for.
start_tileThe tile to start searching from.
max_returned_path_lengthThe maximum length of the path that will be returned.
Returns
A path of water region patches, or an empty vector if no path was found.

Definition at line 228 of file yapf_ship_regions.cpp.

Variable Documentation

◆ DIRECT_NEIGHBOUR_COST

int DIRECT_NEIGHBOUR_COST = 100
staticconstexpr

Definition at line 19 of file yapf_ship_regions.cpp.

◆ MAX_NUMBER_OF_NODES

int MAX_NUMBER_OF_NODES = 65536
staticconstexpr

Definition at line 21 of file yapf_ship_regions.cpp.

◆ NODE_LIST_HASH_BITS_CLOSED

int NODE_LIST_HASH_BITS_CLOSED = 12
staticconstexpr

Definition at line 24 of file yapf_ship_regions.cpp.

◆ NODE_LIST_HASH_BITS_OPEN

int NODE_LIST_HASH_BITS_OPEN = 12
staticconstexpr

Definition at line 23 of file yapf_ship_regions.cpp.

◆ NODES_PER_REGION

int NODES_PER_REGION = 4
staticconstexpr

Definition at line 20 of file yapf_ship_regions.cpp.