mirror of https://github.com/OpenTTD/OpenTTD
(svn r12252) -Fix [FS#1801]: Broken FollowTrack_t related functions (thanks michi_cc).
-Fixed by removing FollowTrack_t structure and all related functions. Their purpose was to allow to call track followers from C code. They were: 1. never used 2. obsoleted by switching to C++release/0.6
parent
93b3a66678
commit
e41df385d7
|
@ -2175,10 +2175,6 @@
|
||||||
<Filter
|
<Filter
|
||||||
Name="YAPF"
|
Name="YAPF"
|
||||||
>
|
>
|
||||||
<File
|
|
||||||
RelativePath=".\..\src\yapf\follow_track.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\src\yapf\follow_track.hpp"
|
RelativePath=".\..\src\yapf\follow_track.hpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -2172,10 +2172,6 @@
|
||||||
<Filter
|
<Filter
|
||||||
Name="YAPF"
|
Name="YAPF"
|
||||||
>
|
>
|
||||||
<File
|
|
||||||
RelativePath=".\..\src\yapf\follow_track.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\src\yapf\follow_track.hpp"
|
RelativePath=".\..\src\yapf\follow_track.hpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -466,7 +466,6 @@ network/core/udp.cpp
|
||||||
network/core/udp.h
|
network/core/udp.h
|
||||||
|
|
||||||
# YAPF
|
# YAPF
|
||||||
yapf/follow_track.cpp
|
|
||||||
yapf/follow_track.hpp
|
yapf/follow_track.hpp
|
||||||
yapf/nodelist.hpp
|
yapf/nodelist.hpp
|
||||||
yapf/track_dir.hpp
|
yapf/track_dir.hpp
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
/* $Id$ */
|
|
||||||
|
|
||||||
#include "../stdafx.h"
|
|
||||||
#include "yapf.hpp"
|
|
||||||
#include "follow_track.hpp"
|
|
||||||
|
|
||||||
void FollowTrackInit(FollowTrack_t *This, const Vehicle* v)
|
|
||||||
{
|
|
||||||
CFollowTrackWater& F = *(CFollowTrackWater*) This;
|
|
||||||
F.Init(v, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FollowTrackWater(FollowTrack_t *This, TileIndex old_tile, Trackdir old_td)
|
|
||||||
{
|
|
||||||
CFollowTrackWater& F = *(CFollowTrackWater*) This;
|
|
||||||
return F.Follow(old_tile, old_td);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FollowTrackRoad(FollowTrack_t *This, TileIndex old_tile, Trackdir old_td)
|
|
||||||
{
|
|
||||||
CFollowTrackRoad& F = *(CFollowTrackRoad*) This;
|
|
||||||
return F.Follow(old_tile, old_td);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FollowTrackRail(FollowTrack_t *This, TileIndex old_tile, Trackdir old_td)
|
|
||||||
{
|
|
||||||
CFollowTrackRail& F = *(CFollowTrackRail*) This;
|
|
||||||
return F.Follow(old_tile, old_td);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FollowTrackWaterNo90(FollowTrack_t *This, TileIndex old_tile, Trackdir old_td)
|
|
||||||
{
|
|
||||||
CFollowTrackWaterNo90& F = *(CFollowTrackWaterNo90*) This;
|
|
||||||
return F.Follow(old_tile, old_td);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FollowTrackRoadNo90(FollowTrack_t *This, TileIndex old_tile, Trackdir old_td)
|
|
||||||
{
|
|
||||||
CFollowTrackRoadNo90& F = *(CFollowTrackRoadNo90*) This;
|
|
||||||
return F.Follow(old_tile, old_td);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FollowTrackRailNo90(FollowTrack_t *This, TileIndex old_tile, Trackdir old_td)
|
|
||||||
{
|
|
||||||
CFollowTrackRailNo90& F = *(CFollowTrackRailNo90*) This;
|
|
||||||
return F.Follow(old_tile, old_td);
|
|
||||||
}
|
|
|
@ -7,12 +7,32 @@
|
||||||
|
|
||||||
#include "yapf.hpp"
|
#include "yapf.hpp"
|
||||||
|
|
||||||
|
|
||||||
/** Track follower helper template class (can serve pathfinders and vehicle
|
/** Track follower helper template class (can serve pathfinders and vehicle
|
||||||
* controllers). See 6 different typedefs below for 3 different transport
|
* controllers). See 6 different typedefs below for 3 different transport
|
||||||
* types w/ of w/o 90-deg turns allowed */
|
* types w/ of w/o 90-deg turns allowed */
|
||||||
template <TransportType Ttr_type_, bool T90deg_turns_allowed_ = true>
|
template <TransportType Ttr_type_, bool T90deg_turns_allowed_ = true>
|
||||||
struct CFollowTrackT : public FollowTrack_t
|
struct CFollowTrackT
|
||||||
{
|
{
|
||||||
|
enum ErrorCode {
|
||||||
|
EC_NONE,
|
||||||
|
EC_OWNER,
|
||||||
|
EC_RAIL_TYPE,
|
||||||
|
EC_90DEG,
|
||||||
|
EC_NO_WAY,
|
||||||
|
};
|
||||||
|
|
||||||
|
const Vehicle* m_veh; ///< moving vehicle
|
||||||
|
TileIndex m_old_tile; ///< the origin (vehicle moved from) before move
|
||||||
|
Trackdir m_old_td; ///< the trackdir (the vehicle was on) before move
|
||||||
|
TileIndex m_new_tile; ///< the new tile (the vehicle has entered)
|
||||||
|
TrackdirBits m_new_td_bits; ///< the new set of available trackdirs
|
||||||
|
DiagDirection m_exitdir; ///< exit direction (leaving the old tile)
|
||||||
|
bool m_is_tunnel; ///< last turn passed tunnel
|
||||||
|
bool m_is_bridge; ///< last turn passed bridge ramp
|
||||||
|
bool m_is_station; ///< last turn passed station
|
||||||
|
int m_tiles_skipped; ///< number of skipped tunnel or station tiles
|
||||||
|
ErrorCode m_err;
|
||||||
CPerformanceTimer* m_pPerf;
|
CPerformanceTimer* m_pPerf;
|
||||||
|
|
||||||
FORCEINLINE CFollowTrackT(const Vehicle* v = NULL, CPerformanceTimer* pPerf = NULL)
|
FORCEINLINE CFollowTrackT(const Vehicle* v = NULL, CPerformanceTimer* pPerf = NULL)
|
||||||
|
|
|
@ -73,54 +73,6 @@ extern int _aystar_stats_open_size;
|
||||||
extern int _aystar_stats_closed_size;
|
extern int _aystar_stats_closed_size;
|
||||||
|
|
||||||
|
|
||||||
/** Track followers. They should help whenever any new code will need to walk through
|
|
||||||
* tracks, road or water tiles (pathfinders, signal controllers, vehicle controllers).
|
|
||||||
* It is an attempt to introduce API that should simplify tasks listed above.
|
|
||||||
* If you will need to use it:
|
|
||||||
* 1. allocate/declare FollowTrack_t structure;
|
|
||||||
* 2. call FollowTrackInit() and provide vehicle (if relevant)
|
|
||||||
* 3. call one of 6 FollowTrackXxxx() APIs below
|
|
||||||
* 4. check return value (if true then continue else stop)
|
|
||||||
* 5. look at FollowTrack_t structure for the result
|
|
||||||
* 6. optionally repeat steps 3..5
|
|
||||||
* 7. in case of troubles contact KUDr
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Base struct for track followers. */
|
|
||||||
struct FollowTrack_t
|
|
||||||
{
|
|
||||||
enum ErrorCode {
|
|
||||||
EC_NONE,
|
|
||||||
EC_OWNER,
|
|
||||||
EC_RAIL_TYPE,
|
|
||||||
EC_90DEG,
|
|
||||||
EC_NO_WAY,
|
|
||||||
};
|
|
||||||
|
|
||||||
const Vehicle* m_veh; ///< moving vehicle
|
|
||||||
TileIndex m_old_tile; ///< the origin (vehicle moved from) before move
|
|
||||||
Trackdir m_old_td; ///< the trackdir (the vehicle was on) before move
|
|
||||||
TileIndex m_new_tile; ///< the new tile (the vehicle has entered)
|
|
||||||
TrackdirBits m_new_td_bits; ///< the new set of available trackdirs
|
|
||||||
DiagDirection m_exitdir; ///< exit direction (leaving the old tile)
|
|
||||||
bool m_is_tunnel; ///< last turn passed tunnel
|
|
||||||
bool m_is_bridge; ///< last turn passed bridge ramp
|
|
||||||
bool m_is_station; ///< last turn passed station
|
|
||||||
int m_tiles_skipped; ///< number of skipped tunnel or station tiles
|
|
||||||
ErrorCode m_err;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Initializes FollowTrack_t structure */
|
|
||||||
void FollowTrackInit(FollowTrack_t *This, const Vehicle* v);
|
|
||||||
|
|
||||||
/** Main track follower routines */
|
|
||||||
bool FollowTrackWater (FollowTrack_t *This, TileIndex old_tile, Trackdir old_td);
|
|
||||||
bool FollowTrackRoad (FollowTrack_t *This, TileIndex old_tile, Trackdir old_td);
|
|
||||||
bool FollowTrackRail (FollowTrack_t *This, TileIndex old_tile, Trackdir old_td);
|
|
||||||
bool FollowTrackWaterNo90(FollowTrack_t *This, TileIndex old_tile, Trackdir old_td);
|
|
||||||
bool FollowTrackRoadNo90 (FollowTrack_t *This, TileIndex old_tile, Trackdir old_td);
|
|
||||||
bool FollowTrackRailNo90 (FollowTrack_t *This, TileIndex old_tile, Trackdir old_td);
|
|
||||||
|
|
||||||
/** Base tile length units */
|
/** Base tile length units */
|
||||||
enum {
|
enum {
|
||||||
YAPF_TILE_LENGTH = 100,
|
YAPF_TILE_LENGTH = 100,
|
||||||
|
|
Loading…
Reference in New Issue