/** returns the track to choose on the next tile, or -1 when it's better to * reverse. The tile given is the tile we are about to enter, enterdir is the * direction in which we are entering the tile */ static Track ChooseShipTrack(const Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks) { assert(IsValidDiagDirection(enterdir)); switch (_settings_game.pf.pathfinder_for_ships) { case VPF_OPF: return OPFShipChooseTrack(v, tile, enterdir, tracks); case VPF_NPF: return NPFShipChooseTrack(v, tile, enterdir, tracks); case VPF_YAPF: return YapfShipChooseTrack(v, tile, enterdir, tracks); default: NOT_REACHED(); } }
/** * Runs the pathfinder to choose a track to continue along. * * @param v Ship to navigate * @param tile Tile, the ship is about to enter * @param enterdir Direction of entering * @param tracks Available track choices on \a tile * @return Track to choose, or INVALID_TRACK when to reverse. */ static Track ChooseShipTrack(Ship *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks) { assert(IsValidDiagDirection(enterdir)); bool path_found = true; Track track; switch (_settings_game.pf.pathfinder_for_ships) { case VPF_OPF: track = OPFShipChooseTrack(v, tile, enterdir, tracks, path_found); break; case VPF_NPF: track = NPFShipChooseTrack(v, tile, enterdir, tracks, path_found); break; case VPF_YAPF: track = YapfShipChooseTrack(v, tile, enterdir, tracks, path_found); break; default: NOT_REACHED(); } v->HandlePathfindingResult(path_found); return track; }