(svn r16962) -Codechange: more work towards multi tile waypoints
This commit is contained in:
		@@ -35,6 +35,30 @@ struct TileArea {
 | 
			
		||||
	uint8 h;        ///< The height of the area
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** StationRect - used to track station spread out rectangle - cheaper than scanning whole map */
 | 
			
		||||
struct StationRect : public Rect {
 | 
			
		||||
	enum StationRectMode
 | 
			
		||||
	{
 | 
			
		||||
		ADD_TEST = 0,
 | 
			
		||||
		ADD_TRY,
 | 
			
		||||
		ADD_FORCE
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	StationRect();
 | 
			
		||||
	void MakeEmpty();
 | 
			
		||||
	bool PtInExtendedRect(int x, int y, int distance = 0) const;
 | 
			
		||||
	bool IsEmpty() const;
 | 
			
		||||
	bool BeforeAddTile(TileIndex tile, StationRectMode mode);
 | 
			
		||||
	bool BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode);
 | 
			
		||||
	bool AfterRemoveTile(BaseStation *st, TileIndex tile);
 | 
			
		||||
	bool AfterRemoveRect(BaseStation *st, TileIndex tile, int w, int h);
 | 
			
		||||
 | 
			
		||||
	static bool ScanForStationTiles(StationID st_id, int left_a, int top_a, int right_a, int bottom_a);
 | 
			
		||||
 | 
			
		||||
	StationRect& operator = (Rect src);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/** Base class for all station-ish types */
 | 
			
		||||
struct BaseStation : StationPool::PoolItem<&_station_pool> {
 | 
			
		||||
	TileIndex xy;                   ///< Base tile of the station
 | 
			
		||||
@@ -57,7 +81,18 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> {
 | 
			
		||||
	byte waiting_triggers;          ///< Waiting triggers (NewGRF) for this station
 | 
			
		||||
	uint8 cached_anim_triggers;     ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
 | 
			
		||||
 | 
			
		||||
	BaseStation(TileIndex tile) : xy(tile) { }
 | 
			
		||||
	TileArea train_station;         ///< Tile area the train 'station' part covers
 | 
			
		||||
	StationRect rect;               ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initialize the base station.
 | 
			
		||||
	 * @param tile The location of the station sign
 | 
			
		||||
	 */
 | 
			
		||||
	BaseStation(TileIndex tile) :
 | 
			
		||||
		xy(tile),
 | 
			
		||||
		train_station(INVALID_TILE, 0, 0)
 | 
			
		||||
	{
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	virtual ~BaseStation();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user